2017-01-17 80 views
1

我想刪除與數據庫中的SerialNo相關的記錄。從VB.NET的SQL數據庫中刪除記錄

這是我的代碼:

Using con = New MySqlConnection("server=" & server & ";" & "user id=" & userid & ";" & "password=" & password & ";" & "database=" & database) 
    con.Open() 
    Dim sqlText = "DELETE * FROM datatable WHERE SerialNo = @ulogin" 
    Using cmd = New MySqlCommand(sqlText, con) 
     cmd.Parameters.AddWithValue("@ulogin", frmmain.txtinput.Text) 
     cmd.ExecuteNonQuery() 
    End Using 
    con.Close() 
End Using 

此代碼不能正常工作。當我運行該程序,出現以下錯誤:

enter image description here

請善待足以說明一個合適的解決方案。

注意: 221表示輸入的數字。

+3

刪除它並不需要在[刪除](https://msdn.microsoft.com/en-gb/library/ms189835.aspx)語句 – Bugs

+0

*我測試的代碼,而*也@ Jinx88909但它不工作。 –

+0

數據類型是INT。那我該怎麼辦? @Plutonix –

回答

3

*不屬於。您不能只刪除記錄中的特定列。您要麼刪除整個記錄,要麼不做任何事情,因此DELETE語句沒有列表部分。

雖然我在這裏,沒有必要調用con.Close()(在Using塊負責的是你),它是更好地避免AddWithValue()贊成Add()過載,讓你明確顯示參數的類型。

Const sqlText As String = "DELETE FROM datatable WHERE SerialNo = @ulogin" 
Using con As New MySqlConnection("server=" & server & ";" & "user id=" & userid & ";" & "password=" & password & ";" & "database=" & database), _ 
     cmd AS New MySqlCommand(sqlText, con) 
    cmd.Parameters.Add("@ulogin", MySqlDbType.Int32).Value = frmmain.txtinput.Text 
    con.Open() 
    cmd.ExecuteNonQuery() 
End Using 
+0

+1我喜歡使用嵌套的Using語句,使代碼更容易閱讀。這是值得做Plutonix建議用Dim rows = cmd.ExecuteNonQuery知道記錄是否真的被刪除。 – Bugs

+1

@ Jinx88909我開始在C#中做這個,但老實說,我認爲這個VB的等價物可能是一個錯誤。 ''''分隔符可能會產生新的聲明,而不是繼續使用'using'聲明。但是我從來沒有遇到麻煩票,我喜歡簡潔。這真的是你需要關心的數據庫連接。 –

+0

非常感謝你@JoelCoehoorn和那些來幫我解決這個問題的人 –