开发者

updating a row gives error Operation must use an updateable query

开发者 https://www.devze.com 2023-03-21 19:30 出处:网络
I\'m getting this error when I\'m trying to update a record: ERROR [HY000] [Mic开发者_C百科rosoft][ODBC Microsoft Access Driver]

I'm getting this error when I'm trying to update a record:

ERROR [HY000] [Mic开发者_C百科rosoft][ODBC Microsoft Access Driver]

Operation must use an updateable query

However when I add a new record, it would add just fine.

I did some searching and found out that the problem is because The ASP.NET worker process does not have permission to update the database. But how am I being able to insert a new record (Isn't inserting updating the database!) but not update (set a record to a different value).

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);
}


You will often get that error if you don't have a primary key declared on that table.

Your code is also pretty ugly, at the very least you should be using a parameterized query:

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

And I hope this isn't anything more than a toy/demo app -- storing passwords in the clear is bad. Storing passwords in access in the clear is a double bad.

0

精彩评论

暂无评论...
验证码 换一张
取 消