<%@ TRANSACTION=Required LANGUAGE="JScript" %>
<!--#include file="adojavas.inc"-->
<HTML>
<HEAD>
<TITLE>Transactional Database Update</TITLE>
</HEAD>
<BODY BGCOLOR="White" topmargin="10" leftmargin="10">
<!-- Display Header -->
<font size="4" face="Arial, Helvetica">
<b>Transactional Database Update</b></font><br>
<hr size="1" color="#000000">
<!-- Brief Description blurb. -->
This is a simple example demonstrating how to transactionally
update a SQL 6.5 database using ADO and Transacted ASP.
The example will obtain information regarding a book sale from
the SQL 6.5 "Pubs" database. It will then increment the quantity
of books sold by one, as well as change the zip-code of the store
in which the book was sold.
<p> Because the two database operations are wrapped
within a shared ASP Transaction, both will be automatically rolled
back to their previous state in the event of a failure.
<%
var oConn;// object for ADODB.Connection obj
var oRs;// object for recordset object
var oRs2;// object for recordset object
// Create Connection and Recordset components
oConn = Server.CreateObject("ADODB.Connection");
oRs = Server.CreateObject("ADODB.Recordset");
oRs2 = Server.CreateObject("ADODB.Recordset");
// Open ADO Connection using account "sa"
// and blank password
oConn.Open("DSN=LocalServer;UID=sa;PWD=;DATABASE=pubs");
oRs.ActiveConnection = oConn;
oRs2.ActiveConnection = oConn;
// Find a random book sale
oRs.Source = "SELECT * FROM sales";
oRs.CursorType = adOpenStatic;// use a cursor other than Forward Only
oRs.LockType = adLockOptimistic;// use a locktype permitting insertions
oRs.Open();
// Change quantity sold
if (! oRs.EOF) {
oRs("qty").Value = oRs("qty").Value + 1;
oRs.Update();
}
// Find the store in which the book was sold
oRs2.Source = "SELECT * FROM stores where stor_id='" + oRs("stor_id") + "'";
oRs2.CursorType = adOpenStatic;// use a cursor other than Forward Only
oRs2.LockType = adLockOptimistic;// use a locktype permitting insertions
oRs2.Open();
// Change zip code
if (! oRs2.EOF) {
oRs2("Zip").Value = new Number(oRs2("Zip").Value) + 1;
oRs2.Update();
}
%>
</BODY>
</HTML>
<%
// The Transacted Script Commit Handler. This sub-routine
// will be called if the transacted script commits.
function OnTransactionCommit()
{
Response.Write("<p><b>The update was successful</b>.");
}
// The Transacted Script Abort Handler. This sub-routine
// will be called if the script transacted aborts
function OnTransactionAbort()
{
Response.Write("<p><b>The update was not successful</b>.");
}
%>