2017-10-08 1 views
-1

일부 도움이 필요합니다. 데이터베이스에 완전히 새로운 것이므로 지금 서버와 데이터베이스를 만들어서 C# 코드를 확인하여 주 양식에 액세스하기 전에 데이터베이스에서 확인하십시오. 이 오류 : System.Data.SqlClient.SqlException : ''tbl_LoginInfo '근처의 구문이 잘못되었습니다.'System.Data.SqlClient.SqlException : 'tbl_LoginInfo (내 코드에만 해당) 근처의 구문이 올바르지 않음

setting up table values1

setting up table values2

내 코드 :

private void Login_Button_Click(object sender, EventArgs e) 
    { 
     SqlConnection newconnect = new SqlConnection(@"Data Source=DESKTOP-3DH5S38\HR_SERVER;Initial Catalog=BMS_PRO_DB;Integrated Security=True"); 
     string query = "Select * tbl_LoginInfo where Username = '" + UserName_Textbox.Text.Trim()+ "'and Password = "+Password_Textbox.Text.Trim(); 
     SqlDataAdapter dataAdapter = new SqlDataAdapter(query, newconnect); 
     DataTable dataTable = new DataTable(); 
     dataAdapter.Fill(dataTable); 
     if (dataTable.Rows.Count==1) 
     { 
      this.Hide(); 
      MainForm mainForm = new MainForm(); 
      mainForm.ShowDialog(); 
      this.Close(); 
     } 

     else 
     { 
      MessageBox.Show("Check Username/Password !"); 
     } 
    } 
+5

'SQL'에서 '보낸 사람'을 잊어 버렸습니다 ;-)? – Reno

+2

암호 앞에 공백이있을뿐만 아니라 아마도 작은 따옴표 묶음이 나옵니다. 사기. 문자열을 연결하여 sql 명령을 작성하지만 매개 변수화 된 쿼리를 사용하지 마십시오. – Steve

+2

매개 변수화 된 쿼리는 단순한 오타가 아닌 SQL 주입과 관련된 심각한 문제를 방지합니다. 유명한 [Bobby Tables] (https://stackoverflow.com/)를 참조하십시오. 질문/332365/how-does-the-sql-injection-from-the-bobby-tables-xkcd-comic-work) – Steve

답변

0

나는이 내 코드를 변경할 지금은 완벽하게 작동합니다 :

SqlConnection connection = new SqlConnection("server=DESKTOP-3DH5S38\\HR_SERVER;database=BMS_PRO_DB;Integrated Security =true"); 

SqlCommand sqlCommand = new SqlCommand("Select * From tbl_LoginInfo where [email protected] and [email protected]", connection); 
connection.Open(); 

sqlCommand.Parameters.AddWithValue("@user", UserName_Textbox.Text); 
sqlCommand.Parameters.AddWithValue("@password", Password_Textbox.Text); 

SqlDataReader dataReader = sqlCommand.ExecuteReader(); 

if (dataReader.HasRows == true) 
{ 
    this.Hide(); 

    MainForm mainForm = new MainForm(); 
    mainForm.ShowDialog(); 

    this.Close(); 
} 
else 
{ 
    MessageBox.Show("Check Username/Password !"); 
} 

내가 아직도 모르겠어요 그곳의 문제.

+0

최초의 큰 차이점은 원래 문제를 해결 한 'Select * From tbl_LoginInfo'와 이전'Select * tbl_LoginInfo'입니다. –

+0

오! 말하는 주셔서 감사합니다 :) –

관련 문제