Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access中的VB.Net类似选择查询不工作_Vb.net_Ms Access_Select_Sql Like - Fatal编程技术网

MS Access中的VB.Net类似选择查询不工作

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.

我需要显示“买方”列中的数据,从表单上“买方”文本框中输入的文本开始。我正在使用MS Access 2003数据库。 为此,我使用以下方法

            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
),它肯定会失败,请改用参数,请参见下面我的答案。