2016-11-04 1 views
0

로컬 SQL 서버 데이터베이스를 데이터 소스로 사용하여 올바르게 실행되고있는 비주얼 스튜디오 프로젝트를 만들고 있습니다.로컬 SQL 서버 데이터베이스가있는 Visual Studio 로그인 페이지

프로젝트의 로그인 양식을 만들어야합니다.

양식에 사용자 이름 텍스트 상자와 암호 텍스트 상자가 있으며 사용자가 세부 정보를 입력 한 다음 '로그인'버튼을 누르면 select sql 문을 실행해야합니다.

어떻게해야합니까?

내가 시도한 코드는 다음과 같습니다. "SqlDataReader dr = cmd.ExecuteReader();"라는 줄에 NullReferenceException이 발생합니다.

nullreferenceexception을 어떻게 해결합니까?

감사합니다.

private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       SqlConnection con = new SqlConnection(); 
       con.ConnectionString = "Data Source=MARKO-PC\\SQLEXPRESS;Initial  Catalog=IS2B_G8_FundMeDB;Integrated Security=True"; 
       con.Open(); 

       String sql = "Select * from APPLICANT where  applicant_ID_passport [email protected] AND password = @password"; 
       SqlCommand cmd = new SqlCommand(sql, con); 
       cmd.Parameters.Add(new SqlParameter("@user", txtUserName.Text)); 
       cmd.Parameters.Add(new SqlParameter("@password",  txtPassword.Text)); 
       SqlDataReader dr = cmd.ExecuteReader(); 
       if (dr.HasRows == true) 
       { 
        MessageBox.Show("Login Successful"); 
       } 
       else 
       { 
        MessageBox.Show("Login Failed"); 
       } 
      } 
      catch (SqlException sqle) 
      { 
       MessageBox.Show("Sql Exception"); 

      } 


     } 
+0

유사한 문제/용액 [여기 (http://stackoverflow.com/questions/40347457/what-is-wrong-with-my-c-sharp-login-code/ 사용해 40348686 # 40348686). – IMCI

답변

0

ADO.Net, 특히 SQLCommand 클래스를 사용하려면 몇 가지 조사를 수행해야합니다.

그러나 SQL 인젝션을 열 때 위와 같은 인라인 SQL 문을 사용하지 마십시오. paramaterised 쿼리, 저장 프로 시저 또는 LINQ to SQL을 사용하십시오.

+0

크리스토퍼가 위에서 말한 것을 분명히해야합니다. 그러나 그 이상의 경우 신청자의 수를 선택하는 것이 좋으며 0보다 큰 경우 그 수가 존재합니다. –

+0

정말 고마워요! 나는 지금까지 해본 코드로 질문을 편집하고있다. 나는 이제 질문을 업데이트 할 다른 문제가있다. –

+0

해결 했습니까? 나는 당신이 얻는 nullreference에 관해 확신 할 수 없다. 나는 결코 데이터 검색을 위해 실행 리더를 사용한 적이 없다. 난 항상 com.ExecuteNonQuery() 삽입, 업데이트 및 삭제 및 데이터를 검색하는 데 사용되는 경우 쿼리를 단일 값을 반환하는 경우 executeScalar 사용됩니다. 데이터 집합을 검색하는 경우 SqlDataAdapter와 데이터 테이블을 사용하여 데이터를 가져옵니다. – ThatChris

1

string struser = txtUserName.Text; 
string strpwd = txtPassword.Text; 

String sql = "Select * from APPLICANT where applicant_ID_passport=" + struser + " AND password = " + strpwd +""; 
      SqlCommand cmd = new SqlCommand(sql, con); 
      SqlDataReader dr = cmd.ExecuteReader(); 
관련 문제