Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Bagaimana memanggil Parameterized Stored Procedure dengan menggunakan ADO.NET dan Visual Basic .NET

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 308049
Untuk versi Microsoft Visual C++ .NET ini Pasal, lihat 310071.
Untuk Microsoft Visual C# .NET versi dari artikel ini, lihat 310070.
Untuk Microsoft Visual J# .NET versi dari artikel ini, lihat 320627.
Untuk versi Microsoft Visual Basic 6.0 ini Pasal, lihat 194792.

Artikel ini merujuk kepada berikut Microsoft .NET Framework kelas Perpustakaan namespaces:
  • System.Data
  • System.Data.SqlClient
  • System.Data.OleDb

DALAM TUGAS INI

Ringkasan
Ada beberapa cara untuk menggunakan ADO.NET untuk memanggil disimpan prosedur dan untuk mendapatkan kembali kembali nilai-nilai dan kembali parameter, termasuk:
  • Menggunakan DataSet objek untuk mengumpulkan baris kembali dan bekerja dengan baris ini di Selain kembali nilai-nilai dan parameter kembali.
  • Menggunakan objek hexadecimal untuk mengumpulkan kembali baris, yang bergerak melalui baris ini, dan untuk mengumpulkan kembali nilai-nilai dan kembali parameter.
  • Menggunakan metode ExecuteScalar untuk kembali nilai dari kolom pertama hasil ' baris pertama dengan nilai-nilai kembali dan parameter kembali. Hal ini paling berguna dengan fungsi agregat.
  • Menggunakan metode ExecuteNonQuery untuk kembali hanya parameter kembali dan kembali nilai-nilai. Setiap baris kembali dibuang. Hal ini paling berguna untuk mengeksekusi tindakan queries.
Artikel ini menunjukkan terakhir tiga metode dan menggunakan kedua SqlCommand dan OleDbCommand objek. Pastikan bahwa Anda menyalin kode untuk dikelola penyedia yang Anda gunakan. Jika Anda tidak yakin yang dikelola penyedia Anda harus menggunakan, kunjungi situs web Pusat Pengembang SharePoint berikut: Dalam setiap contoh dalam artikel ini, parameter ditambahkan parameter koleksi objek perintah . Bila Anda menggunakan objek SqlCommand , Anda tidak telah menambahkan parameter khususnya apapun order, tetapi parameter harus memiliki nama yang benar. Bila Anda menggunakan objek OleDbCommand , Anda harus menambahkan parameter dalam urutan menurun yang benar, dan Anda tidak dapat menggunakan parameter dengan nama.

Menggunakan hexadecimal untuk gulung balik baris dan parameter

