如何判断db更新是否成功?

时间:2011-07-29 20:21:00

标签: database asp-classic

我正在尝试修改一些传统的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语句的结果?使用结果集似乎不是正确的方法。或者是吗?

4 个答案:

答案 0 :(得分: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可以根据to several sources获得效果

来源:Execute method in MSDN

答案 1 :(得分: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>

答案 2 :(得分:0)

对于INSERT和UPDATE,执行将返回受影响的行数,除非您在存储过程中设置NO COUNT ON。当您定义一个调用其ExecuteNonQuery方法的Command对象时,将返回该数字给您。我使用这些数字的返回(以及它们是否为非零)作为它的工作原理。

答案 3 :(得分:0)

您也可以使用:

con.execute Sql,RecordsAffected

其中, con是连接
Sql是您的命令字符串
RecordsAffected是受影响的记录数