簡體   English   中英

Select語句在VB.Net中使用MySQL出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM