Bagikan melalui


Menjalankan Kueri SQL (Kelas Terkelola SQLXML)

Berlaku untuk: SQL ServerAzure SQL Database

Contoh ini menunjukkan:

  • Membuat parameter (objek SqlXmlParameter).

  • Menetapkan nilai ke properti (Nama dan Nilai) objek SqlXmlParameter.

Dalam contoh ini, kueri SQL sederhana dijalankan untuk mengambil nama depan, nama belakang, dan tanggal lahir karyawan yang nilai nama belakangnya diteruskan sebagai parameter. Dalam menentukan parameter (LastName), hanya properti Nilai yang diatur. Properti Nama tidak diatur, karena dalam kueri ini parameter berposisi posisi dan tidak ada nama yang diperlukan.

Properti CommandType dari objek SqlXmlCommand secara default adalah Sql. Oleh karena itu, properti tidak diatur secara eksplisit.

Catatan

Dalam kode, Anda harus memberikan nama instans Microsoft SQL Server di string koneksi.

Ini adalah kode C#:

using System;  
  
using Microsoft.Data.SqlXml;  
using System.IO;  
class Test  
{  
      static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";  
      public static int testParams()  
      {  
         Stream strm;  
         SqlXmlParameter p;  
         SqlXmlCommand cmd = new SqlXmlCommand(ConnString);        
         cmd.CommandText = "SELECT FirstName, LastName FROM Person.Contact WHERE LastName=? For XML Auto";  
         p = cmd.CreateParameter();  
         p.Value = "Achong";  
         string strResult;  
         try   
         {  
            strm = cmd.ExecuteStream();  
            strm.Position = 0;  
            using(StreamReader sr = new StreamReader(strm))  
            {  
               Console.WriteLine(sr.ReadToEnd());  
            }  
         }  
         catch (SqlXmlException e)  
         {  
            //in case of an error, this prints error returned.  
            e.ErrorStream.Position=0;  
            strResult=new StreamReader(e.ErrorStream).ReadToEnd();  
            System.Console.WriteLine(strResult);  
         }  
  
         return 0;  
   }  
public static int Main(String[] args)  
{  
    testParams();  
    return 0;  
}  
}  

Untuk menguji aplikasi

  1. Simpan kode C# (DocSample.cs) yang disediakan dalam topik ini dalam folder.

  2. Kompilasi kode. Untuk mengkompilasi kode di prompt perintah, gunakan:

    csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs  
    

    Ini membuat executable (DocSample.exe).

  3. Pada prompt perintah, jalankan DocSample.exe.

Untuk menguji contoh ini, Anda harus menginstal Microsoft .NET Framework di komputer Anda.

Alih-alih menentukan kueri SQL sebagai teks perintah, Anda dapat menentukan templat (seperti yang ditunjukkan dalam fragmen kode berikut) yang menjalankan updategram (yang juga merupakan templat) untuk menyisipkan catatan pelanggan. Anda dapat menentukan templat dan updategram dalam file dan menjalankan file. Untuk informasi selengkapnya, lihat Menjalankan File Templat dengan Menggunakan Properti CommandText.

SqlXmlCommand cmd = new SqlXmlCommand("Provider=SQLOLEDB;Data Source=SqlServerName;Initial Catalog=Database; Integrated Security=SSPI;");  
Stream stm;  
cmd.CommandType = SqlXmlCommandType.UpdateGram;  
cmd.CommandText = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql' xmlns:updg='urn:schemas-microsoft-com:xml-updategram'>" +  
      "<updg:sync>" +  
       "<updg:before/>" +  
       "<updg:after>" +  
         "<Customer CustomerID='aaaaa' CustomerName='Some Name' CustomerTitle='SomeTitle' />" +  
       "</updg:after>" +  
       "</updg:sync>" +  
       "</ROOT>";  
  
stm = cmd.ExecuteStream();  
stm = null;  
cmd = null;  

Menggunakan ExecuteToStream

Jika Anda memiliki aliran yang ada, Anda dapat menggunakan metode ExecuteToStream alih-alih membuat objek Stream dan menggunakan metode Execute. Kode dari contoh sebelumnya direvisi di sini untuk menggunakan metode ExecuteToStream:

using System;  
using Microsoft.Data.SqlXml;  
using System.IO;  
class Test  
{  
   static string ConnString = "Provider=SQLOLEDB;Server=SqlServerName;database=AdventureWorks;Integrated Security=SSPI;";  
   public static int testParams()  
   {  
      SqlXmlParameter p;  
      MemoryStream ms = new MemoryStream();  
      StreamReader sr = new StreamReader(ms);  
      ms.Position = 0;  
      SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
      cmd.CommandText = "select FirstName, LastName from Person.Contact where LastName = ? For XML Auto";  
      p = cmd.CreateParameter();  
      p.Value = "Achong";  
      cmd.ExecuteToStream(ms);  
      ms.Position = 0;  
      Console.WriteLine(sr.ReadToEnd());  
      return 0;        
   }  
   public static int Main(String[] args)  
   {  
      testParams();     
      return 0;  
   }  
}  

Catatan

Anda juga dapat menggunakan ExecuteXMLReadermethod yang mengembalikan objek XmlReader. Untuk informasi selengkapnya, lihat Menjalankan Kueri SQL dengan Menggunakan Metode ExecuteXMLReader.