2012-12-25 63 views
1

我是新來這個網站,也編程。我目前正在通過銷售點創建庫存系統。它使用模態和非模態形式。我的問題是,我正在處理change password對話框,該對話框必須連接到數據庫才能覆蓋密碼字段。我使用的數據庫是microsoft sql server management studio express。這是我迄今爲止的必要評論。請注意,在「設計」表單中,我有一個綁定到數據庫的組合框。我哪裏做錯了?在c#中創建一個sql連接#

private void ChangePwdButton_Click(object sender, EventArgs e) 
{ 
    SqlConnection sqlconn = new SqlConnection(); 
    sqlconn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Gerald- dean Martin\Documents\SQL Server Management Studio Express\Projects\BodyMates.mdf;Integrated Security=True;User Instance=True"; 
    sqlconn.Open(); 
    string oldpwd = txtOldPwd.Text; 
    string newpwd = txtNewPwd.Text; 
    string confirmNewPwd = txtConfirmNewPwd.Text; 
    string sqlquery = "UPDATE [Employee] SET [email protected] where [email protected]"; 
    SqlCommand cmd = new SqlCommand(sqlquery, sqlconn); 
    cmd.Parameters.AddWithValue("@newpass", txtConfirmNewPwd.Text); 
    cmd.Parameters.AddWithValue("@empcode", comboEmpCode.SelectedValue); 
    //cmd.Parameters.AddWithValue("@pwd", txtNewPwd.Text); 
    cmd.Connection = sqlconn; 
    cmd.ExecuteNonQuery(); 
    SqlDataReader dr = cmd.ExecuteReader();    
    while (dr.Read()) 
    { 
     if(txtOldPwd.Text == dr["pwd"].ToString() && (txtNewPwd.Text == txtConfirmNewPwd.Text)) 
     { 
      if (comboEmpCode.SelectedIndex == 0) 
      { 
       string query = "UPDATE [Employee] SET Pwd = '" + txtConfirmNewPwd.Text + "'"; 
      } 
     } 

     // if ((txtNewPwd.Text == dr["newpwd"].ToString()) & (txtConfirmNewPwd.Text == (dr["confirmNewPwd"].ToString()))) { } 
    } 
    // MessageBox.Show("Password was changed Successfully!", "Password Change", MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
+4

爲什麼你認爲你可以從一個更新命令來讀取? 'cmd.ExecuteNonQuery(); SqlDataReader dr = cmd.ExecuteReader();'。順便說一句,'cmd.Connection = sqlconn;'是多餘的。 –

+2

什麼具體不工作? – bmm6o

+0

@TimSchmelter特別是當你通過'new SqlCommand(sqlquery,sqlconn)':)創建命令時 –

回答

1

您可以使用ExecuteNonQuerycmd.ExecuteNonQuery();它返回int值。像這樣使用它;

int i = cmd.ExecuteNonQuery(); 

而且ExecuteReader()也是這樣工作的;

SqlDataReader reader = command.ExecuteReader(); 
     while (reader.Read()) 
     { 
      Console.WriteLine(String.Format("{0}", reader[0])); 
     } 

您可以讀取返回數據的列。像第一列reader[0],第二列reader[1]

但在此之前,如果您是編程新手,您可以在Stackoverflow上找到很多書籍建議和有用的信息。檢查這些文章;

+3

+1用於指示他在底部的正確方向。乾杯! –

+0

@Soner,Maurice和lazyberezovsky,謝謝你的回覆。說實話,我不明白你的答覆,因爲我說我是新手。是否有任何書你可以推薦,我可以閱讀,肯定會揭示整個連接的事情,因爲我需要了解每條語句的含義。再次感謝。 – GerryD

+0

@GerryD對於C#和數據庫連接,我建議從新手到專業的C#2008數據庫看起來最適合你。看看[亞馬遜](http://www.amazon.com/Beginning-2008-Databases-Professional-Professionals/dp/1590599004/ref=sr_1_1?s=books&ie=UTF8&qid=1356545828&sr=1-1&keywords=Beginning+C 2008 + + +數據庫+從新手到+ +專業)。 –