我正在尝试保护一些用我猜是 VB 或 asp 编写的遗留代码(不太确定是否有区别)。当我尝试执行该语句时,页面出现内部服务器错误。我确信这是连接的结果,但我不太了解该语言,不知道如何解决它。
我对该语言和 ADODB 库的了解来自 W3Schools文档 and 这个帖子.
这是我编写的代码(已编辑的识别信息)
SET Conn=server.CreateObject("adodb.connection")
Conn.Open "Provider=sqloledb;SERVER=I;DATABASE=Hate;UID=My;PWD=Life;"
SET countCmd = createobject("adodb.command")
countCmd.ActiveConnection = Conn
countCmd.commandText = "SELECT COUNT(*) FROM [table1] WHERE FY=@fy"
countCmd.Parameters.Append countCmd.createparameter("@fy", 200, 1, 255, fy)
SET pcount = countCmd.Execute() 'This is where the error happens
我的最终目标不仅仅是从这个表中获取计数,而是充分理解 adodb 库,以便我可以继续参数化这个遗留代码库中需要它的所有查询。
我感谢任何帮助,并希望得到详细的解释。
EDIT
我希望我能接受这两个答案作为公认的答案,因为我认为它们一起是完美的答案。我最终使用了两者,所以支持这些人。
要使用命名参数,您需要启用命名参数.
countCmd.NamedParameters = True
但有一个限制会影响您。
In Adodb.命令,命名参数仅适用于存储过程。
对于像您这样的普通查询,您需要使用问号占位符而不是命名占位符。
然后您可以省略或为第一个参数指定一个垃圾值创建参数 method.
countCmd.NamedParameters = False
countCmd.CommandText = "SELECT COUNT(*) FROM [table1] WHERE FY=?"
countCmd.Parameters.Append countCmd.createparameter(, 200, 1, 255, fy)
'countCmd.Parameters.Append countCmd.createparameter("@blablabla", 200, 1, 255, fy) 'this also works
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)