我目前正在尝试在VB.NET中的页面上创建一个搜索功能,这将允许我从名为txtSearch的文本框中搜索数据库中的customerID,然后将其呈现到数据网格中。SQL for oledbDataAdapter搜索功能
到目前为止,我可以用
SELECT * FROM Customers WHERE CustomerID LIKE 'A%'
显示在客户的手工,但无法弄清楚如何使用将被输入到文本框中的数据替换一个。
我目前正在尝试在VB.NET中的页面上创建一个搜索功能,这将允许我从名为txtSearch的文本框中搜索数据库中的customerID,然后将其呈现到数据网格中。SQL for oledbDataAdapter搜索功能
到目前为止,我可以用
SELECT * FROM Customers WHERE CustomerID LIKE 'A%'
显示在客户的手工,但无法弄清楚如何使用将被输入到文本框中的数据替换一个。
您可以使用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)
尝试使用下面的代码(只是初始化连接):
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。