2013-08-02 54 views
0

我試圖用一個文本框作爲過濾器的GridView和最後寫這樣的代碼:這是將文本框綁定到gridview的正確方法嗎?

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 

     Try 
      SqlDataSource1.ConnectionString = "connection string goes here" 
      SqlDataSource1.SelectCommand = "SELECT * FROM TABLE WHERE area LIKE '" + TextBox1.Text + "%'" 
      'GridView1.DataSource = SqlDataSource1.SelectCommand 
      SqlDataSource1.DataBind() 
      GridView1.DataBind() 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     End Try 
    End Sub 

它的工作原理。不過,我覺得這太簡單,不安全。你能否告訴我應該如何以更專業的方式做到這一點?

+2

準備使用或參數化語句 – thunderbird

回答

1

要使用參數化的sql語句,請添加select參數及其sql數據類型和默認值。

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 

     Try 
      SqlDataSource1.ConnectionString = "connection string goes here" 
      SqlDataSource1.SelectCommand = "SELECT * FROM TABLE WHERE area LIKE @area" 
      'GridView1.DataSource = SqlDataSource1.SelectCommand 
      SqlDataSource1.SelectParameters.Add(New Parameter("area", DbType.String,TextBox1.Text)) 
      SqlDataSource1.DataBind() 
      GridView1.DataBind() 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     End Try 
    End Sub 
+0

是否有執行的另一個功能連接和查詢打來電話,發送對象的SqlDataSource它的方法嗎?用「使用」而不是「try/catch」做到這一點? – phalanx

+0

您可以在任何子目錄中分配連接字符串和選擇語句。我沒有真正明白'發送sqldatasource對象'的意思。至於使用'using語句'而不是'try/catch',你可以做到,但不會讓你處理異常。另外爲了更好的異常處理,你應該在gridview和sqldatasource的每個聲明(比如'select','rowediting'等)中處理異常。 – thunderbird

相關問題