2013-03-07 3 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 오류를 얻고있다 ... 누구든지 나를 도울 수 있습니다? 당신은 전에 텍스트 상자 텍스트의 '+'표시를 잃었다

+0

당신은 당신의 문자열의 일부 사이의'+'문자가 누락되었습니다. ' "blah"+ textBox1.text + "blah"+ textBox2.Text + "blah"'. –

+2

당신의 현재 SQL 문은 또한 SQL 삽입에 취약합니다. 매개 변수화를 사용해보십시오. http://www.dotnetperls.com/sqlparameter – Richard

+1

Ctrl + K, D를 사용하여 문서의 서식을 지정하는 것이 좋습니다. –

답변

0

텍스트 상자의 텍스트를 읽기 전에 다음과 같은

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

오류

http://i.stack.imgur.com/rGCbZ.jpg 목록입니다.

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을 피하려고

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

하고 당신은 password을 맞춤법이 틀린해야 귀하의 질문에.

하지만 실제로 이것을 스크랩하고 parameterized queries을 사용해야합니다. SQL injection attacks

1

정답은 이미 주어졌지만 텍스트 상자의 내용을 SQL 명령에 직접 주입하여 큰 실수를하고 싶습니다. 이것은 문자 그대로 DB 전체를 파기 할 수있는 SQL Injection 공격에 대해 열어 둡니다.

항상이 문제를 방지하려면 매개 변수를 사용하십시오.

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