该错误消息在其他线程中也可用,但就我而言,则有所不同。
你调用的对象是空的。查询以下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
最佳答案
切换这两行的顺序
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测试以做出决定。
关于mysql - Select语句在VB.Net中使用MySQL出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22007660/