2013-02-09 3 views
0

SQL 서버 관리 스튜디오를 사용하여 내 응용 프로그램에 알맞은 로그인 양식을 만들려고합니다. 3 계층으로 처리해야합니다.Sql 3layered 스타일을 사용하는 로그인 양식

나는 그들이 내 주 형식으로 2 개의 txtboxes와 버튼을 가지고 있다고 생각하지만 둘 중 하나를 연결하는 방법을 모르지만 사용자 이름을 입력하고 볼 때 데이터베이스를 확인합니다. 둘 다 맞다면.

지금까지 내가 가지고 :

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";