2011-03-27 53 views
0

我目前正在尝试在VB.NET中的页面上创建一个搜索功能,这将允许我从名为txtSearch的文本框中搜索数据库中的customerID,然后将其呈现到数据网格中。SQL for oledbDataAdapter搜索功能

到目前为止,我可以用

SELECT * FROM Customers WHERE CustomerID LIKE 'A%' 

显示在客户的手工,但无法弄清楚如何使用将被输入到文本框中的数据替换一个。

回答

0

您可以使用parameters在传递到查询,使用的语法如下:

SELECT * FROM Customers 
WHERE CustomerID LIKE @SearchTerm + '%' 

在VB.NET:

Dim strQry as String = 
     "SELECT * FROM Customers WHERE CustomerID LIKE @SearchParam + '%'" 

Dim cmd as SqlCommand = new SqlCommand(strQry, connection) 
cmd.CommandType= CommandType.Text 

Dim prm As SqlParameter = new SqlParameter("@SearchParam",SqlDbType.VarChar,50) 
prm.Direction=ParameterDirection.Input 
prm.Value = txtUser.Text 
cmd.Parameters.Add(prm) 
0

尝试使用下面的代码(只是初始化连接):

Dim dataTable As New DataTable() 
Using connection As New OleDbConnection() 
    'connection.ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", MapPath("~/App_Data/nwind.mdb")) 
    Dim adapter As New OleDbDataAdapter(String.Empty, connection) 
    adapter.SelectCommand.CommandText = String.Format("SELECT * FROM [Customers] WHERE [CustomerID] LIKE @SearchTerm + '%'") 

    Dim parameter As OleDbParameter = adapter.SelectCommand.Parameters.Add("@SearchTerm", OleDbType.VarChar) 
    parameter.Value = txtSearch.Text.Trim() 

    adapter.Fill(dataTable) 
End Using 

该方法将允许连接所需的SELECT状态nt,并避免SQL Injections