2017-10-08 5 views
-1

私はデータベースに完全に新しいものが必要です。サーバーとデータベースを作成しました。このコードは、メインフォームへのアクセスを与える前にデータベースから検証するように、 がこのエラーを出しています: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-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

ああ!伝えてくれてありがとう:) –

関連する問題