2010-03-11 4 views
0

코드에 오류가 없지만 작동하지 않는 것 같습니다. 작동하는 유일한 방법은 모든 데이터를 나열하려고 할 때입니다.vb.net에 나열된 ms sql 데이터

그러나 목록에있는 데이터의 범위를 좁히려 고 시도합니다. 나는 좋은 결과를 얻지 못한다. 여기 내 코드는 다음과 같습니다.

If ComboBox1.SelectedItem = "School" Then 
      Dim connectionString As String = "Data Source=SENBONZAKURA\SQLEXPRESS;Initial Catalog=testing;User ID=SenbonZakura\Rew; Trusted_Connection=True;" 

      Dim selectCommand As String 

      Dim connection As New SqlConnection(connectionString) 

      selectCommand = "select * from student WHERE (SCHOOL='" & TextBox1.Text & "')" 

      Me.dataAdapter = New SqlDataAdapter(selectCommand, connection) 



      Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter) 

      Dim table As New DataTable() 

      Me.dataAdapter.Fill(table) 

      Me.BindingSource1.DataSource = table 

      Dim data As New DataSet() 

      DataGridView1.DataSource = Me.BindingSource1 
END IF 

위 코드는 전부가 아닙니다. 나는 관련성이없는 것들을 생략했다. 이 일을하려면 어떻게해야합니까? 도와주세요, 고마워요.

+0

정확한 문제는 무엇인가요? 당신이 쓴, 작동하지 않는 것 같습니다. – Kangkan

+0

데이터베이스에있는 것과 정확히 동일한 데이터를 입력 했는데도 0이 반환됩니다. – user225269

답변

1

문제가 가장 가능성이 높습니다 :.

WHERE (학교 = ' "& TextBox1.Text &"') "

일부 기본 securtiy 원칙의 뻔뻔스러운 무지를 Ifgnoring (SQL 주입에 읽어 당신이) 순간을 ahve 때이 전체 비교입니다.

  • 학교는 학교 동일하지 않습니다.
  • Leating/후행 공백이 악.

내 표준 관행은 다음과 같습니다

  • TRIM. VB 구문에 대해서는 잘 모르겠지만 & TextBox1.Text.Trim() - 사람들이 입력하고 보지 않을 수있는 양쪽 끝의 공백을 제거하십시오.
  • "="을 사용하지 말고 "좋아요"를 사용하십시오. 일반적으로 (somone을 변경하지 않는 한) LINKE는 "School"과 "School"을 구별하지 않습니다.

SQL을 가져 와서 SQL Manager에서 처리하십시오.