在VB.NET中从SQL数据库中删除记录

在VB.NET中从SQL数据库中删除记录,vb.net,Vb.net,我想删除数据库中与SerialNo相关的记录 这是我的代码: Using con = New MySqlConnection("server=" & server & ";" & "user id=" & userid & ";" & "password=" & password & ";" & "database=" & database) con.Open() Dim sqlText = "DEL

我想删除数据库中与
SerialNo
相关的记录

这是我的代码:

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
这个代码不起作用。运行程序时,出现以下错误:

请提出合适的解决方案


注意:221表示输入的号码。

*
不属于该号码。不能仅从记录中删除特定列。要么删除整个记录,要么什么也不做,因此
delete
语句没有列列表部分

当我在这里时,不需要调用
con.Close()
(使用
块的
会为您解决这个问题),最好避免
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

删除语句中的*不需要它。我测试了没有*的代码,也测试了@Jinx88909,但它不工作。这将提供不同的错误。问题中的错误与*有关,并且不是有效语法。至于
DataType
,我会显式地设置它,就像
cmd.Parameters.Add(“@ulogin”,SqlDbType.Int)。Value=
注意
ExecuteNonQuery
是一个函数,告诉您有多少行受到影响:
Dim rows=ExecuteNonQuery()
是开始的地方。如果它不为零,则删除了某些内容duse
cmd.Parameters.AddWithValue(“@ulogin”,CInt(frmmain.txtinput.Text))
。。。将
txtinput.text
转换为
integer
。。。当然,如果您输入的不是数字,那么需要进行一些验证。+1我喜欢使用嵌套Using语句,这使代码更易于阅读。如果Puropoix建议Dim rows=cmd.ExecuteNonQuery知道记录是否真的被删除了,那么做是值得的。@Jinx88909我是用C#开始做这件事的,但老实说,我认为这个VB等价物可能是一个bug。
分隔符可能会生成一个新语句,而不是使用
声明继续执行
。但我从来没有因此遇到过麻烦,我喜欢简洁。这确实是你最需要关心的数据库连接。非常感谢@JoelCoehoorn和那些来帮助我解决这个问题的人