Generate Stored Procedure's Parameters automatically with Command Builder's DeriveParameters method

Object Command Builder merupakan salah satu komponen yang termasuk ke dalam ado.net data provider. Komponen ini dapat digunakan untuk generate command text secara run time terhadap sebuah Data Adapter yang melakukan query tertentu. Command tersebut dapat berupa command text yang di perlukan untuk update semua perubahan data yang terjadi di dalam sebuah dataset, data table atau data row collection.

Selain itu object command builder dapat juga digunakan untuk populate parameter parameter yang digunakan dalam sebuah stored procedure. Hal tersebut dapat dilakukan karena adanya method DeriveParameters. Secara code method tsb memerlukan input parameter berupa object Command yang akan digunakan untuk eksekusi stored procedure. Parameter yang digunakan dalam stored procedure tsb di retrieve dengan melakukan looping parameter terhadap Parameter Collection object command.

Dengan method DeriveParameter kita dapat membuat sebuah class helper yang digunakan untuk passing query berupa stored procedure yang berparameter, dan informasi parameter tsb di generate secara runtime. Developer hanya cukup melakukan passing value nya saja, dan sudah pasti kita harus tahu urutan-urutan dari parameter tsb tentunya. Di bawah ini saya berikan contohnya, dengan asumsi saya punya sebuah stored procedure di database northwind untuk insert ke table customers hanya untuk kolom customerid, dan companyname saja. Iterasi looping counternya saya mulai dari satu, karena parameter yang pertama berupa return value, dan disini saya tidak akan gunakan return value tsb.

Stored Procedure :

CREATE PROCEDURE InsertCustomers
@id nchar(5),
@name nvarchar(40)
AS
Insert Into Customers (CustomerID,CompanyName) Values (@id,@name)

Code :

Imports System.Data.SqlClient

Public Class DeriveParametersHelper
Public Sub GetStoredProcedure(ByVal StoredProcName As String, _
ByVal ConnectionString As String, ByVal ParamValue() As Object)

Using sqlConn As New SqlConnection(ConnectionString)
Using SqlCmd As New SqlCommand(StoredProcName, sqlConn)
SqlCmd.CommandType = CommandType.StoredProcedure
If sqlConn.State <> ConnectionState.Open Then sqlConn.Open()

SqlCommandBuilder.DeriveParameters(SqlCmd)

For i As Integer = 1 To SqlCmd.Parameters.Count - 1
SqlCmd.Parameters(i).Value = ParamValue(i - 1)
Next
SqlCmd.ExecuteNonQuery()
End Using
End Using

End Sub
End Class

Implementasi :

Module Module1
Sub Main()
Dim execQuery As New DeriveParametersHelper
Try
execQuery.GetStoredProcedure("InsertCustomers", _
"database=northwind2k5;server=.\sqldev2k5;integrated security=true", _
New Object() {"Roel", "Roel corp"})
Console.WriteLine("Data has been inserted")
Console.Write("Press any key to exit")
Console.ReadLine()
Catch ex As Exception
Console.WriteLine(ex.Message)
Console.Write("Press any key to exit")
Console.ReadLine()
End Try
End Sub
End Module
Share this post: | | | |
Published Thursday, May 10, 2007 5:18 AM by yulian
Filed under:

Comments

No Comments
Powered by Community Server (Commercial Edition), by Telligent Systems