2015-01-01 37 views
0

当我运行我的代码标签保持不变,但是当我调试它,我可以看到文本的变化,然后当它完成捉迷藏为什么我的标签留更改

public void getData(string a) 
{ 
    SqlConnection conn = new SqlConnection(@"Data Source=MASSI\FABERSERVER;Initial Catalog=Data.mdf;Integrated Security=True"); 
    conn.Open(); 
    SqlCommand command = new SqlCommand("Select UserID,UserName,Email FROM Login Where UserName= '" + a + "'", conn); 
    SqlDataReader reader = command.ExecuteReader(); 

    while (reader.Read()) 
    { 
     label1.Text = reader["UserID"].ToString(); 
     label2.Text = reader["UserName"].ToString(); 
     label3.Text = reader["Email"].ToString(); 
    } 

    conn.Close(); 
} 
+1

WebForms?的WinForms? WPF? –

+1

您可能仅在1行之后。在找到单行之后,您的While循环应该退出,并且还应该添加逻辑,以便在使用if(reader.HasRows)时找不到该行。这个链接讨论了一个更好的方法:http://stackoverflow.com/questions/7836517/enforce-only-single-row-returned-from-datareader但我想它有点高级。 – NoChance

+0

您的应用程序对SQL注入开放。改用参数化查询。 –

回答

0

就在变回情况下,试试这个:

public void getData(string a) { 
     SqlConnection conn = new SqlConnection(@"Data Source=MASSI\FABERSERVER;Initial Catalog=Data.mdf;Integrated Security=True"); 
     conn.Open(); 
     SqlCommand command = new SqlCommand("Select UserID,UserName,Email FROM Login Where UserName= '" + a + "'", conn); 
     SqlDataReader reader = command.ExecuteReader(); 

     string id, name, email; 

     while (reader.Read()) 
     { 
      id = reader["UserID"].ToString(); 
      name = reader["UserName"].ToString(); 
      email = reader["Email"].ToString(); 

     } 
     conn.Close(); 

     label1.Text = id; 
     label2.Text = name; 
     label3.Text = email; 
    } 
} 

希望它有帮助。

相关问题