Vb.net 更新访问数据库数据类型不匹配
我有一个access db,我正试图通过vb.net更新,还有一个update语句。每次我尝试通过单击按钮来更新字段时,都会出现以下条件表达式中数据类型不匹配的错误代码:Vb.net 更新访问数据库数据类型不匹配,vb.net,ms-access,Vb.net,Ms Access,我有一个access db,我正试图通过vb.net更新,还有一个update语句。每次我尝试通过单击按钮来更新字段时,都会出现以下条件表达式中数据类型不匹配的错误代码: Dim con1 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Redirection\fakename\Desktop\AccessDBs\MovieCatalog.mdb") Dim sqlupda
Dim con1 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Redirection\fakename\Desktop\AccessDBs\MovieCatalog.mdb")
Dim sqlupdate As String
sqlupdate = "UPDATE Table1 SET Title=@Title, YearofFilm=@YearofFilm, Description=@Description, Field1=@Field1 WHERE ID='" & TextBox5.Text & "'"
Dim cmd As New OleDbCommand(sqlupdate, con1)
' This assigns the values for our columns in the DataBase.
' To ensure the correct values are written to the correct column
cmd.Parameters.Add(New OleDbParameter("@Title", TextBox1.Text))
cmd.Parameters.Add(New OleDbParameter("@YearofFilm", TextBox2.Text))
cmd.Parameters.Add(New OleDbParameter("@Description", TextBox3.Text))
cmd.Parameters.Add(New OleDbParameter("@Field1", TextBox4.Text))
con1.Open()
cmd.ExecuteNonQuery()
con1.Close()
首先,对每个值使用参数化查询,并且ID应该作为参数传递 现在停下来思考一下数据库字段的数据类型。它们都是字符串类型吗?您的参数都是字符串类型,如果其中一个字段是数字字段,则应传递带有数字数据类型的参数 例如,yearofilm和ID似乎可能是数字字段 所以
田野1是一片迷雾。如果它是一个数字字段,则尝试将其也转换 明智地将参数用于更新字段,也可以使用ID字段。听起来ID是数字,但“&TextBox5.Text&”将传递文本-用户文本,可以是猫、狗或“Droptables…”。。。
Dim sqlupdate As String
sqlupdate = "UPDATE Table1 SET Title=@Title, YearofFilm=@YearofFilm, " & _
"Description=@Description, Field1=@Field1 WHERE ID=@id"
Using con1 As New OleDbConnection("....")
Using cmd As New OleDbCommand(sqlupdate, con1)
cmd.Parameters.AddWithValue("@Title", TextBox1.Text)
cmd.Parameters.AddWithValue("@YearofFilm", Convert.ToInt32(TextBox2.Text))
cmd.Parameters.AddWithValue("@Description", TextBox3.Text)
cmd.Parameters.AddWithValue("@Field1", TextBox4.Text)
cmd.Parameters.AddWithValue("@id", Convert.ToInt32(TextBox5.Text))
con1.Open()
cmd.ExecuteNonQuery()
End Using
End Using