#c# #sql #visual-studio-2008 #sql-server-2005
#c# #sql #visual-studio-2008 #sql-server-2005
Вопрос:
У меня возникли некоторые проблемы с моим мини-проектом.
Я должен проверить, соответствуют ли имя и пароль в TextBox
текстовом поле базе данных SQL. Если пароль и имя совпадают с базой данных, пользователь будет переведен в другую форму. В противном случае отобразится сообщение об ошибке.
Прямо сейчас. Я не могу определить, соответствуют ли имя и пароль, введенные в TextBox
тексте, базе данных SQL.
Я не использую привязку данных для этого проекта; это просто обычное приложение базы данных.
private void button2_Click(object sender, EventArgs e)
{
if (PasswordtextBox1.Text == "")
{
MessageBox.Show("Error! Enter password !", "Warning");
}
else
{
if (StaffUserIDcomboBox1.Text == "")
{
MessageBox.Show("Warning!");
}
string strSql = "Select UserLogin From UserLogin Where UserLoginID=" int.Parse(StaffUserIDcomboBox1.Text);
UserClass1 userClass = new UserClass1();
SqlDataReader UserLogin_ID = userClass.GetUserID();
userClass.executeDataCommand(strSql);
int rowCount = 0;
if (UserLogin_ID.HasRows)
{
while (UserLogin_ID.Read())
{
rowCount ;
}
DisplayLabel.Text = rowCount.ToString();
UserLogin_ID.Close();
//pass value to form2 if valid
string userid = StaffUserIDcomboBox1.Text;
parent.setCurentUser(userid);
}
else
{
MessageBox.Show("No Results Found! Please Try again!");
}
}
}
Комментарии:
1. Какую ошибку вы получаете сейчас?
2. Возьмите книгу по программированию для начинающих. Прочитайте это, изучите программирование. Вернитесь, когда поймете, что «я получил ошибку» — это плохое утверждение, и мы ожидаем, что вы, по крайней мере, потратите столько мозговых усилий на свою проблему, чтобы сообщить нам, КАКУЮ ОШИБКУ ВЫ ПОЛУЧАЕТЕ. «Это не работает» не совсем полезно. Stackoverflow не является заменой курса программирования. И обычные проекты используют привязку данных. И MVC (контроллер представления модели).
3. @Kangkan Ну, нет никакой ошибки. Он просто отлаживался как обычно, но проверял, соответствует ли пароль базе данных или нет. И просто просто пропустите и перейдите к другим формам.
4. @TomTom Извините за мою плохую формулировку. Проблема в том, что ошибка не указана, даже если пароль не соответствует базе данных, он все равно перейдет к следующей форме. Я использую TDBMS (Relatinal Database Management System)
Ответ №1:
Я не смог найти ни одного кода, который проверяет соответствие пароля в базе данных. Как правило, у вас должен быть метод, который проверяет пользователя вместе с паролем, например
private bool ValidateUser(String UserName, string HashedPassword)
{
//Use datareader etc to query
// SQL Query
string strSql = "Select UserLogin From UserLogin Where UserLoginID=" UserName " UserPassword = " HashedPassword;
//check for returned rows count
//return true if found
}
Комментарии:
1. И когда вы делаете это, всеми средствами ИЗБЕГАЙТЕ простого объединения ваших SQL-операторов, подобных этому!! Это открытое приглашение для атак с использованием SQL-инъекций — используйте параметризованные запросы !! ВСЕГДА — без исключений
Ответ №2:
Поставьте ТОЧКУ; после messsagebox.показать код.