есть ловушка, как войти? - PullRequest
0 голосов
/ 24 октября 2011
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)
        {

        }
    }

учитывая начало кода, который написан выше, я собираюсь войти в систему, используя id номер типа данных varchar (11) в базе данных sql, которую нужно было ввести в txtSnumber, ноКроме того, я не могу понять, как проверить, является ли введенный номер идентификатора правильным или нет, и если это правильно, информация, соответствующая этому введенному идентификатору, должна отображаться в соответствующих текстовых полях.пожалуйста, помогите мне, спасибо

Ответы [ 2 ]

5 голосов
/ 24 октября 2011

Ваш 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 голос
/ 24 октября 2011

Вы можете проверить это, используя 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.");

EDIT:

При вызове метода ExecuteReader () вы помещаете в него следующий аргумент:так что когда вы закрываете соединение, устройство чтения данных также автоматически закрывается.

SqlDataReader myReader = get.ExecuteReader(CommandBehavior.CloseConnection);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...