[英]Why does the value not change in database after UPDATE statement?
以下子例程應該將數據庫中的文本更新為新的用戶輸入,但是,當我檢查數據庫時沒有任何改變?
private void UpdatePassword(string Username, string NewPassword)
{
string SQLStatement =
"UPDATE [Login Details] SET [PASSWORD] = @password WHERE [USERNAME] = @username";
OleDbConnection connString = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = TrigonometryToolDatabase.accdb");
OleDbCommand cmd = new OleDbCommand(SQLStatement, connString);
cmd.Parameters.AddWithValue("@username", Username);
cmd.Parameters.AddWithValue("@password", NewPassword);
connString.Open();
cmd.ExecuteNonQuery();
connString.Close();
}
MS Access / OleDB 中的參數是定位的 - 它們在名稱上不匹配(如 ADO.NET / SQL 服務器) - 但在查詢字符串中的 position 上。
你有
string SQLStatement =
"UPDATE [Login Details] SET [PASSWORD] = @password WHERE [USERNAME] = @username";
所以你傳入的第一個參數需要是密碼,用戶名是第二個。
但是,在您的代碼中,您正在以相反的方式進行操作:
cmd.Parameters.AddWithValue("@username", Username);
cmd.Parameters.AddWithValue("@password", NewPassword);
所以翻轉這兩行,你應該很好:
cmd.Parameters.AddWithValue("@password", NewPassword);
cmd.Parameters.AddWithValue("@username", Username);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.