【发布时间】:2016-06-28 10:20:37
【问题描述】:
我正在尝试通过我的 C# Web 应用程序更新 Access 数据库,但我目前在 WHERE 语句中遇到问题,没有更新记录并且没有返回任何错误。
我正在尝试更新一个文本字段,而我的 WHERE 语句中的条件是一个整数。
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = @Title WHERE ID = @ID");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Title", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", param2);
我什至尝试过这样做
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = ? WHERE ID = ?");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("?", TextBox1.Text);
cmd.Parameters.AddWithValue("?", param2);
但它仍然没有更新!
我发现试图修复它的是,当我用单引号之间的字符串替换第一个参数时(见下文),它实际上会更新表格。
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = 'test' WHERE ID = @ID");
你们中有人知道为什么会发生这种情况吗?
编辑:这是完整的代码
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = @Title WHERE ID = @ID");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Title", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", param2);
conn.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
编辑 2:
这是我尝试设置数据类型后的代码,它仍然无法正常工作。
澄清一下,在我的 Access 数据库中,ID 是“自动编号”,标题是“长文本”
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = ? WHERE ID = ?");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("Title", TextBox1.Text).OleDbType = OleDbType.VarChar;
cmd.Parameters.AddWithValue("ID", param2).OleDbType = OleDbType.Integer;
conn.Open();
try
{
var recordsUpdated = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
当我检查 recordsUpdated 的值时,它返回“1”但数据库没有被更新。
【问题讨论】:
-
您是否处于正在回滚的事务中?