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

Posted at : May/10/2007
4304 Views | 5 Comments

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 :

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

Code :

   1:  Imports System.Data.SqlClient
   2:   
   3:  Public Class DeriveParametersHelper
   4:      Public Sub GetStoredProcedure(ByVal StoredProcName As String, _
   5:      ByVal ConnectionString As String, ByVal ParamValue() As Object)
   6:   
   7:          Using sqlConn As New SqlConnection(ConnectionString)
   8:              Using SqlCmd As New SqlCommand(StoredProcName, _
   9:              sqlConn)
  10:                  SqlCmd.CommandType = CommandType.StoredProcedure
  11:                  If sqlConn.State <> ConnectionState.Open Then _
  12:                  sqlConn.Open()
  13:   
  14:                  SqlCommandBuilder.DeriveParameters(SqlCmd)
  15:   
  16:                  For i As Integer = 1 To SqlCmd.Parameters.Count - 1
  17:                      SqlCmd.Parameters(i).Value = ParamValue(i - 1)
  18:                  Next
  19:                  SqlCmd.ExecuteNonQuery()
  20:              End Using
  21:          End Using
  22:   
  23:      End Sub
  24:  End Class

Implementasi :

   1:  Module Module1
   2:      Sub Main()
   3:          Dim execQuery As New DeriveParametersHelper
   4:          Try
   5:              execQuery.GetStoredProcedure("InsertCustomers", _
   6:              "database=northwind2k5;server=.\sqldev2k5;" & _
   7:              "integrated security=true", _
   8:              New Object() {"Roel", "Roel corp"})
   9:   
  10:              Console.WriteLine("Data has been inserted")
  11:              Console.Write("Press any key to exit")
  12:              Console.ReadLine()
  13:          Catch ex As Exception
  14:              Console.WriteLine(ex.Message)
  15:              Console.Write("Press any key to exit")
  16:              Console.ReadLine()
  17:          End Try
  18:      End Sub
  19:  End Module

[Comments]

EL (Jun/09/2009 10:28:46)
BANG AQ ADA PERTAYAAN YANG MUNGKIN AGAK TDK COCOK DENGAN TULISAN INI. BAGAIMANA SYNTAX "UPDATE STATEMENT" DI VB.NET UNTUK MERUBAH DATA DI KOLOM YANG UNIK (PK)? CONTOHNYA MERUBAH ID SALAH SATU PEGAWAI PADA TABEL PEGAWAI. KALAU BIASANYA SIH "UPDATE NAMA TABEL SET VALUES(....) WHERE .... ATAS PERHATIANNYA DAN JAWABANNYA, AQ UCAPKAN TRIMA KASIH BUANYYAK.....
Rully (Jun/09/2009 04:13:42)
Perintah SQL di vb.net sama saja dengan perintah SQL di databasenya...hanya kalau di vb.net itu perintahnya ditempatkan pada object data accessnya...jadi untuk perintah update seperti perintah update pada umumnya seperti yang mas tuliskan di atas :)
JOKO (Oct/26/2009 10:21:17)
Trima kasih sebelumnya atas artikel ini krn sangat membantu. Aq ada pertanyaan Pak: 1. Aq coba insert data dgn tipe data "String" bs, tp ketika aq pake Type data Image di SQL SERVER 2005 gagal dengan parameter me.Picturebox.Image dgn informasi kesalahan: "Failed to convert parameter value from a bitmap to a byte[]." Apakah harus dgn tipe data tertentu method ini dipakai? atau apakah harus diconvert dulu dgn code tertentu, bl ya gmn codingnya? 2. kalau pake namespace System.Data.Common bs gak? Aq coba ternyata DbCommandBuilder gak punya method DeriveParameters. Terima kasih atas per
Rully (Nov/17/2009 04:45:20)
@Joko > Untuk insert data ke kolom yang bertipe image itu harus di convert terlebih dahulu datanya menjadi array of byte..
Joko (Nov/18/2009 10:32:25)
Akhirnya d jwb jg, meski hmpr 1 bln. mungkin baru tahu atau sibuk ya atau .......? btw thanks untuk pertanyaan ku no. 1 sdh ada jwbnnya. bgmn dgn pertanyaan no. 2, bgmn komennya ? apakah Microsoft, dlm hal ini VS terlalu "over protective" thd produknya (tkut sm DBMS lainnya). Saya tdk menggiring opini / berpolitik thd produk tertentu, tp biarlah kenyataan berbicara. Pak, Saya ada 1 tmbahan pertanyaan: mengapa stored procedure di bwh ini (SQL SERVER 2005) tdk berfungsi bl memakai script yg telah bpk. tulis, dlm hal ini Command Builder's DeriveParameters method. ALTER Proc [dbo].[SUp

[Write your comment]

Name (required)

Email (required-will not published)

Comment
1846
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.