Anda dapat menggunakan objek hexadecimal untuk kembali read-only, forward-only stream data. The informasi yang berisi hexadecimal dapat berasal dari prosedur tersimpan. Contoh ini menggunakan objek hexadecimal untuk menjalankan disimpan prosedur yang memiliki input dan output parameter dan kemudian bergerak melalui rekaman kembali untuk melihat kembali parameter.
  1. Membuat berikut prosedur tersimpan di server yang menjalankan Microsoft SQL Server:
    Create Procedure TestProcedure  (     @au_idIN varchar (11),     @numTitlesOUT Integer OUTPUT  )Asselect A.au_fname, A.au_lname, T.title from authors as A join titleauthor as TA onA.au_id=TA.au_idjoin titles as Ton T.title_id=TA.title_idwhere A.au_id=@au_idINset @numTitlesOUT = @@Rowcountreturn (5) 					
  2. Menggunakan pernyataan impor pada sistem dan System.Data namespaces sehingga Anda tidak harus memenuhi syarat Deklarasi namespaces tersebut kemudian dalam kode Anda. Anda harus menggunakan pernyataan impor sebelum setiap Deklarasi lain. Pastikan untuk menyalin hanya kode untuk penyedia yang telah Anda pilih.SQL klien
    Imports System.Data.SqlClient					
    OLE DB penyedia Data
    Imports System.Data.OleDb					
  3. Tambahkan kode berikut untuk acara Form_Load :SQL klien
    Dim PubsConn As SqlConnection = New SqlConnection & _    ("Data Source=server;integrated security=sspi;" & _    "initial Catalog=pubs;")Dim testCMD As SqlCommand = New SqlCommand & _    ("TestProcedure", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetValue As SqlParameter = testCMD.Parameters.Add & _    ("RetValue", SqlDbType.Int)RetValue.Direction = ParameterDirection.ReturnValueDim auIDIN As SqlParameter = testCMD.Parameters.Add & _    ("@au_idIN", SqlDbType.VarChar, 11)auIDIN.Direction = ParameterDirection.InputDim NumTitles As SqlParameter = testCMD.Parameters.Add & _    ("@numtitlesout", SqlDbType.Int)NumTitles.Direction = ParameterDirection.OutputauIDIN.Value = "213-46-8915"PubsConn.Open()Dim myReader As SqlDataReader = testCMD.ExecuteReader()Console.WriteLine("Book Titles for this Author:")Do While myReader.Read    Console.WriteLine("{0}", myReader.GetString(2))LoopmyReader.Close()        Console.WriteLine("Return Value: " & (RetValue.Value))Console.WriteLine("Number of Records: " & (NumTitles.Value))					
    OLE DB penyedia Data
    Dim PubsConn As OleDbConnection = New OleDbConnection & _    ("Provider=sqloledb;Data Source=server;" & _    "integrated security=sspi;initial Catalog=pubs;")Dim testCMD As OleDbCommand = New OleDbCommand & _    ("TestProcedure", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetValue As OleDbParameter = testCMD.Parameters.Add & _    ("RetValue", OleDbType.Integer)RetValue.Direction = ParameterDirection.ReturnValueDim auIDIN As OleDbParameter = testCMD.Parameters.Add & _    ("@au_idIN", OleDbType.VarChar, 11)auIDIN.Direction = ParameterDirection.InputDim NumTitles As OleDbParameter = testCMD.Parameters.Add & _    ("@numtitlesout", OleDbType.Integer)NumTitles.Direction = ParameterDirection.OutputauIDIN.Value = "213-46-8915"PubsConn.Open()Dim myReader As OleDbDataReader = testCMD.ExecuteReader()Console.WriteLine("Book Titles for this Author:")Do While myReader.Read    Console.WriteLine("{0}", myReader.GetString(2))LoopmyReader.Close()Console.WriteLine("Return Value: " & (RetValue.Value))Console.WriteLine("Number of Records: " & (NumTitles.Value))					
  4. Memodifikasi koneksi string untuk koneksi objek untuk menunjuk ke server yang menjalankan SQL Server.
  5. Menjalankan kode. Perhatikan bahwa hexadecimal mengambil catatan dan kemudian kembali nilai-nilai parameter. Anda dapat menggunakan metode membaca objek hexadecimal untuk bergerak melalui catatan kembali.

    Output jendela menampilkan judul dua buku, nilai kembali 5 dan output parameter, yang berisi jumlah catatan (2). Pemberitahuan bahwa Anda harus menutup hexadecimal dalam kode untuk melihat nilai parameter. Selain itu, perhatikan bahwa Anda tidak perlu bergerak melalui semua catatan untuk melihat kembali parameter Jika hexadecimal ditutup.

Menggunakan metode ExecuteScalar objek perintah

Anda dapat menggunakan metode ExecuteScalar objek perintah untuk mengambil nilai parameter. Selain itu, ExecuteScalar kembali kolom pertama dari baris pertama yang disimpan prosedur. Hal ini paling berguna untuk fungsi agregat seperti berikut contoh.
  1. Membuat berikut prosedur tersimpan di server yang menjalankan SQL Server:
    Create Procedure TestProcedure2 (   @au_idIN varchar (11)  )As/* set nocount on */ select count (T.title) from authors as A join titleauthor as TA onA.au_id=TA.au_idjoin titles as Ton T.title_id=TA.title_idwhere A.au_id=@au_idINReturn(5)					
  2. Menggunakan pernyataan impor pada sistem dan System.Data namespaces sehingga Anda tidak harus memenuhi syarat Deklarasi namespaces tersebut kemudian dalam kode Anda. Anda harus menggunakan pernyataan impor sebelum setiap Deklarasi lain. Pastikan bahwa Anda Salin hanya kode bagi penyedia yang telah Anda pilih.SQL klien
    Imports System.Data.SqlClient					
    OLE DB penyedia Data
    Imports System.Data.OleDb					
  3. Tambahkan kode berikut untuk acara Form_Load :SQL klien
    Dim PubsConn As SqlConnection = New SqlConnection & _    ("Data Source=server;integrated security=sspi;" & _    "initial Catalog=pubs;")Dim testCMD As SqlCommand = New SqlCommand & _    ("TestProcedure2", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetValue As SqlParameter = testCMD.Parameters.Add & _    ("RetValue", SqlDbType.Int)RetValue.Direction = ParameterDirection.ReturnValueDim auIDIN As SqlParameter = testCMD.Parameters.Add & _    ("@au_idIN", SqlDbType.VarChar, 11)auIDIN.Direction = ParameterDirection.InputauIDIN.Value = "213-46-8915"PubsConn.Open()Dim intCount As Integer = testCMD.ExecuteScalarConsole.WriteLine(intCount)Console.WriteLine("Return Value: " & (RetValue.Value))					
    OLE DB penyedia Data
    Dim PubsConn As OleDbConnection = New OleDbConnection & _    ("Provider=SQLOLEDB;Data Source=server;" & _    "integrated Security=sspi;initial catalog=pubs;")Dim testCMD As OleDbCommand = New OleDbCommand & _    ("TestProcedure2", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetVal As OleDbParameter = testCMD.Parameters.Add & _    ("RetVal", OleDbType.Integer)RetVal.Direction = ParameterDirection.ReturnValueDim IdIn As OleDbParameter = testCMD.Parameters.Add & _    ("@au_idIN", OleDbType.VarChar, 11)IdIn.Direction = ParameterDirection.InputIdIn.Value = "213-46-8915"        PubsConn.Open()Dim intCount As Integer = testCMD.ExecuteScalarConsole.WriteLine("Number of Rows: " & intCount)Console.WriteLine(RetVal.Value)					
  4. Memodifikasi koneksi string untuk koneksi objek untuk menunjuk ke server yang menjalankan SQL Server.
  5. Menjalankan kode. Perhatikan bahwa metode ExecuteScalar objek perintah kembali parameter. ExecuteScalar juga gulung balik nilai kolom 1, baris 1 rowset kembali. Dengan demikian, nilai intCount adalah hasil dari fungsi menghitung dari yang disimpan prosedur.

Menggunakan metode ExecuteNonQuery objek perintah

Sampel ini menggunakan metode ExecuteNonQuery untuk menjalankan query dan kembali nilai-nilai parameter. ExecuteNonQuery juga gulung balik jumlah record yang terpengaruh setelah menjalankan query. Namun, ExecuteNonQuery tidak kembali setiap baris atau kolom dari yang disimpan prosedur.

ExecuteNonQuery metode ini paling berguna bila Anda menggunakan INSERT, UPDATE, atau menghapus pernyataan jika Anda hanya perlu tahu berapa banyak baris yang berubah. Di disimpan prosedur di mana Anda menggunakan hanya sebuah pilih pernyataan, Anda menerima -1 karena baris tidak dipengaruhi oleh query.
  1. Membuat berikut prosedur tersimpan di server yang menjalankan SQL Server:
    Create Procedure TestProcedure3  (	@au_idIN varchar (11),	@au_fnam varchar (30)  )As/* set nocount on */ Update authors set au_fname = @au_fnamwhere au_id = @au_idin	return (5)					
  2. Menggunakan pernyataan impor pada sistem dan System.Data namespaces sehingga Anda tidak harus memenuhi syarat Deklarasi namespaces tersebut kemudian dalam kode Anda. Anda harus menggunakan pernyataan impor sebelum setiap Deklarasi lain. Pastikan bahwa Anda Salin hanya kode bagi penyedia yang telah Anda pilih.SQL klien
    Imports System.Data.SqlClient					
    OLE DB penyedia Data
    Imports System.Data.OleDb					
  3. Tambahkan kode berikut untuk acara Form_Load :SQL klien
    Dim PubsConn As SqlConnection = New SqlConnection & _    ("Data Source=server;integrated security=sspi;" & _    "initial Catalog=pubs;")Dim testCMD As SqlCommand = New SqlCommand & _    ("TestProcedure3", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetValue As SqlParameter = testCMD.Parameters.Add & _    ("RetValue", SqlDbType.Int)RetValue.Direction = ParameterDirection.ReturnValueDim auIDIN As SqlParameter = testCMD.Parameters.Add & _    ("@au_idIN", SqlDbType.VarChar, 11)auIDIN.Direction = ParameterDirection.InputDim auFname As SqlParameter = testCMD.Parameters.Add & _    ("@au_fnam", SqlDbType.VarChar, 30)auFname.Direction = ParameterDirection.InputauIDIN.Value = "213-46-8915"auFname.Value = "Marjorie"PubsConn.Open()Dim rvRows As Integer = testCMD.ExecuteNonQueryConsole.WriteLine(rvRows)Console.WriteLine(RetValue.Value)					
    OLE DB penyedia Data
    Dim PubsConn As OleDbConnection = New OleDbConnection & _    ("Provider=SQLOLEDB;Data Source=server;" & _    "integrated Security=sspi;initial catalog=pubs;")Dim testCMD As OleDbCommand = New OleDbCommand & _    ("TestProcedure3", PubsConn)testCMD.CommandType = CommandType.StoredProcedureDim RetVal As OleDbParameter = testCMD.Parameters.Add & _    ("RetVal", OleDbType.Integer)RetVal.Direction = ParameterDirection.ReturnValueDim IdIn As OleDbParameter = testCMD.Parameters.Add & _    ("@au_idIN", OleDbType.VarChar, 11)IdIn.Direction = ParameterDirection.InputDim FnameIn As OleDbParameter = testCMD.Parameters.Add & _    ("@au_fname", OleDbType.VarChar, 30)FnameIn.Direction = ParameterDirection.InputIdIn.Value = "213-46-8915"FnameIn.Value = "Marjorie"PubsConn.Open()Dim intRowAffected As Integer = testCMD.ExecuteNonQueryConsole.WriteLine("Number of Rows affected: " & intRowAffected)Console.WriteLine(RetVal.Value)					
  4. Memodifikasi koneksi string untuk koneksi objek untuk menunjuk ke server yang menjalankan SQL Server.
  5. Menjalankan kode. Jendela Output menampilkan jumlah terpengaruh baris (intRowAffect) dan nilai parameter kembali.
Referensi
Untuk informasi tambahan, kunjungi website MSDN berikut situs:
Pengenalan Perpustakaan kelas .NET Framework
http://msdn.Microsoft.com/en-US/Library/hfa3fa08.aspx

Mengambil Data menggunakan hexadecimal
http://msdn.Microsoft.com/en-US/Library/haa3afyz.aspx
Untuk informasi lebih lanjut, lihat Training Microsoft berikut & Kursus sertifikasi:

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 308049 - Tinjauan Terakhir: 05/30/2013 03:59:00 - Revisi: 3.0

Microsoft ADO.NET 1.1, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbhowtomaster kbsqlclient kbstoredproc kbsystemdata kbmt KB308049 KbMtid
Tanggapan