Asp classic ADODB.记录集错误';800a0bb9';:参数的类型错误
上面的代码是经典的asp 我得到以下错误: ADODB.记录集错误“800a0bb9”Asp classic ADODB.记录集错误';800a0bb9';:参数的类型错误,asp-classic,Asp Classic,上面的代码是经典的asp 我得到以下错误: ADODB.记录集错误“800a0bb9” 参数类型错误、超出可接受范围或相互冲突 有人知道这个错误的原因以及如何修复吗?首先,当我用vbscript开发应用程序时,我总是使用数字来打开记录集。我推荐以下几行: Set rsPlanID = Server.CreateObject("ADODB.Recordset") rsPlanID.CursorLocation = adUseClient strSQL = "SELECT PlanID FROM
参数类型错误、超出可接受范围或相互冲突
有人知道这个错误的原因以及如何修复吗?首先,当我用vbscript开发应用程序时,我总是使用数字来打开记录集。我推荐以下几行:
Set rsPlanID = Server.CreateObject("ADODB.Recordset")
rsPlanID.CursorLocation = adUseClient
strSQL = "SELECT PlanID FROM ATTJournals WHERE ATTUserDataID = " & ATTUserDataID
rsPlanID.Open strSQL, m_objConn, adOpenStatic, adLockOptimistic
If Not rsPlanID.EOF Then
response.Write "New PlanID:" & rsPlanID("PlanID")
End If
确保首先包含文件adovbs.inc。这些数字连接到不同类型的记录集属性。并且不要先打开数据库连接
第二,我想你不需要排队
rsPlanID.Open strSQL, m_objConn, 3, 3
第三,另见。也许这对你来说是一个很好的模板。最相似的原因是你没有包括“ADOVBS.INC”或等效元:-
rsPlanID.CursorLocation = adUseClient
因此,adxxxx
常量不存在。但是,您的主要错误是未在脚本顶部包含Option Explicit
。这将节省你大量的时间去寻找愚蠢的错误和打字错误
顺便问一下,如果ATTUserDataID
包含“0;删除ATTJournals;”,会发生什么情况?避免像瘟疫一样使用连接编写SQL。搜索“ASP SQL Injection”以查找使用参数化命令对象的示例。除非需要在记录集中来回导航,否则只需使用默认设置:
<!--METADATA
TYPE="TypeLib"
NAME="Microsoft ActiveX Data Objects 2.6 Library"
UUID="{00000206-0000-0010-8000-00AA006D2EA4}"
VERSION="2.6"
-->
此外,您的代码对SQL注入攻击非常开放—您最好了解它,并将代码更改为使用参数。Function SQL\u getRecordset(strQuery)
strSQL = "SELECT PlanID FROM ATTJournals WHERE ATTUserDataID = " & ATTUserDataID
Set rsPlanID = m_objConn.Execute(strSQL)
'出现错误时,请继续下一步
'创建数据库连接对象
设置objConnection=CreateObject(“ADODB.Connection”)
'创建记录集对象
Set objrecordset=CreateObject(“ADODB.Recordset”)
'指定连接字符串
strConnectionstring=“Provider=SQLOLEDB.1;数据源=**;初始目录=**;集成安全性=SSPI”
objConnection.Open strConnectionstring
'执行查询
Set objrecordset=objConnection.Execute(strQuery)
'返回记录集
Set SQL\u getRecordset=objrecordset
'从内存中释放对象
Set objConnection=Nothing
Set objrecordset=Nothing
端函数
我觉得我搜索了整个互联网,找不到解决这个问题的方法,就在我即将放弃的时候,我意识到我已经在一个“If”中声明了我的连接变量语句,并且由于if语句未执行,因此我对数据库的命令也未执行,并给出您的问题中提到的错误。您能将其放在global.asa中吗(即一个位置,而不是数百个.asp文件)?@NealWalters是的,事实上我强烈推荐它。
Function SQL_getRecordset(strQuery)
'On Error Resume Next
'Create Database connection object
Set objConnection = CreateObject("ADODB.Connection")
'Create Recordset object
Set objrecordset = CreateObject("ADODB.Recordset")
'Specify the connection string
strConnectionstring = "Provider=SQLOLEDB.1;Data Source=*<Server name>*;Initial Catalog=*<database>*;Integrated Security=SSPI"
objConnection.Open strConnectionstring
'Execute the Query
Set objrecordset = objConnection.Execute(strQuery)
'Return Recordset
Set SQL_getRecordset = objrecordset
'Release objects from the memory
Set objConnection = Nothing
Set objrecordset = Nothing
End Function