Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 更新访问数据库数据类型不匹配_Vb.net_Ms Access - Fatal编程技术网

Vb.net 更新访问数据库数据类型不匹配

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

我有一个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 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