[英]C# MS Access oledbcommand.executeNonQuery UPDATE no error, no change
[英]Issue in updating MS Access records using oledbcommand.executeNonQuery(), result not updating
我是第一次在這里發布查詢,因此,請忽略我的格式。
我正在嘗試使用update命令更新.accdb文件,但是oledbcommand.executeNonQuery()
結果為0
因此結果未在數據庫中更新。
雖然我沒有收到任何錯誤。
這是我在做什么。
string vsql = string.Format("UPDATE DefTask_List SET [Action]=@Action WHERE [SNo]=@SNo");
vcom.Parameters.AddWithValue("@SNo", row.Cells[0].Value.ToString());
vcom.Parameters.AddWithValue("@Action", comboBox1.Text);
OleDbCommand vcom = new OleDbCommand(vsql, vcon);
vcon.Open();
int k = vcom.ExecuteNonQuery();
vcom.Dispose();
vcon.Close();
請注意, SNo
是我的.accdb文件中的一個autonumber
,也使用與我插入和刪除數據相同的方式,但是效果很好。
OleDbCommand
不支持命名參數。 唯一的問題是他們的訂單。
OLE DB .NET Provider不支持用於傳遞參數的命名參數...
因此,將OleDbParameter對象添加到OleDbParameterCollection的順序必須直接對應於命令文本中參數的問號占位符的位置。
這就是為什么你的第一個@Action
中OleDbCommand
與匹配@SNo
在AddWithValue
和@SNo
與你相符@Action
在AddWithValue
。
由於您可能沒有這樣的數據,因此將沒有更新操作。
切換參數順序,並使用推薦的.Add
方法代替AddWithValue
。 可能會產生意外的結果。 讀;
還可以使用using
語句來處置OleDbConnection
和OleDbCommand
而不是手動調用.Dispose()
和.Close()
方法。
using(OleDbConnection vcon = new OleDbConnection(conString))
using(OleDbCommand vcom = vcon.CreateCommand())
{
vcom.CommandText = "UPDATE DefTask_List SET [Action]=@Action WHERE [SNo]=@SNo";
vcom.Parameters.Add("?", OleDbType.VarChar).Value = comboBox1.Text;
vcom.Parameters.Add("?", OleDbType.Integer).Value = (int)row.Cells[0].Value;
// I assume your column types are NVarchar2 and Int32
vcon.Open();
int k = vcom.ExecuteNonQuery();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.