2010-12-10 5 views
0

Когда я нажимаю кнопку входа в систему, он выполняет код в else вместо if.новичок при первой регистрации. Требуется помощь

Может кто-нибудь помочь мне с тем, что мне не хватает?

Вот мой код:

SqlConnection cn = new SqlConnection(@"Data Source=COMPAQ-PC-PC\SQLEXPRESS;Initial Catalog=Gym;Integrated Security=True"); 
     string SQL = "select username,password from login where username like '" + tbUserName.Text + "' and password like '" + tbPassword.Text + "'"; 
     SqlCommand cmd = new SqlCommand(SQL, cn); 
     if (cn.State == ConnectionState.Closed) 
     { 
      cn.Open(); 
     } 
     int roweffect = cmd.ExecuteNonQuery(); 
     if (roweffect > 0) 
     { 
      Form2 login_Success = new Form2(); 
      login_Success.ShowDialog(); 
     } 
     else 
     { 
      MessageBox.Show("Please provide the correct username and password", "Invalaid Username OR Password", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
     } 

    } 
+0

roweffect переменный получает значение -1 .. я не знаю, почему – 2010-12-10 09:57:13

+1

Избранное заявление в ExecuteNonQuery вызова всегда возвращает -1 потому, что он Не влияет на любые строки. – 2010-12-10 09:58:12

ответ

1

попробуйте использовать Using заявление, и ExecuteScalar, вероятно, лучше

using (SqlConnection cn = new SqlConnection(
      @"Data Source=COMPAQ-PC-PC\SQLEXPRESS;Initial Catalog=Gym;Integrated Security=True")) 
{ 
    SqlCommand cmd = new SqlCommand(
     string.Format(@"select username,password 
         from login where username like '{0}' 
         and password like '{1}'", 
          tbUserName.Text, tbPassword.Text), cn); 
    cn.Open(); 
    if (cmd.ExecuteScalar() == null) 
     MessageBox.Show("Please provide the correct username and password", 
      "Invalaid Username OR Password", 
      MessageBoxButtons.OK, MessageBoxIcon.Warning); 
    else 
    { 
     Form2 login_Success = new Form2(); 
     login_Success.ShowDialog(); 
    } 
} 
2

ExecuteNonQuery не возвращает число строк для ЗЕЬЕСТА. ExecuteNonQuery

Для UPDATE, INSERT и DELETE заявления, возвращаемое значение является число строк, затронутых командой . Когда триггер существует в таблице быть вставлено или обновлен, то возвращаемого значение включает в себя количество строк, затронутых как вставки или операции обновления, а количество строк, затронутых триггера или триггеров. Для всех остальных типов операторов возвращаемое значение равно -1. Если происходит откат, возвращаемое значение равно также -1.

Вместо этого вы можете попробовать использовать ExecuteScalar и проверить, равен ли результат.

Смежные вопросы