我想通過我的C#Web應用程序更新Access數據庫,但我目前正在面臨WHERE語句中不更新記錄並且不返回任何錯誤的問題。C#OleDB更新語句不更新
我在嘗試更新文本字段,並且在我的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」,但是數據庫未更新。
你是否在一個正在回滾的事務中? – yaakov