2014-10-03 2 views
0

Здесь я поставил код ... этот код связан с системой входа. здесь у меня есть какая-то проблема ... когда я ввожу правильный Идентификатор пользователя и пароль или даже неправильный идентификатор пользователя и пароль оба авторизованы и отображают сообщение успешно войти ... как это может быть ... я не понимаю понять, почему SQLConnection дать разрешение на неизвестный пользователь, который не находится в базе данных ....SQL-база данных Соединение не работает должным образом

увидеть код ....

string SQlcons = "Data Source=(LocalDB)\v11.0;AttachDbFilename='|DataDirectory|Database1.mdf';Integrated Security=True" 


private void button1_Click(object sender, EventArgs e) 
    { 
     String UN = txtUsername.Text; 
     String PW = txtPassword.Text; 
     string loginstr = "SELECT * FROM Login Where UserName = '" + UN + "' and Password = '" + PW + "'"; 

     SQLconn = new SqlConnection(SQLcons); 
     SQLconn.Open(); 
     try 
     { 
      SqlCommand cmd = new SqlCommand(loginstr, SQLconn); 
      cmd.ExecuteNonQuery(); 
      MessageBox.Show("Welcome " + txtUsername.Text); 
      Records rcd = new Records(); 
      this.Hide(); 
      rcd.ShowDialog(); 
     } 
     catch 
     { 
      MessageBox.Show("Enter Correct Password and ID :("); 
      txtUsername.Text = ""; 
      txtPassword.Text = ""; 
     } 
     SQLconn.Close(); 
    } 

Plz ... дайте решение и предложение мне ..

+2

много вещей .. Сначала вы выполняете свой запрос, но ничего не делаете из возвращаемого значения, во-вторых, не конкатенируйте строку для формирования запроса, вы открыты для SQL Injection, также смотрите в 'Command.ExecuteScalar', так как вы только если результаты возвращены или нет. – Habib

+0

Можете ли вы немного отточить свою проблему, просто ли это не связано с вашей базой данных или проблемой с вашим запросом в базе данных? – Greg

+0

Чтобы уточнить, что сказал Хабиб, попробуйте использовать пароль ''; Drop table Login; - 'и посмотреть, что произойдет. –

ответ

1
int result = cmd.ExecuteNonQuery(); 
if(result == 0) 
{ 
    //wrong login info, 
} else { 
    MessageBox.Show("Login Success"); 
} 

Функция ExecuteScalar() возвращает количество строк с заданной строкой SQL. В вашем случае вы должны проверить возвращаемое целочисленное значение из ExecuteScalar(). Если результат равен 0, пользователь вводит неверную информацию для входа в систему. Если результат равен 1, пользователь вводит правильную информацию.

+0

Просто для пояснения, [ExecuteScalar] (http://msdn.microsoft .com/en-us/library/system.data.sqlclient.sqlcommand.executescalar (v = vs.110) .aspx) возвращает первый столбец первой строки запроса. Ваш пример кода по-прежнему вызывает неправильную функцию. – LarsTech

+0

Выполнение Scalar ничего не возвращает ... даже у меня были данные в таблице .. –

+0

Может быть, проблема с подключением базы данных ... –

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