错误: ADODB.Command (0x800A0BB9) 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误: ADODB.Command (0x800A0BB9) 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突相关的知识,希望对你有一定的参考价值。

错误类型:
ADODB.Command (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/zhuce/index.asp, 第 113 行。

我的网站目录结构就是这样的:

- Connections (文件夹)
包含:zhuce.asp ,db1.mdb
- zhuce(文件夹)
包含:index.asp ,zccg.asp

1 ,其中:zhuce.asp代码如下:

<%
Set conn = Server.CreateObject("ADODB.Connection")
rem
conn.open("driver=Microsoft Access Driver (*.mdb);dbq="&Server.MapPath("../Connections/db1.mdb"))
%>

2 ,index.asp 主要代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="../Connections/zhuce.asp" -->
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
MM_editAction = MM_editAction & "?" & Server.htmlEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form1") Then

MM_editConnection = MM_zhuce_STRING
MM_editTable = "用户注册表"
MM_editRedirectUrl = "zccg.asp"
MM_fieldsStr = "user|value|pass|value"
MM_columnsStr = "用户名|',none,''|密码|',none,''"
.........
If (Not MM_abortEdit) Then
' execute the insert
Set MM_editCmd = Server.CreateObject("ADODB.Command")
MM_editCmd.ActiveConnection = MM_editConnection
MM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close

If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editRedirectUrl)
End If
End If

End If
%>.........
请各位大侠帮忙解决一下。谢谢!
MM_editCmd.ActiveConnection = MM_editConnection
(第113行)

数据库连接有误

MM_editCmd.ActiveConnection = MM_editConnection

改成

MM_editCmd.ActiveConnection = Conn
参考技术A 请问这个问题最后是怎么解决的?我现在遇到同样的问题

将大型XML数据传递给ADODB中的xml数据类型参数

我有一个采用xml数据类型参数的过程

create procedure my_procedure
    @xml_parameter xml
as
begin
(...)
end

我从经典的asp页面调用该过程,使用如下命令:

set cmd = Server.CreateObject("ADODB.Command")        
cmd.ActiveConnection = MyConnObj
cmd.CommandText = "my_procedure"
cmd.CommandType = adCmdStoredProc

cmd.Parameters.Append cmd.CreateParameter("@xml_parameter", adLongVarChar, adParamInput, Len(xmlData), xmlData)

如果我传递一个小的xml,它会工作。但是当我传递一个大的xml,+ - 200 Kb时,我收到消息“该过程需要@xml_parameter参数,但未通知”。

有谁知道我怎么能把这个xml传递给存储过程?

PS:当我从“SQL Server Management Studio”调用具有相同xml数据的过程时它也有效,因此似乎限制来自ADO。

编辑于2014年6月19日:

调试问题我从ODBC驱动程序发现一条消息,说某些数据被截断。我尝试使用“Driver = {SQL Server Native Client 11.0}”更改驱动程序,但现在我收到消息:“无法确定元数据,因为语句(...)使用临时表”

答案

通过使用ADODB 2.8,Parameters.Refresh方法初始构建参数,AppendChunk方法构建其值并在执行前将参数类型更改为adLongVarWChar(原来是adVarWChar),我能够成功地将超过7MB的数据提交到procedure的参数中

另一答案

.Refresh查询数据库中的参数,从而获得额外的数据库通信。所有需要完成而不是刷新传递的长度为Len + 1,用于null终止字符。

以上是关于错误: ADODB.Command (0x800A0BB9) 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突的主要内容,如果未能解决你的问题,请参考以下文章

VBA 将整个 ADODB.Recordset 插入表中

VBA - ADODB.Connection - 使用参数和检索受影响的记录数

将大型XML数据传递给ADODB中的xml数据类型参数

有没有办法从ADO Command查询的响应中获取列的列表?

解协议时有符号和无符号整形处理

未发现数据源名称并且未指定默认驱动程序