【问题标题】:asp ADO connection Microsoft VBScript runtime error '800a01a8'asp ADO 连接 Microsoft VBScript 运行时错误 '800a01a8'
【发布时间】:2013-04-02 16:41:41
【问题描述】:

亲爱的所有专业程序员,我在这里是全新的,我可能不知道如何正确地作为一个问题在这里..

如果我可以寻求帮助,你能请在这里... 我对带有 oop 结构的简单 asp 有问题...

请帮我保存数据功能。运行时,

call savedata("insert","test_","name, id","lalala, 222","User_ID=3")

出错了:

INSERT INTO test_ (name, id) VALUES (lalala, 222)

...Microsoft VBScript 运行时错误“800a01a8”

需要对象:'Conn'

<%
function declare_conn(sql,atr)

dim conn, conn_
set conn = Server.CreateObject("ADODB.Connection")
conn = Connect()
set conn_ = Server.CreateObject("ADODB.Recordset")
strConnect = _T("Driver={MySQL ODBC 3.51 Driver};Server=localhost;"
     "Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=4;");

if Cstr(atr)="open" then
    conn_.CursorLocation = adUseClient
    conn_.Open sql, conn, 3, 2
    set conn_.ActiveConnection = nothing
    set declare_conn=conn_
else if Cstr(atr)="exec" then
        conn.Open
        conn.Execute sql
    end if
end if
end function


function calldata(a,b,c,d)

dim conn_string, sql_string

    if c<>"" and d<>"" then
        sql_string="SELECT "&Cstr(a)&" FROM "&Cstr(b)&" WHERE "&Cstr(c)&" = '"&Cstr(d)&"'"
        response.write(sql_string)
    else
        sql_string="SELECT "&Cstr(a)&" FROM "&Cstr(b)
        response.write(sql_string)
    end if

set conn_string = Server.CreateObject("ADODB.Recordset")
set conn_string = declare_conn(sql_string,"open")
set calldata = conn_string

end function


function savedata(a,b,c,d,e)

dim conn_string, sql_string, c_, d_, update_string
update_string = ""  
    if Cstr(a)="insert" then
        sql_string="INSERT INTO "&Cstr(b)&" ("&Cstr(c)&") VALUES ("&Cstr(d)&")"
    end if
    response.write(sql_string)
    'response.end
    if Cstr(a)="update" then
        c_ = split(c,", ",-1)
        d_ = split(d,", ",-1)
        response.write(c_)
        response.end
        if ubound(c_) = ubound(d_) then
            do while not c_.eof
                update_string=update_string&"("&Cstr(c_)&"="&Cstr(d_)&"),"
                c_.MoveNext : d_.MoveNext
            loop
        else
            %><script type="text/javascript">alert("save function error: array out of bound");</script> <%
        end if
        if Cstr(e)<>"" then
            sql_string="UPDATE "&Cstr(b)&" SET "&update_string&" WHERE "&Cstr(e)
        else
            sql_string="UPDATE "&Cstr(b)&" SET "&update_string
        end if
    end if

'set conn_string = Server.CreateObject("ADODB.Recordset")
call declare_conn(sql_string,"exec")
end function
%>

错误实际上是什么意思?我在

中创建到数据库 ADO 的连接
connect()

不过,我可以毫无问题地运行

calldata()

编辑-dwerty_weird


抱歉打扰了..

对于这个问题,我发现,我缺少“设置”:

set conn=Connect() 

很抱歉给您添麻烦了……但是对于其他问题,我遇到了问题

call savedata("update","test_","name, id","'lalala', 222","bil=1") 

会报错: Microsoft VBScript 运行时错误“800a01a8” 所需对象 /bkpi-msn/SPPro/function.asp,第 56 行 –

谁能帮帮我?

【问题讨论】:

  • 对于这个问题,我发现,我缺少“Set”:set conn=Connect() 抱歉给您带来了麻烦...但对于其他问题,我在调用 savedata(" update","test_","name, id","'lalala', 222","bil=1") 会出错:Microsoft VBScript 运行时错误 '800a01a8' Object required /bkpi-msn/SPPro/function. asp,第 56 行

标签: oop asp-classic ado


【解决方案1】:

您的数据中缺少单引号。 name 的值是一个字符串,应该用单引号括起来。

您已经在 calldata() 中实现了它,这就是它工作正常的原因。也为 savedata 更新相同的内容。

注意:这适用于所有字符串参数,并且可能适用于某些 其他方式(使用#)也用于日期/日期时间参数。

请以此为起点,遵循最佳实践进行开发!

希望这会有所帮助!

维韦克

【讨论】:

  • ty 用于回复...不知何故,指向 conn.Execute 语法的错误...我尝试更改字符串,但错误仍然指向同一个地方...
  • @dwerty_weird,错误总是指向 conn.Execute 因为这是数据库试图执行查询的地方。你能粘贴你正在创建的查询吗? (最后一个查询,就在 conn.Execute 之前)
  • ty 用于回复... INSERT INTO test_ (name,id) VALUES ('lalala',222) 这将是执行前的最终查询...因为,单引号将在调用中写入功能... as savedata("insert","test_","name,id","'lalala',222","bil=1")... 我设法解决了这个问题.. 但我得到了另一个问题...
  • 这是您得到的最后一个查询吗? INSERT INTO test_ (name,id) VALUES ('lalala',222) - 这似乎没问题!如果这不是你得到的,你能提供你得到的吗?你又遇到了什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多