【问题标题】:VB.Net Select-Like query in MS Access not workingMS Access中的VB.Net Select-Like查询不起作用
【发布时间】:2012-09-23 15:23:57
【问题描述】:

我需要从表单上的文本框“购买者”中输入的文本开始显示“购买者”列中的数据。我正在使用 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 开头的购买者,变量“行”总是为零。

【问题讨论】:

  • 您当前的代码存在sql injection 的漏洞。尝试搜索带有单引号的单词(例如hello's world),肯定会失败,请改用参数,请参阅下面的答案。

标签: vb.net ms-access select sql-like


【解决方案1】:

应该是:

Dim query = "SELECT * FROM Details WHERE [Purchaser] LIKE '" _
          & Purchaser.Text & "%'"

在 MS Access 中,通配符是星号 (*),在它之外,通配符是百分比 (%)

此外,您还有 ExecuteNonQuery,但事实并非如此。您正在执行查询,这里有一些测试说明。

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()

【讨论】:

  • 忘记补充了,即使 '%' 也不起作用!无论如何,谢谢雷穆!
【解决方案2】:

你能用%代替*吗?还有一个,使用参数。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2013-06-04
    • 2021-11-27
    • 2021-09-08
    相关资源
    最近更新 更多