0

データ ウィザードを介して vb アプリケーションに接続された ms アクセス データベースがあります。ユーザーがデータベースを検索し、その結果をデータグリッドに表示できるようにしたいと考えています。たとえば、ユーザーは 50 ~ 55 歳の身長 1.8 メートル未満の老人を検索します。

これまでのところ、このコードを使用してデータベース上の総人数を表示できます

    Private Sub lblTotalPeople_Click(sender As System.Object, e As System.EventArgs) Handles lblTotalPeople.Click
    Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\AssignmentDatabase.accdb")
    ' Use wildcard'
    Dim cmd As OleDbCommand = New OleDbCommand("Select COUNT(*) From Table1", con)
    '' or Where username='" & TextBox1.Text & "'
    con.Open()
    Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)
    Dim myDataSet As DataSet = New DataSet()
    myDA.Fill(myDataSet, "Table1")
    DataGridView2.DataSource = myDataSet.Tables("Table1").DefaultView

End Sub

ユーザーが何を検索するか、または何を使用するかに基づいてデータベースを検索するにはどうすればよいですか?

4

1 に答える 1

0

SQL の使い方をまだ学んでいないと仮定します。

上記のコードでは、SQL ステートメントは次のとおりです。

Select COUNT(*) From Table1

この SQL を、ユーザーからの値 (ほとんどの場合、テキスト ボックスから) を使用する検索に置き換える必要があります。このテキスト

'' or Where username='" & TextBox1.Text & "'

機能する可能性のある SQL の一部のように見えますが、危険に見えます。これを直接使用すると、ユーザーが Access データベースにアクセスしたり破損したりする可能性があるため、SQL インジェクションについても調査する必要があります。

于 2012-12-05T16:53:33.853 に答える