0

グリッドビューのフィルターとしてテキストボックスを使用しようとしていたところ、次のコードを書くことになりました。

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

できます。しかし、それは単純すぎて安全ではないと感じています。より「プロフェッショナルな」(本物の)方法でどのように行うべきか教えてください。

4

2 に答える 2

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
于 2013-08-02T20:13:25.317 に答える