更新行给出错误操作必须使用可更新查询
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"];
我希望这只不过是一个玩具/演示应用程序——明文存储密码是不好的。将密码明文存储在访问权限中是双重错误。
【讨论】:
以上是关于更新行给出错误操作必须使用可更新查询的主要内容,如果未能解决你的问题,请参考以下文章
Excel 数据到 Access DB - 获取:操作必须使用可更新查询错误