PDA

View Full Version : حرفه ای: کمک : تشخیص نوع و تعداد و نام پارامتر ها در یک کد اس کیو ال



arman_Delta2002
جمعه 28 مرداد 1390, 11:20 صبح
سلام
یک کد اس کیو ال مثل این کد یا چند پارامتر داریم مخوام زمانی که این رشته رو صدا میزنم نوع پارامتر و نام پارامتر رو جدا داشته باشم مثل

Select * from D_Sub_Forms_DB where L_D_Forms =@ID

به عنوان مثال میخوام زمان انتساب این کد به یک دیتاکامند پارامتر هم به این دیتا کامند انتساب پیدا کنه.

D_Sub_Forms_DBCommandSelect.CommandType = CommandType.Text
D_Sub_Forms_DBCommandSelect.CommandText = "Select * from D_Sub_Forms_DB where L_D_Forms =@ID
D_Sub_Forms_DBCommandSelect.Parameters.Add(New OleDb.OleDbParameter("@ID", OleDbType.VarWChar))
D_Sub_Forms_DBCommandSelect.Connection = DbConnection1
D_Sub_Forms_DBCommandSelect.ExecuteNonQuery()

در اصل میخوام به صورت پویا تشخیص بده که پارامتر @ID چه نوع داده ای هست (رشته ای یا عددی) و اصلا پارامتر داره این رشته کد اس کیو الی اگه داره چند پارامتر در کد اس کیو ال هست.
من تا اینجا پیش رفتم که تعداد و نام پارامتر ها رو جدا کردم و در آوردم ولی تو تشخیص نوع هر پارامتر گیر کردم

majid325
جمعه 28 مرداد 1390, 15:25 عصر
به نظر میاد یه سری attribute باید تعریف کنی

arman_Delta2002
جمعه 28 مرداد 1390, 18:59 عصر
میشه بیشتر توضیح بدین ، اگه این روش به نتیجه برسه یه انقلاب بزرگی تو کد نویسی میشه فقط طرف کد اس کیو ال هر قسمت رو میده او فرم تمام اشیا رو میسازه و انصاب میده به اشیا کاملا پویا و این یعنی لقمه آماده و کد نیوسی کمتر
مشکل رو با این کد حل کردم

Dim Command1 As New OleDb.OleDbCommand
Dim Command2 As New OleDb.OleDbCommand
Dim con As New OleDb.OleDbConnection
Dim dt As New DataTable
Dim ds As New DataSet
Dim Da As New OleDb.OleDbDataAdapter
Dim conData As New OleDb.OleDbType
Private Sub SQLParametrFinder(ByVal SQLText As String, ByVal DataComand As OleDb.OleDbCommand)
Command2.CommandText = "SELECT top 1 * FROM D_Company"
Command2.Connection = con
Command1.Connection = con
Command1.CommandText = TextBox1.Text
Da.SelectCommand = Command2

Da.Fill(ds, "DaftarMali")
Dim I As Integer
For I = 0 To ds.Tables(0).Columns.Count - 1
ListBox1.Items.Add(ds.Tables(0).Columns(I).ColumnN ame)
ListBox2.Items.Add(ds.Tables(0).Columns(I).DataTyp e.ToString)
conData.ds.Tables(0).Columns(I).DataType.ToString( )
Command1.Parameters.Add(New OleDb.OleDbParameter("@" & ds.Tables(0).Columns(I).ColumnName, ))
ListBox3.Items.Add(Command1.Parameters.Item(I).DbT ype)
Next
Da.InsertCommand = Command1



End Sub