通过sql访问C#中的MDB更新数据

时间:2011-12-24 20:25:55

标签: c# sql ms-access jet

我在这里得到了帮助 Inserting and Updating data to MDB 但仍有更新问题

我有一个访问mdb文件,其中包含表“Table1”和3个列

ID
INFO 
TEXT

我可以添加新信息,查找信息,但更新给我一个未知错误。我发送的命令有问题。

 con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\\mdb\\testmdb.mdb");
 cmd = new OleDbCommand();
 cmd.Connection = con;
    cmd.CommandText = "UPDATE Table1 SET Info = @Info, text = @text WHERE ID = @ID;";
    cmd.Parameters.AddWithValue("@ID", textBox1.Text);
    cmd.Parameters.AddWithValue("@Info", textBox2.Text);
    cmd.Parameters.AddWithValue("@text", textBox3.Text);
    con.Open(); // open the connection
    int numAffected = cmd.ExecuteNonQuery();
    con.Close();

1 个答案:

答案 0 :(得分:4)

OleDbCommand does not support named parameters。这样:

"UPDATE Table1 SET Info = @Info, text = @text WHERE ID = @ID;";

相当于:

"UPDATE Table1 SET Info = ?, text = ? WHERE ID = ?;";

当您向Parameters集合添加参数时,会按照添加的顺序分配参数。因此,添加的第一个参数将分配给第一个占位符,第二个参数将分配给第二个参数。您可以使用占位符的名称以便于阅读,但在分配值时无关紧要。

因此,您需要更改添加值的顺序以匹配查询中的顺序:

cmd.Parameters.AddWithValue("@Info", textBox2.Text);
cmd.Parameters.AddWithValue("@text", textBox3.Text);
cmd.Parameters.AddWithValue("@ID", textBox1.Text);