更新行给出错误操作必须使用可更新查询

Posted

技术标签:

【中文标题】更新行给出错误操作必须使用可更新查询【英文标题】:updating a row gives error Operation must use an updateable query 【发布时间】:2011-07-21 13:14:14 【问题描述】:

我在尝试更新记录时收到此错误:

错误 [HY000] [Microsoft][ODBC Microsoft Access 驱动程序]

操作必须使用可更新的查询

但是,当我添加一条新记录时,它会添加得很好。

我做了一些搜索,发现问题是因为 ASP.NET 工作进程没有更新数据库的权限。但是我如何能够插入新记录(不是插入更新数据库!)但不能更新(将记录设置为不同的值)。

OdbcConnection DbConnection = new OdbcConnection("DSN=inv");
DbConnection.Open();

try

    string newPassword = password1.Text;
    OdbcCommand DbCommand = new OdbcCommand("UPDATE Users" + " SET [Password] = '" + newPassword + "'" + " Where Name = '" + Session["LoginId"] + "'" + ";", DbConnection);
    DbCommand.ExecuteNonQuery();
    Server.Transfer("Default.aspx", true);

【问题讨论】:

你有能力查看/编辑.mdb文件的文件权限吗? 【参考方案1】:

如果您没有在该表上声明主键,您通常会收到该错误。

您的代码也很丑陋,至少您应该使用参数化查询:

OdbcCommand DbCommand = new OdbcCommand("UPDATE Users SET [Password] = @Password Where Name = @Name", DbConnection);
var param = DbCommand.Parameters.Add("@Password", OdbcType.Text);
param.Value = passWord;
param = DbCommand.Parameters.Add("@Name", OdbcType.Text);
param.Value = Session["LoginId"];

我希望这只不过是一个玩具/演示应用程序——明文存储密码是不好的。将密码明文存储在访问权限中是双重错误。

【讨论】:

以上是关于更新行给出错误操作必须使用可更新查询的主要内容,如果未能解决你的问题,请参考以下文章

错误:“操作必须使用可更新的查询” - MS Access

Excel 数据到 Access DB - 获取:操作必须使用可更新查询错误

操作必须使用可更新查询/SQL - VBA

Paradox 插入数据操作必须使用可更新查询

操作必须使用可更新的查询。 (错误3073)Microsoft Access

访问数据库 - 操作必须使用可更新的查询。 (在本地工作正常)