SQL如何为字符串“使用变量”;1-3“;在WHERE子句中

SQL如何为字符串“使用变量”;1-3“;在WHERE子句中,sql,vba,ms-access,Sql,Vba,Ms Access,我正在转换一个用vb6编写的程序,由于MSoft的ocx组件问题,该程序已经完美运行了18年。我正在尝试在Studio 2019中将vb6转换为Visual Basic。还尝试在SQL中执行此操作,在MSAccess 365数据库上的查询的Where子句中使用字符串变量。字符串由一个或多个数字、连字符和一个或多个数字组成。数据库中的“引用”字段是文本字段 我已经看过了所有关于StackOverflow的建议答案,以及无数的DuckDuck搜索。我找不到任何这样做的例子。我尝试将变量设置为字符数组

我正在转换一个用vb6编写的程序,由于MSoft的ocx组件问题,该程序已经完美运行了18年。我正在尝试在Studio 2019中将vb6转换为Visual Basic。还尝试在SQL中执行此操作,在MSAccess 365数据库上的查询的Where子句中使用字符串变量。字符串由一个或多个数字、连字符和一个或多个数字组成。数据库中的“引用”字段是文本字段

我已经看过了所有关于StackOverflow的建议答案,以及无数的DuckDuck搜索。我找不到任何这样做的例子。我尝试将变量设置为字符数组,先传递第一个数字,然后是连字符,最后是最后一个数字。我尝试了各种转义字符、单引号、双引号、声明、括号等的组合

这很有效

    Using myConnection As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\work\temp\va_cod.accdb")

        myConnection.Open()

        Dim queryNovice As New OleDbCommand(cmdText:="SELECT ID, FileNum, Name FROM Level6 Where Cite = '1-3'", myConnection)

        Using reader As OleDbDataReader = queryNovice.ExecuteReader()
这行不通

    Using myConnection As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\work\temp\va_cod.accdb")

        Dim strCite As String = "1-3"

        myConnection.Open()

        Dim queryNovice As New OleDbCommand(cmdText:="SELECT ID, FileNum, Name FROM Level6 Where Cite = strCite", myConnection)

        Using reader As OleDbDataReader = queryNovice.ExecuteReader()
在尝试使用变量的版本的执行行上,错误消息是“没有为一个或多个必需参数提供值”。当我使用“1-3”时,我在列表框中得到正确的结果。数据是一个州的雕像的引用号。用户可以提供33000种不同引文中的任意一种,许多引文还包括句号、括号、冒号和字母


非常感谢您的帮助。

您的查询包含文本字符串

把它改成

  Dim queryNovice As New OleDbCommand(cmdText:="SELECT ID, FileNum, Name FROM Level6 Where Cite = '" + strCite + "'", myConnection)

或者按照scaisEdge的建议使用参数,这样更安全。

查看select中的参数。您应该演示如何使用参数。这是问题的正确答案。施耐德的解决方案奏效了。VStudio给出了以双引号结尾的字符串常量的错误消息。引用撇号引用有效。