2013-02-09 3 views
0

Я пытаюсь создать приличную форму входа для своего приложения, используя студию управления сервером Sql. Я должен сделать это на 3 слоя.Форма входа с использованием стиля Sql 3layered

Я думаю, что они оба правильные, в моей основной форме я получил 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; 
     }   
    } 
+2

И ваш вопрос, ...? –

+0

Казалось бы, ваш вопрос был прерван средним предложением. – PhoenixReborn

ответ

0

В дополнении к плохому стилю кодирования, то есть небольшая проблема в вашем 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"; 

И если вам действительно нужно многострочный запрос, почему бы не использовать verbatim strings?

string selectStatement = @" 
    SElECT * 
    FROM Users 
    WHERE User_Name = @User_Name 
    AND Password = @Password";