2012-12-26 90 views
0

我做了一些更多的研究,並提出了其他的東西。但是,這次消息框顯示pwd已被更改,但是當我刷新數據庫中的頁面時並未更改。下面的代碼:SQL服務器連接分貝

SqlConnection sqlconn = new SqlConnection(); 

sqlconn.ConnectionString = @" ";   
sqlconn.Open(); 
string empCode = comboEmpCode.Text; 
string oldPwd = txtOldPwd.Text; 
string newPwd = txtNewPwd.Text; 
string confirmPwd = txtConNewPwd.Text; 
string sqlquery = "UPDATE [Employee] SET [email protected] where [email protected]"; 
SqlCommand cmd = new SqlCommand(sqlquery, sqlconn); 
cmd.Parameters.AddWithValue("@newpass", txtNewPwd.Text); 
cmd.Parameters.AddWithValue("@empcode", comboEmpCode.Text); 
cmd.Parameters.AddWithValue("@oldPwd", txtOldPwd.Text); 
cmd.Connection = sqlconn; 
cmd.ExecuteNonQuery(); 
SqlDataReader reader = null; 
reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    if ((txtNewPwd.Text == reader["newPwd"].ToString()) & (txtConNewPwd.Text == (reader["confirmPwd"].ToString()))) { } 
} 
MessageBox.Show("Password was changed Successfully!", "Password Change", MessageBoxButtons.OK, MessageBoxIcon.Information); 
this.Close(); 
+4

你確實有一個ConnectionString或者你在代碼中傳遞@「」嗎? – malkassem

+0

你是否在任何地方使用'TransactionScope'?或者在任何地方的交易?這些可能會回滾。 – Oded

+1

如果你沒有在查詢中使用它,爲什麼你有'@ oldPwd'參數? 「ExecuteReader」是什麼?那不會返回任何東西。 – Oded

回答

2

看看這個方法返回一個true,如果更新成功和錯誤,如果它不成功,我添加了消息框故障期間提供一點點清晰。另外,我將你的SQLConnection和SQLCommand對象封裝在Using語句中,當你完成它們時,它們應該很好地處理這些對象。

public bool ChangePassword(string empCode, string newPassword, string oldPassword) 
{ 
    string connectionString = "@<Enter your Connection String Here>"; 

    string sql = "UPDATE [Employee] SET [email protected] where [email protected]"; 

    if (oldPassword != newPassword) 
    { 
     try 
     { 
      using (SqlConnection conn = new SqlConnection(connectionString)) 
      { 
       using (SqlCommand cmd = new SqlCommand(sql, conn)) 
       { 
        conn.Open(); 
        cmd.Parameters.AddWithValue("@newpass", newPassword); 
        cmd.Parameters.AddWithValue("@empcode", empCode); 
        cmd.ExecuteNonQuery(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(string.Format("{0}-{1}", ex.Message, ex.InnerException)); 
      return false; 
     } 
     return true; 
    } 
    else 
    { 
     MessageBox.Show(string.Format("Your New password {0}, can not be the same as the old password {1}. Please try again.", newPassword, oldPassword)); 
     return false; 
    } 
} 
+0

我試過了,它沒有工作。我不斷點擊'更改密碼'按鈕,但沒有任何工作..我也改變了comboEmpCode.Text在我的代碼comboEmpCode.SelectedItem,因爲它的組合框,但我得到了錯誤消息ABT參數化查詢。此外,組合框並未顯示員工代碼,但我將它們限制在此範圍內。另一件事我也得到了關於我的'私人無效'功能的錯誤信息,我插入你的代碼後。 – GerryD

+0

我會嘗試硬編碼變量,以查看代碼破壞的位置,然後從那裏開始工作。 –