การใช้ Parameter คู่กับ Dataset จะเขียนยังไงดีครับ
คือ ปรกติผมใช้ parameter กับ พวก .ExecuteNonquery หรือไม่ก็ .ExecuteReader น่ะครับ แต่ทีนี้ว่ามีปัญหาคือ
Function ในการ Query ข้อมูลนั้น เป็นการ return ค่าออกมาเป็น Dataset ซึ่งผมไม่รู้ว่าจะวาง parameter ยังไงให้ ตรง query Dataset รู้จักค่า Parameter ด้วย
ยกตัวอย่างการเขียนนะครับ
Dim dr As SqlDataReader
Try
checkOpen() << เกี่ยวกับเปิดปิดการ Connect
Dim sql As String = " select * From MyTable Where id = @id And Name Like @Name "
Dim cmd As New SqlCommand(sql, cn)
cmd.Parameters.Add("@id", SqlDbType.DateTime).Value = sdate
cmd.Parameters.Add("@Name", SqlDbType.DateTime).Value = edate
dr = cmd.ExecuteReader
dr.Read()
If dr.HasRows = True Then
cmd.Dispose()
dr.Close()
Dim da As New SqlDataAdapter(sql, cn)
Dim ds As New DataSet
da.Fill(ds, "Test")
da.Dispose()
Return ds <<< คืนค่าออกไป
Else
cmd.Dispose()
dr.Close()
End If
Catch ex As Exception
MsgBox(ex.Message & " จาก Function Test, TestClass")
Finally
cn.Dispose()
End Try
คือ ถ้าเขียนแบบนี้ ตัว SqlDataAdapter มันจะไม่รู้จัก ตัว Parameter น่ะครับ
ไม่ทราบว่ามันสามารถเขียนได้หรือไม่ครับ
ขอบคุณมากครับ
| MrSuthin | วันที่ส่ง: 3 ม.ค. 50 18:43 GMT+7
วันที่ปรับล่าสุด: 3 ม.ค. 50 19:50 GMT+7 |
REPLY #1 (32444)
คุณ MrSuthin ยังใช้วิธีการเขียนแบบ Visual Studio 2003 (.NET 1.1) อยู่นะครับ
ยังไม่ใช้ .NET 2 หรือครับ
ใน DataAdapter จะมีอ๊อบเจ็กต์ Command ของมันเองอยู่สี่ตัว
กรณีนี้เรากำลังจะสนใจเฉพาะ SelectCommand ผมแนะนำโค้ดให้นิดหน่อย
คุณสุทินก็คงเขียนต่อเองได้แล้วมั้งครับ
Dim sql As String = "SELECT ... WHERE col1 = @para1;"
Dim ds As New DataSet
' ...
Using da As New SqlDataAdapter(sql, cn)
Dim cmd As SqlCommand = da.SelectCommand
cmd.Parameters.Add("@para1", SqlDbType.XYZ).Value = yourValue
' ---- เมื่อเราสั่ง Fill, DataAdapter จะเอา SelectCommand ของมันไป ExecuteReader
' ---- เพื่อนำข้อมูลที่ได้จาก DataReader มา "Fill" ใส่ DataSet/DataTable ที่เรากำหนด
da.Fill(ds, "Table1")
End Using
' ...
Return(ds)
| surrealist
ขอขอบคุณ อาจารย์ครับ |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น