MS Access中的VB.Net类似选择查询不工作
我需要显示“买方”列中的数据,从表单上“买方”文本框中输入的文本开始。我正在使用MS Access 2003数据库。 为此,我使用以下方法MS Access中的VB.Net类似选择查询不工作,vb.net,ms-access,select,sql-like,Vb.net,Ms Access,Select,Sql Like,我需要显示“买方”列中的数据,从表单上“买方”文本框中输入的文本开始。我正在使用MS Access 2003数据库。 为此,我使用以下方法 Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" & Purchaser.Text & "*'" Dim dc = New OleDbCommand(query, cn) Dim rows = dc.
Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" & Purchaser.Text & "*'"
Dim dc = New OleDbCommand(query, cn)
Dim rows = dc.ExecuteNonQuery
cn.Close()
If rows = 0 Then
'Show a form for new entry
Else
Dim oleadap = New OleDbDataAdapter(query, cn)
Dim dset As DataSet = Nothing
oleadap.Fill(dset, "Details")
For i = 0 To rows
Dim purName = dset.Tables("Details").Rows(i).Item("Purchaser").ToString
Dim purAddr = dset.Tables("Details").Rows(i).Item("Address").ToString
'Populate a list
Next
End If
即使我在数据库中检查以a开头的买家,变量“rows”也总是为零。应该是:
Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" _
& Purchaser.Text & "%'"
在MS Access中,通配符是星号(*),除此之外,通配符是百分比(%)
此外,您还有ExecuteOnQuery,但事实并非如此。您正在执行一个查询,下面是一些用于测试的注释
Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" _
& Purchaser.Text & "%'"
Dim dc = New OleDbCommand(query, cn)
Dim rows As OleDb.OleDbDataReader
rows = dc.ExecuteReader
If rows.HasRows Then
Do While rows.Read()
Console.WriteLine(rows("Purchaser"))
Loop
End If
Console.ReadLine()
你能用
%
代替*
吗。另一个,使用参数
Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE @purc & '%' "
Dim dc = New OleDbCommand(query, cn)
dc.Parameters.AddWithValue("@purc", Purchaser.Text)
Dim rows = dc.ExecuteNonQuery
忘记添加即使“%”也不起作用!无论如何,谢谢你!您当前的代码易受
sql注入的攻击
。尝试搜索只有一个引号的单词(例如,hello's world
),它肯定会失败,请改用参数,请参见下面我的答案。