共用方式為


使用 WCF 通道模型在 SQL 中的資料表上執行插入作業

SQL 配接器會探索SQL Server資料庫資料表和檢視表的基本插入、選取、更新和刪除作業集。 您可以使用這些作業,在目標資料表或檢視表上執行由 Where 子句限定的簡單 SQL Insert、Select、Update 和 Delete 語句。 本主題提供如何使用 WCF 通道模型在SQL Server資料庫資料表上執行插入作業的指示。

如需配接器如何支援這些作業的詳細資訊,請參閱使用 SQL 配接器 在資料表和檢視表上插入、更新、刪除和選取作業。 如需如何使用 WCF 通道模型在SQL Server上執行作業的詳細資訊,請參閱使用 SQL 配接器執行 WCF 通道模型的概觀

關於本主題中使用的範例

本主題中的範例會在 Employee 資料表上執行作業。 Employee 資料表是藉由執行範例所提供的 SQL 腳本來建立。 如需範例的詳細資訊,請參閱 SQL 配接器的範例。 根據本主題的 EmployeeInsertOp範例也會隨附 SQL 配接器範例。

插入訊息

若要使用 WCF 通道模型對SQL Server資料庫執行作業,您必須具有作業特定的要求訊息。 在 SQL Server 資料庫中的 Employee 資料表上執行 Insert 作業的要求訊息如下所示:

<Insert xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">  
  <Rows>  
    <Employee xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">  
      <Name>Tom Smith</Name>  
      <Designation>Manager</Designation>  
      <Salary>500000</Salary>  
   </Employee>  
  </Rows>  
</Insert>  

此要求訊息會插入具有下列詳細資料的記錄:

Name = Tom Smith  
Designation = Manager  
Salary = 500000  

您必須將訊息複製到檔案,例如 InsertRequest.xml。 此檔案用於此範例,以使用 SQL 配接器將要求訊息傳送至SQL Server。 如需資料表作業之訊息架構的詳細資訊,請參閱 資料表和檢視表上的插入、更新、刪除和選取作業的訊息架構

建立 WCF 通道應用程式

本節提供如何建立 WCF 通道應用程式以在 Employee 資料表上執行插入作業的指示。

若要建立 WCF 通道應用程式,以將記錄插入 Employee 資料表

  1. 在 Visual Studio 中建立 Visual C# 專案。 針對本主題,建立主控台應用程式。

  2. 在方案總管中,新增 、 Microsoft.ServiceModel.ChannelsSystem.ServiceModel 和 的 System.Runtime.Serialization 參考 Microsoft.Adapters.Sql

  3. 開啟 Program.cs 檔案,並新增下列命名空間:

    • Microsoft.Adapters.Sql

    • Microsoft.ServiceModel.Channels

    • System.ServiceModel

    • System.ServiceModel.Channels

    • System.Xml

  4. 建立系結和端點。

    SqlAdapterBinding binding = new SqlAdapterBinding();  
    EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");  
    
    
  5. 建立並開啟通道處理站。 此應用程式會將要求訊息傳送至SQL Server並接收回應,因此您必須實作 IRequestChannel 介面。

    ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, address);  
    factory.Credentials.UserName.UserName = "<Enter user name here>";  
    factory.Credentials.UserName.Password = "<Enter password here>";  
    factory.Open();  
    
  6. 建立並開啟通道。

    IRequestChannel channel = factory.CreateChannel();  
    channel.Open();  
    
  7. 建立並傳送要求訊息。

    XmlReader readerIn;  
    Console.WriteLine("Creating the message");  
    try  
    {  
       readerIn = XmlReader.Create("InsertRequest.xml");  
       Console.WriteLine("Reader created");  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    Message messageIn = Message.CreateMessage(MessageVersion.Default, "TableOp/Insert/dbo/Employee", readerIn);  
    Message messageOut = channel.Request(messageIn);  
    
    

    建立要求訊息時,您必須指定訊息動作,指出配接器在SQL Server資料表上執行的動作。 若要在 Employee 資料表上執行插入作業,訊息動作為 TableOp/Insert/dbo/Employee 。 如需如何判斷資料表上各種作業之訊息動作的資訊,請參閱 資料表和檢視表上的插入、更新、刪除和選取作業的訊息架構

  8. 取得回應訊息。

    XmlReader readerOut = messageOut.GetReaderAtBodyContents();  
    XmlDocument doc = new XmlDocument();  
    doc.Load(readerOut);  
    doc.Save("C:\\Response.xml");  
    
  9. 關閉訊息、通道和通道處理站。

    messageOut.Close();  
    channel.Close();  
    factory.Close();  
    
  10. 建置專案。 建置專案之後,您必須執行下列工作:

    • 複製要求訊息,InsertRequest.xml 與您的專案可執行檔位於相同的位置。 一般而言,此位置是專案目錄下的 \bin\Debug\。

    • 此範例中使用的 「Employee」 資料表具有 Point 使用者定義類型的資料行, (UDT) 。 因此,在執行專案之前,您必須建立 Point UDT 的元件,如 建立 User-Defined 類型中所述。 您也必須在與專案可執行檔相同的位置複製元件 DLL。 一般而言,此位置是專案目錄下的 \bin\Debug\。

  11. 執行應用程式。 回應訊息 Response.xml 會儲存在您于應用程式中指定的位置。 回應訊息包含新新增員工的識別碼,如下所示:

    <InsertResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">  
      <InsertResult>  
        <long xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">10006</long>  
      </InsertResult>  
    </InsertResponse>  
    

    因為 Employee 資料表具有Employee_ID資料行做為識別欄位,所以 Insert 作業會傳回新插入記錄之識別欄位的值。 如果資料表中沒有識別欄位,則傳回值為 Null。

另請參閱

使用 WCF 通道模型開發 SQL 應用程式