我正在尝试修改一些遗留的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语句的结果呢?使用结果集似乎不是正确的方法。还是真的是这样?
发布于 2011-07-30 11:42:25
使用第一个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发布于 2011-08-01 00:29:56
您可以使用事务。
<%@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>发布于 2011-07-30 04:23:41
对于INSERT和UPDATE,执行将返回受影响的行数,除非您在存储过程中未设置COUNT ON。当您定义一个Command对象时,调用它的ExecuteNonQuery方法将返回该数字。我使用这些数字的返回值(以及它们是否是非零的)来表示它是有效的。
https://stackoverflow.com/questions/6878577
复制相似问题