簡體   English   中英

為什么 UPDATE 語句后數據庫中的值沒有變化?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM