Interstage Shunsaku Data Manager Application Development Guide - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX - |
Contents
Index
![]() ![]() |
Part 1 The Basic for Developing Application | > Chapter 5 Transaction Function |
This section provides an example of creating an application that uses Java APIs.
The following example handles the deletion and updating of an XML document as a single transaction.
/* * This program assumes that the following variables have been declared * sQuery :Character string containing search expression * sReturn :Character string containing return expression * updateData :Character string containing update data */ ShunConnection con = null; ShunPreparedStatement searchStmt = null; ShunResultSet rs = null; ShunPreparedRecordID deleteRecId = null; ShunPreparedRecordID updateRecId = null; try { // Create ShunConnection object con = new ShunConnection("DirSvr1", 33101); // Create ShunPreparedStatement object searchStmt = con.prepareSearch(sQuery, sReturn); // Set the number of items to return per request searchStmt.setRequest(1, 30); // Execute search and create ShunResultSet object rs = searchStmt.executeSearch(); // Obtain record ID String[] idList = new String[rs.getReturnCount()]; int count = 0; while (rs.next()) { idList[count] = rs.getRecordID(); count++; } rs.close(); searchStmt.close(); // Turn off auto commit con.setAutoCommit(false); (1) // Create a ShunPreparedRecordID object in order to delete records deleteRecId = con.prepareDeleteRecordID(); // Target the third item of data for deletion deleteRecId.add(idList[2]); // Delete data if (0 < deleteRecId.getCount()) { deleteRecId.deleteByRecordID(); System.out.println("Deletion complete"); } deleteRecId.close(); // Create a ShunPreparedRecordID object for updating data updateRecId = con.prepareUpdateRecordID(); // Target the fifth item of data to be updated updateRecId.add(idList[4], updateData); // Update data if (0 < updateRecId.getCount()) { updateRecId.updateByRecordID(); System.out.println("Update complete"); } updateRecId.close(); // Execute commit con.commit(); (2) con.close(); } catch (ShunException ex) { try { // Execute rollback if (!con.getAutoCommit()) { con.rollback(); (3) } } catch (ShunException e) { int errorLevel = ex.getErrLevel(); switch (errorLevel) { case ShunException.SHUN_ERROR: System.out.println("Error level: SHUN_ERROR"); break; case ShunException.SHUN_ERROR_CONNECTION_TERMINATED: System.out.println("Error level: SHUN_ERROR_CONNECTION_TERMINATED"); break; case ShunException.SHUN_ERROR_TRANSACTION_ROLLEDBACK: System.out.println(" Error level: SHUN_ERROR_TRANSACTION_ROLLEDBACK"); break; } System.out.println("Error message: " + ex.getMessage()); e.printStackTrace(); } // Obtain error information int errorLevel = ex.getErrLevel(); switch (errorLevel) { case ShunException.SHUN_ERROR: System.out.println(" Error level: SHUN_ERROR"); break; case ShunException.SHUN_ERROR_CONNECTION_TERMINATED: System.out.println(" Error level: SHUN_ERROR_CONNECTION_TERMINATED"); break; case ShunException.SHUN_ERROR_TRANSACTION_ROLLEDBACK: System.out.println("Error level: SHUN_ERROR_TRANSACTION_ROLLEDBACK"); break; } System.out.println("Error message: " + ex.getMessage()); ex.printStackTrace(); } // Recovery process in the event of an error finally { try { if (rs != null)rs.close(); if (searchStmt != null)searchStmt.close(); if (deleteRecId != null)deleteRecId.close(); if (updateRecId != null)updateRecId.close(); if (con != null)con.close(); } catch (ShunException ex) { int errorLevel = ex.getErrLevel(); switch (errorLevel) { case ShunException.SHUN_ERROR: System.out.println("Error level: SHUN_ERROR"); break; case ShunException.SHUN_ERROR_CONNECTION_TERMINATED: System.out.println("Error level: SHUN_ERROR_CONNECTION_TERMINATED"); break; case ShunException.SHUN_ERROR_TRANSACTION_ROLLEDBACK: System.out.println(" Error level: SHUN_ERROR_TRANSACTION_ROLLEDBACK"); break; } System.out.println("Error message: " + ex.getMessage()); ex.printStackTrace(); } } |
The setAutoCommit method of the ShunConnection class is used to disable auto commit.
Switching is necessary because auto commit is enabled when a connection is established.
Set the setAutoCommit method to 'true' to enable auto commit again.
The commit method is executed to terminate a transaction and update Shunsaku with the operations that have been performed.
If an error occurs, the rollback method is executed to roll back a transaction without updating Shunsaku with the operations that have been performed.
Refer to the Java API Reference for more information on Java APIs.
Contents
Index
![]() ![]() |