我正在VB.NET中开发一个桌面应用程序,我想在其中进行编辑,删除以及在DataGridView中添加新行。我该如何实现?
获取错误“从字符串“ Update dbo.Trans set BCode ='1'转换为”“ Double”无效。
我尝试过的代码:
con =新建SqlConnection(“数据源= USER \ SQLEXPRESS;初始目录= Sap;集成安全性= True”)
If (TbCode.Text = "" Or TbItem.Text = "" Or TbWgt.Text = "") Then
MessageBox.Show("Please fill all the columns")
Else
con.Open()
cmd1 = New SqlCommand("Update dbo.Trans set BCode='" + TbCode.Text + "',BName='" + Label2.Text + "',ICode='" + TbItem.Text + "',IName='" + Label3.Text + "',Qty='" + TbQty.Text + "',Weight='" + TbWgt.Text + "',RWeight='" + Label4.Text + "',Rate='" + Rate + "' where date=@date and depot=@depot and BCode=@bcode and Icode=@icode", con)
cmd1.Parameters.AddWithValue("@depot", TbDepot.Text)
cmd1.Parameters.AddWithValue("@icode", TbItem.Text)
cmd1.Parameters.AddWithValue("@date", IDate.Text)
cmd1.Parameters.AddWithValue("@bcode", TbCode.Text)
cmd1.ExecuteNonQuery()
End If
con.Close()
Call Fillgrid()
Call emptyfun()
End Sub
答案 0 :(得分:0)
这里的问题是您正在使用加号来连接字符串,并且应该使用与号。
如果您打开“严格选项”,这将由编译器引起。
这是您更新的代码。
cmd1 = New SqlCommand("Update dbo.Trans set BCode='" & TbCode.Text & "',BName='" & Label2.Text & "',ICode='" & TbItem.Text & "',IName='" & Label3.Text & "',Qty='" & TbQty.Text & "',Weight='" & TbWgt.Text & "',RWeight='" & Label4.Text & "',Rate='" & Rate & "' where date=@date and depot=@depot and BCode=@bcode and Icode=@icode", con)
cmd1.Parameters.AddWithValue("@depot", TbDepot.Text)
cmd1.Parameters.AddWithValue("@icode", TbItem.Text)
cmd1.Parameters.AddWithValue("@date", IDate.Text)
cmd1.Parameters.AddWithValue("@bcode", TbCode.Text)
cmd1.ExecuteNonQuery()
但是,从技术上讲,您应该在整个update语句中使用参数,而不仅仅是where子句。另一个建议是显式定义参数的数据类型,而不是使用AddWithValue。