내 첫 번째 유용한 연습 응용 프로그램에서 일하는 사람들이 SQL을 알지 않고도 간단한 쿼리를 실행하는 데 도움이되도록 일하고있는 경우 SQl 쿼리를 실행하십시오.VB .net
4 개의 텍스트 입력란이있는 간단한 양식이 있습니다. 열, 테이블, 조건 열, 조건
나는 조건문 열이 비어있는 경우 where 문없이 쿼리를 실행하거나 무언가가있을 경우 조건문을 실행합니다. 나는 모든 필드를 기입 할 때 난 그냥 열 및 테이블 필드를 입력하려고 할 때 무슨 일이 일어나고 있는지
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles CMDQuery.Click
If Columntxtbox.Text <> "" Then
If SQL.HasConection = True Then
If Conditioncolumntxtbox.Text = "" Then
SQL.runquery("Select " & Columntxtbox.Text & " from " & tabletxtbox.Text)
Else
SQL.runquery("Select " & Columntxtbox.Text & " from " & tabletxtbox.Text & " Where " & Conditioncolumntxtbox.Text & " like'%" & conditiontxtbox.Text & "%'")
If SQL.sqldataset.Tables.Count > 0 Then
DGVData.DataSource = SQL.sqldataset.Tables(0)
End If
End If
End If
End If
End Sub
, 그것은 잘 작동한다 아무 일도 발생하지 않습니다. 나는 그것이 세번째와해야한다고 생각하고있다. (만약 내가 =를 <로 바꾸면 열과 도시가 채워 졌을 때와 같은 키워드로 에러가 발생한다.) 어떤 도움을 주겠다.
그러나이 떠날 아주 나쁜 관행 있음을 유의하십시오 어떤 조건If Columntxtbox.Text <> "" Then
If SQL.HasConection = True Then
If Conditioncolumntxtbox.Text = "" Then
SQL.runquery("Select " & Columntxtbox.Text & " from [" & tabletxtbox.Text & "]")
Else
SQL.runquery("Select " & Columntxtbox.Text & " from [" & tabletxtbox.Text & _
"] Where [" & Conditioncolumntxtbox.Text & "] like '%" & _
conditiontxtbox.Text & "%'")
End If
If SQL.sqldataset.Tables.Count > 0 Then
DGVData.DataSource = SQL.sqldataset.Tables(0)
End If
End If
End If
이없는 경우
감사
WHERE 절 앞에 (그리고 아마도 LIKE 연산자 뒤에) 공백이 있어야합니다. 그 말. SQL 인젝션에 대한 충돌 과정을 즉시 시작하십시오. – Steve
복사 및 붙여 넣기시 뭔가가 발생 했어야합니다. 필자의 oringal 코드에 올바른 공백이 있으므로 나쁘지 포스트 – bdrilling33
@ 스티브 좋은 관찰 ... 이것은 주요 SQL 주입 영토입니다. 보다 안전하려면 매개 변수화 된 쿼리를 사용해야합니다. – JiggsJedi