2011-07-29 127 views
4

我試圖修改一些傳統的ASP經典代碼,並且我不太瞭解ASP。如何判斷數據庫插入,更新或刪除失敗?通過'失敗',我的意思是要麼拋出一個錯誤或影響零行。如何判斷數據庫更新是否成功?

下面是已經在ASP文件中的代碼,用於建立數據庫連接:

On Error Resume Next 
Set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open "Provider=MSDAORA;Data Source=dbname;User Id=dbuser;Password=dbpw;" 

有跡象表明,工作就像幾個Select語句:

qry = "select stuff here..." 
Set objRs = objConn.Execute(qry) 

我瞭解如何獲得Select語句的結果,但是如何獲得非Select語句的結果?使用結果集似乎並不是這樣做的正確方法。或者是?

回答

12

使用第一Execute方法的參數來獲得受影響的行:

On Error resume next 
Dim RecordsAffected as long 
Dim cmd 
Set cmd = server.createobject("ADODB.Command") 

cmd.ActiveConnection = GetConnectionString() 
cmd.CommandText = "Select stuff here" 
cmd.CommandType = adCmdText 

cmd.Execute RecordsAffected, , adExecuteNoRecords 
If err.number > 0 or RecordsAffected = 0 then 
    Response.Write "No record affected or SQL error or something" 
end if 

使用adExecuteNoRecords將獲得性能根據toseveralsources

來源:Execute method in MSDN

+0

謝謝,這就是我需要的! – DaveKub

0

對於INSERT和UPDATE,執行將返回受影響的行數,除非您在存儲過程中設置NO COUNT ON。當你定義一個調用它的ExecuteNonQuery方法的Command對象時,它將把這個數字返回給你。我使用這些數字的返回值(以及它們是否非零)作爲它的工作指示。

+0

的ExecuteNonQuery記錄計數不ADO的方法經典 –

1

你可以使用一個交易。

<%@Transaction="REQUIRES_NEW" Language="VBSCRIPT" %> 
<%Option Explicit%> 
<HTML> 
<HEAD> 
</HEAD> 
<BODY> 
<% 

'Perform Work 
'Database Operation #1 
'Database Operation #2 

Sub OnTransactionCommit 
    Response.Write "<H1>Success!</H1>" 
End Sub 

Sub OnTransactionAbort 
    Response.Write "<H1>Failure!</H1>" 
End Sub 
%> 

</BODY> 
</HTML> 
0

你也可以使用:

con.execute Sql,RecordsAffected 

其中, con是連接
Sql是你的命令字符串
RecordsAffected受到影響

相關問題