更新Access DB数据类型不匹配

时间:2014-08-10 17:03:05

标签: vb.net ms-access

我有一个访问数据库我正在尝试通过vb.net和更新语句进行更新。每当我尝试通过单击按钮更新字段时,它会出现“标准表达式中的数据类型不匹配”错误以下是我的代码:

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()

1 个答案:

答案 0 :(得分:0)

首先,对每个值使用参数化查询,ID也应作为参数传递

现在停下来思考数据库字段的数据类型。它们都是字符串类型吗?您的参数都是字符串类型,如果您的某个字段是数字,那么您应该传递一个带有numeric数据类型的参数

例如,YearoffilmID似乎是可能的数字字段。

所以

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

Field1是个谜。如果它是一个数字字段,那么也尝试转换它。