在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()
是开始的地方。如果它不为零,则删除了某些内容dusecmd.Parameters.AddWithValue(“@ulogin”,CInt(frmmain.txtinput.Text))
。。。将txtinput.text
转换为integer
。。。当然,如果您输入的不是数字,那么需要进行一些验证。+1我喜欢使用嵌套Using语句,这使代码更易于阅读。如果Puropoix建议Dim rows=cmd.ExecuteNonQuery知道记录是否真的被删除了,那么做是值得的。@Jinx88909我是用C#开始做这件事的,但老实说,我认为这个VB等价物可能是一个bug。,
分隔符可能会生成一个新语句,而不是使用
声明继续执行。但我从来没有因此遇到过麻烦,我喜欢简洁。这确实是你最需要关心的数据库连接。非常感谢@JoelCoehoorn和那些来帮助我解决这个问题的人