C#MS Access oledbcommand.executeNonQuery UPDATE没有错误,没有更改

本文关键字:有错误 C#MS oledbcommand executeNonQuery UPDATE Access | 更新日期: 2023-09-27 18:29:27

我正在尝试使用以下脚本更新MS Access数据库中的值。

我已经验证了生成的查询是否有效,如果我在MS Access中输入它,它是否有效。

此外,我还验证了oledbcommand.executeOnQuery()返回了应该修改的正确行数。

最后,据我所知,我没有收到任何错误。

但是,当我在运行代码后检查数据库时,没有任何更改。有人知道为什么会这样吗?

我还有其他从数据库中检索数据的函数,这些函数使用oledb命令运行良好。然而,我无法让它修改数据库。

请注意,我知道这个脚本不能防止注入,但这超出了这个问题的范围。我只是想学习如何更新数据库。

void IDatabase.UpdateRecordValue(string table, string updateColumn, string updateValue, string lookUpColumn, string lookUpValue)
{
       connection.Open();
       OleDbCommand cmdUpdate = new OleDbCommand();
       string sqlQuery = "UPDATE [" + table + "] " +
                         "SET [" + table + "].[" + updateColumn + "] = '" + updateValue + "' " +
                         "WHERE [" + table + "].[" + lookUpColumn + "] = '" + lookUpValue + "';";
       cmdUpdate.CommandText = sqlQuery;
       cmdUpdate.CommandType = CommandType.Text;
       cmdUpdate.Connection = connection;
       cmdUpdate.ExecuteNonQuery();
       connection.Close();
}

编辑:我的连接字符串如下,数据库上没有密码:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};"

EDIT以下是我尝试使用的一个实际查询示例

UPDATE [Rooms] 
SET [Rooms].[Main Space Category] = '5'
WHERE [Rooms].[Number] = '100';

C#MS Access oledbcommand.executeNonQuery UPDATE没有错误,没有更改

当您的代码执行此UPDATE时,不会出现错误,并且cmdUpdate.ExecuteNonQuery()按预期返回1。

UPDATE [Rooms] 
SET [Rooms].[Main Space Category] = '5'
WHERE [Rooms].[Number] = '100';

然而,你报告数据库实际上并没有得到更新。进一步调查这一点。从执行UPDATE时使用的相同OleDB连接对象中尝试此SELECT

SELECT [Rooms].[Main Space Category]
FROM [Rooms]
WHERE [Rooms].[Number] = '100';

要获得额外的度量值,请双击连接对象的ConnectionString属性中的"数据源"。

Console.WriteLine(connection.ConnectionString)