Ada beberapa cara untuk menggunakan ADO.NET untuk memanggil disimpan
prosedur dan untuk mendapatkan kembali kembali nilai-nilai dan kembali parameter, termasuk:
- Penggunaan DataSet objek untuk mengumpulkan baris kembali dan bekerja dengan baris ini di
Selain kembali nilai-nilai dan parameter kembali.
- Penggunaan Hexadecimal objek untuk mengumpulkan baris kembali, untuk bergerak melalui baris ini,
dan untuk mengumpulkan kembali nilai-nilai dan kembali parameter.
- Penggunaan ExecuteScalar metode untuk kembali nilai dari kolom pertama hasil'
baris pertama dengan kembali nilai-nilai dan parameter kembali. Ini paling berguna
dengan fungsi agregat.
- Penggunaan ExecuteNonQuery metode untuk kembali hanya parameter kembali dan kembali
nilai-nilai. Setiap baris kembali dibuang. Ini paling berguna untuk mengeksekusi
tindakan queries.
Artikel ini menunjukkan metode 3 dan menggunakan kedua
The
SqlCommand dan
OleDbCommand objek. Pastikan bahwa Anda Salin hanya kode untuk dikelola
penyedia yang Anda gunakan. Jika Anda tidak yakin yang dikelola penyedia Anda
harus menggunakan, kunjungi Website Jaringan Pengembang Microsoft berikut:
Dalam setiap contoh dalam artikel ini, parameter ditambahkan
untuk
Parameter Koleksi
Perintah objek. Ketika Anda menggunakan
SqlCommand objek, Anda tidak telah menambahkan parameter khususnya apapun
Order, tetapi parameter harus memiliki nama yang benar. Ketika Anda menggunakan
OleDbCommand objek, Anda harus menambahkan parameter dalam urutan yang benar, dan Anda
tidak dapat menggunakan parameter dengan nama.
Menggunakan hexadecimal kembali baris dan parameter
Anda dapat menggunakan
Hexadecimal objek untuk kembali read-only, ke depan hanya aliran data. The
informasi yang
Hexadecimal berisi dapat datang dari prosedur yang disimpan. Contoh ini menggunakan
Hexadecimal objek untuk menjalankan prosedur yang disimpan yang memiliki input dan output
parameter dan kemudian bergerak melalui catatan kembali untuk melihat kembali
parameter.
- Membuat prosedur berikut disimpan pada server yang
menjalankan Microsoft SQL Server:
Create Procedure TestProcedure
(
@au_idIN varchar (11),
@numTitlesOUT Integer OUTPUT
)
As
select A.au_fname, A.au_lname, T.title
from authors as A join titleauthor as TA on
A.au_id=TA.au_id
join titles as T
on T.title_id=TA.title_id
where A.au_id=@au_idIN
set @numTitlesOUT = @@Rowcount
return (5)
- Penggunaan Impor pernyataan di Sistem dan System.data namespaces sehingga Anda tidak harus memenuhi syarat Deklarasi
namespaces tersebut kemudian dalam kode Anda. Anda harus menggunakan Impor pernyataan sebelum deklarasi lain. Pastikan untuk menyalin hanya
kode untuk selular yang telah Anda pilih.SQL klien
Imports System.Data.SqlClient
OLE DB Data ProviderImports System.Data.OleDb
- Tambahkan kode berikut untuk Form_Load acara: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.StoredProcedure
Dim RetValue As SqlParameter = testCMD.Parameters.Add & _
("RetValue", SqlDbType.Int)
RetValue.Direction = ParameterDirection.ReturnValue
Dim auIDIN As SqlParameter = testCMD.Parameters.Add & _
("@au_idIN", SqlDbType.VarChar, 11)
auIDIN.Direction = ParameterDirection.Input
Dim NumTitles As SqlParameter = testCMD.Parameters.Add & _
("@numtitlesout", SqlDbType.Int)
NumTitles.Direction = ParameterDirection.Output
auIDIN.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))
Loop
myReader.Close()
Console.WriteLine("Return Value: " & (RetValue.Value))
Console.WriteLine("Number of Records: " & (NumTitles.Value))
OLE DB Data Provider
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.StoredProcedure
Dim RetValue As OleDbParameter = testCMD.Parameters.Add & _
("RetValue", OleDbType.Integer)
RetValue.Direction = ParameterDirection.ReturnValue
Dim auIDIN As OleDbParameter = testCMD.Parameters.Add & _
("@au_idIN", OleDbType.VarChar, 11)
auIDIN.Direction = ParameterDirection.Input
Dim NumTitles As OleDbParameter = testCMD.Parameters.Add & _
("@numtitlesout", OleDbType.Integer)
NumTitles.Direction = ParameterDirection.Output
auIDIN.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))
Loop
myReader.Close()
Console.WriteLine("Return Value: " & (RetValue.Value))
Console.WriteLine("Number of Records: " & (NumTitles.Value))
- Memodifikasi rangkaian sambungan untuk Sambungan objek untuk menunjuk ke server yang menjalankan SQL
Server.
- Jalankan kode. Perhatikan bahwa Hexadecimal mengambil catatan dan kemudian mengembalikan nilai parameter. Anda
dapat menggunakan Baca metode Hexadecimal objek untuk bergerak melalui catatan kembali.
Output
jendela menampilkan judul buku dua, nilai kembali 5, dan output
parameter, yang berisi jumlah catatan (2). Pemberitahuan bahwa Anda harus menutup
The Hexadecimal dalam kode untuk melihat nilai parameter. Selain itu, perhatikan bahwa
Anda tidak harus bergerak melalui semua catatan untuk melihat kembali parameter
Jika Hexadecimal ditutup.
Menggunakan metode ExecuteScalar objek perintah
Anda dapat menggunakan
ExecuteScalar metode
Perintah objek untuk mengambil nilai parameter. Selain itu,
ExecuteScalar kembali kolom pertama baris pertama yang disimpan
prosedur. Ini paling berguna untuk agregat fungsi seperti dalam berikut
contoh.
- Membuat prosedur berikut disimpan pada 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 on
A.au_id=TA.au_id
join titles as T
on T.title_id=TA.title_id
where A.au_id=@au_idIN
Return(5)
- Penggunaan Impor pernyataan di Sistem dan System.data namespaces sehingga Anda tidak harus memenuhi syarat Deklarasi
namespaces tersebut kemudian dalam kode Anda. Anda harus menggunakan Impor pernyataan sebelum deklarasi lain. Pastikan bahwa Anda
Salin hanya kode untuk selular yang telah Anda pilih.SQL klien
Imports System.Data.SqlClient
OLE DB Data ProviderImports System.Data.OleDb
- Tambahkan kode berikut untuk Form_Load acara: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.StoredProcedure
Dim RetValue As SqlParameter = testCMD.Parameters.Add & _
("RetValue", SqlDbType.Int)
RetValue.Direction = ParameterDirection.ReturnValue
Dim auIDIN As SqlParameter = testCMD.Parameters.Add & _
("@au_idIN", SqlDbType.VarChar, 11)
auIDIN.Direction = ParameterDirection.Input
auIDIN.Value = "213-46-8915"
PubsConn.Open()
Dim intCount As Integer = testCMD.ExecuteScalar
Console.WriteLine(intCount)
Console.WriteLine("Return Value: " & (RetValue.Value))
OLE DB Data Provider
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.StoredProcedure
Dim RetVal As OleDbParameter = testCMD.Parameters.Add & _
("RetVal", OleDbType.Integer)
RetVal.Direction = ParameterDirection.ReturnValue
Dim IdIn As OleDbParameter = testCMD.Parameters.Add & _
("@au_idIN", OleDbType.VarChar, 11)
IdIn.Direction = ParameterDirection.Input
IdIn.Value = "213-46-8915"
PubsConn.Open()
Dim intCount As Integer = testCMD.ExecuteScalar
Console.WriteLine("Number of Rows: " & intCount)
Console.WriteLine(RetVal.Value)
- Memodifikasi rangkaian sambungan untuk Sambungan objek untuk menunjuk ke server yang menjalankan SQL
Server.
- Jalankan kode. Perhatikan bahwa ExecuteScalar metode Perintah objek kembali parameter. ExecuteScalar juga mengembalikan nilai kolom 1, baris 1 rowset kembali.
Dengan demikian, nilai intCount adalah hasil dari fungsi Bangsawan dari yang disimpan
prosedur.
Menggunakan metode ExecuteNonQuery objek perintah
Sampel ini menggunakan
ExecuteNonQuery metode untuk menjalankan query dan kembali nilai parameter.
ExecuteNonQuery juga mengembalikan jumlah record yang terpengaruh setelah
permintaan berjalan. Namun,
ExecuteNonQuery tidak kembali setiap baris atau kolom dari yang disimpan
prosedur.
The
ExecuteNonQuery metode paling berguna ketika Anda menggunakan INSERT, UPDATE atau DELETE
pernyataan jika Anda hanya perlu tahu berapa banyak baris diubah. Dalam disimpan
prosedur di mana Anda menggunakan hanya pilih pernyataan, Anda menerima-1
karena tidak ada baris dipengaruhi oleh permintaan.
- Membuat prosedur berikut disimpan pada 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_fnam
where au_id = @au_idin
return (5)
- Penggunaan Impor pernyataan di Sistem dan System.data namespaces sehingga Anda tidak harus memenuhi syarat Deklarasi
namespaces tersebut kemudian dalam kode Anda. Anda harus menggunakan Impor pernyataan sebelum deklarasi lain. Pastikan bahwa Anda
Salin hanya kode untuk selular yang telah Anda pilih.SQL klien
Imports System.Data.SqlClient
OLE DB Data ProviderImports System.Data.OleDb
- Tambahkan kode berikut untuk Form_Load acara: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.StoredProcedure
Dim RetValue As SqlParameter = testCMD.Parameters.Add & _
("RetValue", SqlDbType.Int)
RetValue.Direction = ParameterDirection.ReturnValue
Dim auIDIN As SqlParameter = testCMD.Parameters.Add & _
("@au_idIN", SqlDbType.VarChar, 11)
auIDIN.Direction = ParameterDirection.Input
Dim auFname As SqlParameter = testCMD.Parameters.Add & _
("@au_fnam", SqlDbType.VarChar, 30)
auFname.Direction = ParameterDirection.Input
auIDIN.Value = "213-46-8915"
auFname.Value = "Marjorie"
PubsConn.Open()
Dim rvRows As Integer = testCMD.ExecuteNonQuery
Console.WriteLine(rvRows)
Console.WriteLine(RetValue.Value)
OLE DB Data Provider
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.StoredProcedure
Dim RetVal As OleDbParameter = testCMD.Parameters.Add & _
("RetVal", OleDbType.Integer)
RetVal.Direction = ParameterDirection.ReturnValue
Dim IdIn As OleDbParameter = testCMD.Parameters.Add & _
("@au_idIN", OleDbType.VarChar, 11)
IdIn.Direction = ParameterDirection.Input
Dim FnameIn As OleDbParameter = testCMD.Parameters.Add & _
("@au_fname", OleDbType.VarChar, 30)
FnameIn.Direction = ParameterDirection.Input
IdIn.Value = "213-46-8915"
FnameIn.Value = "Marjorie"
PubsConn.Open()
Dim intRowAffected As Integer = testCMD.ExecuteNonQuery
Console.WriteLine("Number of Rows affected: " & intRowAffected)
Console.WriteLine(RetVal.Value)
- Memodifikasi rangkaian sambungan untuk Sambungan objek untuk menunjuk ke server yang menjalankan SQL
Server.
- Jalankan kode. Jendela Output menampilkan jumlah
terkena baris)intRowAffect) dan nilai parameter kembali.
Untuk informasi tambahan, kunjungi Website MSDN berikut
situs:
Untuk lebih banyak informasi umum tentang ADO.NET atau Visual Basic.NET,
Kunjungi newsgroup MSDN berikut:
Microsoft.Public.DotNet.Framework.adonet
(http://msdn.microsoft.com/newsgroups/default.aspx?query=microsoft.public.dotnet.framework.adonet&dg=&cat=en-us-msdn&lang=en&cr=US&pt=&catlist=774F24A2-F71F-425F-AC2B-DC48AB0DA5C9&dglist=&ptlist=&exp=&sloc=en-us)
Microsoft.Public.DotNet.Languages.VB
(http://msdn.microsoft.com/newsgroups/default.aspx?query=microsoft.public.dotnet.languages.vb&dg=&cat=en-us-msdn&lang=en&cr=US&pt=&catlist=774F24A2-F71F-425F-AC2B-DC48AB0DA5C9&dglist=&ptlist=&exp=&sloc=en-us)
Untuk selengkapnya, lihat Microsoft berikut pelatihan &
Kursus sertifikasi: