所以我有一个输入表单,我在其中为每一列输入值。然后在声明连接、适配器、命令和查询后执行以下代码,没有抛出异常,也没有更新数据库:
private void BtnOk_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[MyDirectory]\Database.accdb");
conn.Open();
string query = "UPDATE [Users] SET [User]=" + txtUser.Text
+ ", [Password]=" + txtPass.Text
+ ", [IsAdmin]=" + chBAdmin.Checked.ToString()
+ " WHERE ID=" + txtID.Text + "";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
OleDbCommand comm = new OleDbCommand
{
CommandType = CommandType.Text,
CommandText = query,
Connection = conn
};
try
{
comm.ExecuteNonQuery();
MessageBox.Show(query);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
conn.Close();
}
最佳答案
您需要用单引号分隔值,例如
string query = "UPDATE [Users] SET [User]='" + txtUser.Text + "'"
但是,您可能会收到有关 SQL 注入(inject)的评论,并且应该真正使用参数化查询,而不是构建包含用户输入的 SQL 字符串。
关于c# - 无法通过 OleDbAdapter 更新 Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51608751/