2012-11-03 136 views
0

好吧,所以我有一個字符串問題。我不確定它的簡單而且剛剛被盯着它多少年,什麼都沒有,或者這是我無法避免的東西?C#SQL登錄 - 添加信息失敗

所以我想用C#登錄到SQL服務器。一旦登錄框出現,我將用戶名和密碼傳遞給連接類,並且登錄名爲Sucessful。

public void login(object sender, EventArgs e) 
    { 
     sqlconnect sql = new sqlconnect(); 

     sql.us = textBox1.Text; 
     sql.pas = textBox2.Text; 
      try 
      { 
       sql.GetSqlConnection(); 
       sql.myConnection.Open(); 
       label3.Text = "Connected"; 
       this.Hide(); 
       fronthyb.Show(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

所以,下面是我的連接類:

 private void button1_Click(object sender, EventArgs e) 
    { 

      sql.GetSqlConnection(); 

      SqlCommand cm = new SqlCommand("insert into dbo.Employee(FirstName, LastName, DoB, UserName, Email, Role, JobTitle, MemberOf) values (@FirstName, @LastName, @DoB, @UserName, @Email, @Role, @JobTitle, @MemberOf)", sql.myConnection); 
      cm.Parameters.AddWithValue("@FirstName", textBox2.Text); 
      cm.Parameters.AddWithValue("@LastName", textBox3.Text); 
      cm.Parameters.AddWithValue("@DoB", textBox5.Text); 
      sql.myConnection.Open(); 
      cm.ExecuteNonQuery(); 
      sql.myConnection.Close(); 
      this.Close(); 

我havnt有任何:

public class sqlconnect 
{ 
    public SqlConnection myConnection { get; set; } 
    public String us; 
    public String pas; 
    Settings1 set = new Settings1(); 


    public SqlConnection GetSqlConnection() 
    { 
     if (myConnection == null) 
      myConnection = new SqlConnection("user id="+(us)+"; password="+(pas)+";server="+(set.SelectServer)+";Trusted_Connection="+(set.SelectContype)+";database="+(set.SelectDataBase)+"; connection timeout="+(set.Condrop)+""); 

     return myConnection; 
    } 


} 

當我嘗試將信息添加到數據庫中的問題,現在棱但它仍在開發中,但程序崩潰,基本上說用戶不被允許。我測試了連接類中的字符串,當我登錄後調用它們時,它什麼也不返回。所以它似乎在某個點被替換爲「null」?我不確定。任何人都看到明顯的東西?對於長期的問題抱歉。謝謝。

+0

沒有例外它很難說出問題所在,也沒有提供所有的插入參數。儘量避免使用try/catch,特別是使用catch部分的MessageBox。 – CSharpie

回答

1

您在login方法中使用的變量sql對於該方法而言是本地的。

這意味着,命名爲您在button1_Click方法使用sql您創建的沒有到達的方法以外的對象,不管變量是不一樣的login方法,並沒有用戶名和在那裏設置的密碼。

1

似乎是一個範圍界定問題。在您的登錄處理程序中,您可以定義一個類型爲SqlConnect的本地變量。如果您有一個名爲「sql」的全局變量,它在button1_Click處理程序中被引用,它將不會設置用戶名/密碼屬性,因爲它是不同的實例。