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