我在尝试更新记录时收到此错误:
错误[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);
}
答案 0 :(得分:4)
如果您没有在该表上声明主键,则通常会收到该错误。
您的代码也非常丑陋,至少您应该使用参数化查询:
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"];
我希望这不仅仅是一个玩具/演示应用程序 - 明确存储密码是不好的。以明文形式存储访问密码是一个双坏的。