註冊寫入數據庫成功,但登錄時密碼比對失敗;註釋密碼判斷則能登錄。
數據庫中 PassWord 字段定義為 char(n) 或 nchar(n),**定長類型會在存儲時右側填充空格**至指定長度。讀取時 myReader["PassWord"].ToString() 包含尾部空格,與用戶輸入的無空格密碼不匹配。
varchar(n) / nvarchar(n),避免空格填充。string dbPwd = myReader["PassWord"].ToString().Trim();
if (dbPwd == password) { success = true; }
SqlCommand cmd = new SqlCommand("SELECT PassWord FROM userinfo WHERE UserName=@u", conn);
cmd.Parameters.AddWithValue("@u", username);
nvarchar 存儲可變長文本。