操作必须使用可更新查询



当我试图更新记录时,我得到这个错误:

ERROR [HY000] [Microsoft][ODBC Microsoft Access Driver]

操作必须使用可更新查询

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

我做了一些搜索,发现问题是由于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);
}

如果没有在表上声明主键,通常会出现这个错误。

你的代码也很丑,至少你应该使用一个参数化的查询:

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"];

我希望这不仅仅是一个玩具/演示应用程序-在clear中存储密码是不好的。