有陷阱,如何登录?

时间:2011-10-24 05:03:39

标签: c# sql-server login

private void d_Load(object sender, EventArgs e)
    {

        string connstring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\it155.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        SqlConnection conn = new SqlConnection(connstring);
        try
        {
            conn.Open();

            string snumber = txtSnumber.Text;
            SqlCommand get = new SqlCommand(@"Select from IStudent where SNumber ='" + txtSnumber.Text + "'", conn);

        }
        catch (Exception)
        {

        }
    }

考虑到上面编写的代码的开始,我打算做的是能够使用sql数据库中的id号数据类型varchar(11)登录,该数据库将被输入txtSnumber但是除了我之外无法弄清楚如何检查输入的身份证号码是否正确,如果正确,则与该身份证号码相对应的信息应该显示在相应的文本框中。请帮帮我,谢谢

2 个答案:

答案 0 :(得分:5)

您的sql语句很容易出现SQL注入。像这样连接SQL是一种可怕的做法。而是做这样的事情:

string snumber = txtSnumber.Text;
SqlCommand get = new SqlCommand(@"Select from IStudent where SNumber =@User", conn);

get.Parameters.AddWithValue("@User",snumber);

现在,为了检查是否找到了记录,请执行以下操作:

using(IDataReader reader =  get.ExecuteReader())
{
       if (reader.HasRows)
       {
          //information correct. Do something
       }
}

答案 1 :(得分:1)

您可以使用DataReader()

进行检查
   SqlCommand get = new SqlCommand(@"Select from IStudent where SNumber ='" + txtSnumber.Text + "'", conn); 
   SqlDataReader myReader = get.ExecuteReader();
  if (myReader.HasRows)
  {
    MessageBox.Show("ID is valid");
    while (myReader.Read())
      //Do something here        
  }
  else
    MessageBox.Show("Given ID is Invalid.");

编辑:

在调用ExecuteReader()方法时,在其中放入以下参数,以便在关闭连接时,datareader也会自动关闭。

SqlDataReader myReader = get.ExecuteReader(CommandBehavior.CloseConnection);