2013-03-06 42 views
0

我想要做的是查找輸入到指定給Valor的textbox4上的文本,如果找到,則顯示下面的代碼,但我想使用參數化查詢安全的原因),我不知道如何修改我現有的代碼來完成它。 (例如,123-A)使用DataAdapter/Dataset進行Asp.net參數化SQL查詢

我會查找「123-A」,但在當前代碼中出現「無效列A」錯誤,我將查找「123-A」的SQL列爲「ID_LALTest」

Try 
      ' *--------search by Unique ID-------* 
      Dim CON As New SqlConnection 
      Dim DA As New SqlDataAdapter 
      Dim DS As New DataSet 
      Dim SQL As String 
      Dim Valor As String 
      Valor = TextBox4_SearchData_LALTest.Text 

      CON.ConnectionString = "not displayed" 
      CON.Open() 

      SQL = "SELECT ID_LALTest, LALTest_SeqRef_CH, LALTest_SeqRef_Year FROM LALTest WHERE [email protected]" 
      DA = New SqlDataAdapter(SQL, CON) 
      DA.SelectCommand.Parameters.AddWithValue("@Valor", Valor) 
      DA.SelectCommand.ExecuteNonQuery() 
      DA.Fill(DS, 0) 


      If DS.Tables(0).Rows.Count > 0 Then 
       ' *--------Found, Display Data Grid-------* 
       Label2_SearchData_LALTest.Visible = False 
       GridView2_SearchData_LALTest.Visible = True 
       GridView3_SearchData_LALTest.Visible = True 
       GridView1_SearchData_LALTest.Visible = False 

      Else 
       Label2_SearchData_LALTest.Text = "Record Not Found" 
       Label2_SearchData_LALTest.Visible = True 
       GridView2_SearchData_LALTest.Visible = False 
       GridView3_SearchData_LALTest.Visible = False 
       GridView1_SearchData_LALTest.Visible = False 

      End If 
      con.dispose() 
     Catch ex As Exception 
      MsgBox(Err.Description) 
     End Try 
+1

該文檔的哪個部分(http://msdn.microsoft.com/en-us/library/bbw6zyha.aspx)有問題嗎? – 2013-03-06 20:45:55

+0

我剛剛更新了你給我的參考代碼,但我收到了「轉換錯誤」的錯誤123-A「Char to Int」..但我不能檢測爲什麼要轉換爲INT? – 2013-03-06 21:09:26

+0

您是否使用適當的SqlDbType作爲數據庫中列的類型? – 2013-03-06 21:12:45

回答

0

是的,你是開放的sql注入。根據不同的數據庫(您只有SQL,但是SQL-Server,MySQL,Access/SQL數據庫等)。無論如何,它不會離你所擁有的太多太遠。不專門研究VB,我會給你一些僞代碼...

更改您的查詢,併爲您想要從輸入中應用的「變量」放置一個「佔位符」。 。例如:

"select (your fields) from (yourtable) where ID_LALTest = @parmValor" 

然後,參數添加到您的數據適配器...像創建了SQL命令

DA.SelectCommand.Parameters.Add("@parmValor", theInputFromYourVariable); 

現在,如果你有多個條件要應用,只要不斷添加「@someParm」值並在查詢中添加參數IN THE SAME ORDER ...我從其他人那裏聽說過s,只是參數序號不匹配查詢會導致問題,例如數據類型期望。

+0

當我使用parameters.add(「變量」,sqldbtype)它的視覺工作室建議...因此我不能使用(「@Val」,Valor「)或者也許我只是得到解決方案錯誤 – 2013-03-06 21:32:06