我在这里找到了很多与我的问题有关的帖子,但是我正在努力寻找确切需要更改的内容,以解决从C#应用程序更新MS Access数据库的问题。因此,如果人们认为这篇文章与其他人过于相似,我深表歉意。这是我的更新代码:
private void button1_Click(object sender, EventArgs e)
{
string ConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ts\Documents\testDB.accdb");
using (OleDbConnection conn = new OleDbConnection (ConnString))
using (OleDbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "UPDATE [Table4] SET [EmpName] = ?, [Age] = ?, [Mobile] = ? WHERE [ID] = ?";
cmd.Parameters.AddWithValue("@ID", OleDbType.VarChar).Value = idtextBox1.Text;
cmd.Parameters.AddWithValue("@EmpName", OleDbType.VarChar).Value = nametextBox2.Text;
cmd.Parameters.AddWithValue("@Age", OleDbType.VarChar).Value = agetextBox3.Text;
cmd.Parameters.AddWithValue("@Mobile", OleDbType.VarChar).Value = mobiletextBox4.Text;
cmd.Connection = conn;
conn.Open();
int rowsAffected = cmd.ExecuteNonQuery();
conn.Close();
Form1_Load(sender, e);
MessageBox.Show("record updated ");
}
}
对于OleDb,参数的顺序至关重要。更新不起作用的原因是,您首先提供了ID参数,而在SQL中则是最后一个(在WHERE
子句中)。将此参数移到末尾,它应该可以工作。