VB6 SQL-Server中,如何通过ADODB.Command实现命名参数查询操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计341个文字,预计阅读时间需要2分钟。
我一直在尝试使用ADODB.Command执行参数化查询。我知道可以用?对参数进行占位,但我的查询量很大,真的不想追踪参数的精确顺序。我尝试过以下内容:
javascriptobjCmd.CommandType=adCmdTextobjCmd.CommandText=SELECT * FROM table WHERE column=?
但这样写似乎不起作用。
我一直在尝试使用ADODB.Command执行参数化查询.我知道我可以用“?”对于参数,但我的查询相当大,我真的不想跟踪参数的确切顺序.我尝试过以下内容:objCmd.CommandType = adCmdText objCmd.CommandText = "SELECT ... WHERE field1=@p_Field1 ...." Dim objParam As ADODB.Parameter Set objParam = objCmd.CreateParameter("@p_Field1" ...) objCmd.Parameters.Append objParam ... objCmd.Open
它适用于存储过程参数(显然设置CommandType = adCmdStoredProc),但由于查询本身的动态特性,我无法在存储过程中执行此操作.当我尝试运行查询时,我收到错误:
Must declare the scalar variable "@p_Field1"
有没有其他方法可以不涉及使用存储过程或(argh)连接查询本身中的参数值而根本不使用参数?
您可以这样做,以允许您重用参数objCmd.CommandText = "declare @var1 int, @var2 int, @var3 int; " & _ "select @var1 = ?, @var2 = ?, @var3 = ?;" & _ "select ... where field1 = @var1 or field4 = @var1 or field2 = @var2 ... "
并以正常的有序方式添加参数.
本文共计341个文字,预计阅读时间需要2分钟。
我一直在尝试使用ADODB.Command执行参数化查询。我知道可以用?对参数进行占位,但我的查询量很大,真的不想追踪参数的精确顺序。我尝试过以下内容:
javascriptobjCmd.CommandType=adCmdTextobjCmd.CommandText=SELECT * FROM table WHERE column=?
但这样写似乎不起作用。
我一直在尝试使用ADODB.Command执行参数化查询.我知道我可以用“?”对于参数,但我的查询相当大,我真的不想跟踪参数的确切顺序.我尝试过以下内容:objCmd.CommandType = adCmdText objCmd.CommandText = "SELECT ... WHERE field1=@p_Field1 ...." Dim objParam As ADODB.Parameter Set objParam = objCmd.CreateParameter("@p_Field1" ...) objCmd.Parameters.Append objParam ... objCmd.Open
它适用于存储过程参数(显然设置CommandType = adCmdStoredProc),但由于查询本身的动态特性,我无法在存储过程中执行此操作.当我尝试运行查询时,我收到错误:
Must declare the scalar variable "@p_Field1"
有没有其他方法可以不涉及使用存储过程或(argh)连接查询本身中的参数值而根本不使用参数?
您可以这样做,以允许您重用参数objCmd.CommandText = "declare @var1 int, @var2 int, @var3 int; " & _ "select @var1 = ?, @var2 = ?, @var3 = ?;" & _ "select ... where field1 = @var1 or field4 = @var1 or field2 = @var2 ... "
并以正常的有序方式添加参数.

