Форма входа в стиле Sql 3layered
Я пытаюсь сделать приличную форму входа для моего приложения с помощью Sql server management studio. Я должен сделать это 3 слоя.
Я думаю, что они оба правильны, в моей основной форме у меня есть 2 txtboxes и кнопка, однако я понятия не имею, как соединить одно и другое, что, когда я ввожу имя пользователя и pw, они проверяют его с базой данных, чтобы узнать, верны ли оба,
пока что я получил:
public class UsersDB
{
public static Users GetUsers(string username, string password)
{
SqlConnection conn = QuizzesDB.GetConnection();
Users user = new Users();
string selectStatement =
"SElECT * " +
"FROM Users" +
"WHERE User_Name = @User_Name" +
"AND Password = @Password";
SqlCommand selectCommand = new SqlCommand(selectStatement, conn);
selectCommand.Parameters.AddWithValue("@User_Name", username);
selectCommand.Parameters.AddWithValue("@Password", password);
try
{
conn.Open();
SqlDataReader reader = selectCommand.ExecuteReader();
while (reader.Read())
{
user.username = reader["User_Name"].ToString();
user.password = reader["Password"].ToString();
}
reader.Close();
}
catch (SqlException ex)
{
throw ex;
}
finally
{
conn.Close();
}
return user;
}
}
Класс, где я получаю информацию из моей базы данных.
второй класс
public class Users
{
private string cUsername;
private string cPassword;
public Users() { }
public string username
{
get { return cUsername; }
set { cUsername = value; }
}
public string password
{
get { return cPassword; }
set { cPassword = value; }
}
}
я пробовал что-то вроде этого: но я всегда получаю сообщение об ошибке "Неверный синтаксис рядом с '='".
private void btnLogin_Click(object sender, EventArgs e)
{
string userName = txtUsername.Text;
string password = txtPassword.Text;
Users user = new Users();
user = UsersDB.GetUsers(userName, password);
try
{
user = UsersDB.GetUsers(userName, password);
if (user == null)
{
MessageBox.Show("wrong username or password", "Login");
}
else
{
MessageBox.Show("login succesvol", "Login");
}
}
catch (Exception ex){
throw ex;
}
}
1 ответ
В дополнение к плохому стилю кодирования у вас есть небольшая проблема в вашем запросе SQL:
string selectStatement =
"SElECT * " +
"FROM Users" + // <-- you need an space before "
"WHERE User_Name = @User_Name" + // <-- also here
"AND Password = @Password";
Почему бы не использовать однострочный запрос?
string selectStatement =
"SElECT * FROM Users WHERE User_Name = @User_Name AND Password = @Password";
И если вам действительно нужен многострочный запрос, почему бы не использовать дословные строки?
string selectStatement = @"
SElECT *
FROM Users
WHERE User_Name = @User_Name
AND Password = @Password";