2013-01-16 3 views
-1

이 코드는 vb.net을 사용하여 작성했지만 잘못된 결과를 낳습니다.SQL 문이 실제 결과를 반환하지 않았습니다.

sql = "SELECT * FROM Spec WHERE WheatType= '" & ddlType.SelectedValue & "' AND Category='1BK' AND Silo= '" & txtSilo.Text & "'" 

내가 Silo= '" & txtSilo.Text & "'을 제거하면 그것은 나에게 결과를 제공하지만 내가 원하는 싶지 않다. 어떤 생각을 고칠 수 있을까요?

+1

"잘못된"결과는 무엇입니까? "올바른"결과는 무엇입니까? 테이블 구조가 뭐니? –

+2

또한 잠재적으로 SQL 주입 가능 –

+0

'txtSilo.Text'를 확인하십시오. 텍스트를 원했습니까? 그리고'Silo' 문자열 유형입니까? –

답변

1

대소 문자를 구별하는 것일뿐입니다. 당신의 txtSilo.Text는 당신 대신 당신도 아마 트림한다

sql = "SELECT * FROM Spec WHERE WheatType= '" & ddlType.SelectedValue & "' AND Category='1BK' AND Silo LIKE '" & txtSilo.Text & "'" 

염두에 두어야 할 수있는 "레드"와 "빨간색"

말대로 사일로의 설정이 데이터베이스의 행을 말하도록 설정 될 수 있습니다 텍스트 필드의 공백 문자.

이런 종류의 코드는 SQL 주입 공격에 매우 개방적입니다. 프로덕션 응용 프로그램이 될 경우이 주제를 읽고이 중요한 보안 구멍을 수정하는 것이 좋습니다. 그렇지 않으면 누군가가 txtSilo 등으로 전달 된 올바른 값을 가진 테이블의 모든 행을 삭제한다고 말할 수 있습니다.

관련 문제