2009-06-17 2 views
1

확인 감사 도와하지만 지금은 내가이 상태 를 가진 동일한 테이블에서 선택합니다쿼리 문을

if (byNametextBox.Text != null && byBuildingtextBox.Text !=null && seTextBoxPublic1.Text == null) 
{ 
    da = new SqlDataAdapter("SELECT * FROM Students WHERE name='" +  byNametextBox.Text +"and [buil-id]='"+byBuildingtextBox.Text+ "'", MyConn); 

} 

또한 올바른이 문을하시기 바랍니다 싶어 또 다른 문제를 가지고있는 모든 alot을 다른 SQL

+11

이렇게 쿼리 문자열을 작성하지 * 않습니다. 매개 변수가있는 쿼리를 사용하십시오. 그렇지 않으면 SQL 주입 공격에 대해 크게 열리게됩니다. –

답변

1

SQL 쿼리에서 매개 변수를 사용하면 보안이 향상됩니다.

1

가 귀하의 질문에 대답하기 위해, 그러나, 당신의 코드는 SQL을 작성

SELECT * FROM Students WHERE name='NAMEand [buil-id]='ID' 

SELECT * FROM Students WHERE name='NAME' and [buil-id]='ID' 
2

사용하십시오 매개 변수를해야합니다! 어떤 이유로 당신이 그들에 대해 경우,이 작업을해야합니다 :

string strStatement = String.Format("SELECT * FROM Students WHERE [name] = '{0}' AND [buil-id] = '{1}'", byNametextBox.Text, byBuildingtextBox.Text); 
da = new SqlDataAdapter(strStatement, MyConn); 
+0

너무 감사합니다. –

+0

이것은 매개 변수가 아닙니다. 여전히 문자열을 만드는 중이며 거의 동일합니다. – Kobi

+0

예 Kobi,하지만 나는 그가 어떤 이유로 매개 변수를 사용한다고 말했듯이 내가 게시 한 코드가 작동합니다 (그의 소스 코드는 잘못 포맷되어 있고 그렇지 않을 것입니다). –

0

사용 parameterized 쿼리를 SQL 주입을 방지하기 위해, 또한 여기에 몇 가지 추가 코드는 DataTable을 채울합니다.

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Students WHERE name = @byName and [buil-id]= @byBuilding " , MyConn) 
          DataTable dt= new DataTable(); 
          da.SelectCommand.Parameters.AddWithValue("@byName", byNametextBox.Text); 
          da.SelectCommand.Parameters.AddWithValue("@byBuilding", byBuildingtextBox.Text); 
          da.Fill(dt);