2013-03-07 104 views
0

C#代碼:C#登錄頁面SQL錯誤

namespace WpfApplication22 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
      } 

      private void button1_Click(object sender, EventArgs e) 
      { 


       SqlConnection conn = new SqlConnection(@"data source=(local);database=Aukcija;integrated security=true;"); 
       SqlCommand cmd = new SqlCommand ("Select * from Users where username='"textBox1.Text +"' and pasword= '"textBox2.Text +"' ", conn); 
       conn.Open(); 

    } 
      } 
     } 

什麼是錯,我收到11個錯誤...誰能幫幫我?錯誤的

http://i.stack.imgur.com/rGCbZ.jpg列表

+0

你缺少你的一些字符串之間的'+'字符。 '「Blah」+ textBox1.Text +「blah」+ textBox2.Text +「blah」'。 – 2013-03-07 14:21:14

+2

您當前的SQL語句也容易出現SQL注入,請考慮使用參數化。 http://www.dotnetperls.com/sqlparameter – Richard 2013-03-07 14:22:09

+1

考慮使用Ctrl + K,D來設置文檔的格式。 – 2013-03-07 14:23:49

回答

0

應該

SqlCommand cmd = new SqlCommand (
"Select * from Users where username='" + textBox1.Text + "' and password= '" + textBox2.Text + "'", conn); 

你想用類似下面的

SqlCommand.CommandText = "SELECT * FROM tblTable WHERE TableID = @Parameter"; 
SqlCommand.Parameters.Add(new SqlParameter("@Parameter", parameterValue)); 
1

你已經失去了之前的文本框文本的「+」號。

SqlCommand cmd = new SqlCommand ("Select * from Users where username='" + textBox1.Text +"' and pasword= '" + textBox2.Text + "' ", conn); 

但是你最好在這種情況下使用命令參數。

1

SqlCommand cmd = new SqlCommand("Select * from Users where username='" + textBox1.Text + "' and password= '" + textBox2.Text + "' ", conn);

你失蹤+標誌,以免SQL injection attacks閱讀文本框中的文本之前,你拼錯password在你的查詢中。

但是,你應該真的取消這個並使用parameterized queries來代替。你讓自己容易受到影響SQL injection attacks

1

我想說的是已經給出了正確的答案,但是通過將文本框的內容直接注入到SQL命令中也會造成巨大的錯誤。這使得它開放SQL注入攻擊,可以從字面上摧毀你的整個數據庫。

總是使用參數來避免這個問題。

SqlConnection conn = new SqlConnection(@"data source=(local);database=Aukcija;integrated security=true;"); 
       SqlCommand cmd = new SqlCommand ("Select * from Users where [email protected] and [email protected] ", conn); 
cmd .Parameters.AddWithValue("username", textBox1.Text); 
cmd .Parameters.AddWithValue("password", textBox2.Text); 
       conn.Open(); 

在這裏閱讀更多:

http://en.wikipedia.org/wiki/SQL_injection