2013-04-02 165 views
0

親愛的親們都在這裏程序員,即時通訊在這裏全新的,我可能不知道如何正確的問題在這裏..ASP ADO連接Microsoft VBScript運行時錯誤「800a01a8」

如果我可以尋求幫助,你可以在這裏在這裏這裏... 即時通訊問題與簡單的asp與oop結構...

幫助我功能savedata請。在運行時,

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

遇到錯誤:

INSERT INTO TEST_(姓名,身份證)VALUES(LALALA,222)

... Microsoft VBScript運行時錯誤 '800a01a8'

對象要求:'康恩'

<% 
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 
%> 

這是錯誤的實際上是什麼意思?我創建

connect() 

數據庫ADO連接不過,我可以毫無問題的

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行 -

任何人都可以幫我?

+0

對於這個問題,我發現,我謂失蹤「集」: 組參數conn =連接() 遺憾的麻煩... 但對於其他問題,我有問題與 呼叫SAVEDATA( 「更新」, 「測試_」, 「姓名,身份證」, 「 'LALALA',222」, 「BIL = 1」) 它會得到錯誤: Microsoft VBScript運行時錯誤 '800a01a8' 需要物體 /b kpi-msn/SPPro/function.asp,第56行 –

回答

0

您的數據中缺少單引號。名稱的值是一個字符串,應該用單引號括起來。

你已經在calldata()中實現了這個,這就是爲什麼它工作正常。對於savedata也更新相同。

注:這適用於所有的字符串參數,在一些 其他方式(使用#),可申請日期/日期參數了。

請以此爲出發點,遵循最佳實踐進行開發!

希望這會有所幫助!

維韋克

+0

ty用於回覆... 不知何故,指向conn.Execute語法的錯誤... 我嘗試更改字符串,並且錯誤仍然指向相同的地方.. –

+0

@dwerty_weird,錯誤總是指向conn.Execute,因爲這是數據庫試圖執行查詢的地方。你能粘貼你創建的查詢嗎? (最後一個查詢,就在conn.Execute之前) –

+0

ty用於回覆... INSERT INTO test_(name,id)VALUES('lalala',222)這將是執行前的最終查詢... as,single quotes將被寫入調用函數... as savedata(「insert」,「test _」,「name,id」,「'lalala',222」,「bil = 1」)...我設法解決這個問題。 。但我又遇到了另一個問題... –

相關問題