[英]Select statement have got error in VB.Net with mysql
該錯誤消息在其他線程中也可用,但就我而言,則有所不同。 你調用的對象是空的。 查詢以下select語句時。 里面有什么問題?
Dim con As New MySqlConnection(ConString)
Dim sql As String
Dim idno As Integer
sql = "select client_id from car_rent where car_id = @carid"
cmd.Parameters.AddWithValue("@carid", carid.Text.Trim)
cmd = New MySqlCommand(sql, con)
idno = cmd.ExecuteScalar()
If (idno > 0) Then
MsgBox("The Car is already Rented!", MsgBoxStyle.Exclamation, "Car Rental System")
Return
End If
我看不到您在任何地方打開連接。 采用
con.open()
切換這兩行的順序
cmd = New MySqlCommand(sql, con)
cmd.Parameters.AddWithValue("@carid", carid.Text.Trim)
另外,執行命令的行似乎也可以正常工作,因為您使用的是Option Strict Off,我建議更改為Option Strict On。 在短期內,您必須解決許多問題,但是它允許更好的編碼實踐
idno = CType(cmd.ExecuteScalar(), Integer)
但是,如果上面的命令找不到與傳遞的參數匹配的記錄,則ExecuteScalar返回Nothing,因此您需要測試這種情況
Dim result = cmd.ExecuteScalar()
if result IsNot Nothing Then
idno = CType(result, Integer)
並且,當然,連接應該在之前打開,所以總結所有內容
Dim sql = "select client_id from car_rent where car_id = @carid"
Using con As New MySqlConnection(ConString)
Using cmd = New MySqlCommand(sql, con)
con.Open()
cmd.Parameters.AddWithValue("@carid", carid.Text.Trim)
Dim result = cmd.ExecuteScalar()
if result IsNot Nothing Then
Dim idno = CType(result, Integer)
If (idno > 0) Then
MsgBox("The Car is already Rented!", MsgBoxStyle.Exclamation, "Car Rental System")
Return
End If
End If
End Using
End Using
除非您需要idno變量用於其他目的,否則很可能足以對ExecuteScalar的結果進行Nothing測試以做出決定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.