Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 - |
目次
索引
![]() ![]() |
第1部 アプリケーション開発の基本 | > 第5章 トランザクション機能 |
.NET APIを利用したアプリケーションの作成例を説明します。
XML文書の削除および更新を1トランザクションとして扱う例を以下に示します。
/* * 以下のように用意されていることを仮定しています。 * sQuery :検索式を格納した文字列 * sReturn :リターン式を格納した文字列 * updateData :更新データを格納した文字列 */ ShunService service = null; try { // ShunServiceを作成 service = new ShunService(); service.Host = "DirSvr1"; service.Port = 33101; service.Connect(); // ShunSearchRequirementを作成 ShunSearchRequirement req = new ShunSearchRequirement(); req.QueryExpression = sQuery; req.ReturnExpression = sReturn; req.ReplyNumber = 1; req.RequestCount = 30; // 検索を実行 ShunResultSet rs = service.Search( req ); // 自動コミットを無効に切替え service.AutoCommit = false; (1) try { // 3番目のデータを削除対象に設定 ShunRecordCollection deleteRecCol = new ShunRecordCollection(); deleteRecCol.Add( rs.Records[2] ); // データを削除 service.Delete( deleteRecCol ); // 5番目のデータを更新対象に設定 ShunRecordCollection updateRecCol = new ShunRecordCollection(); ShunRecord record = rs.Records[4]; record.Data = updateData; updateRecCol.Add( record ); // データを更新 service.Update( updateRecCol ); // コミットの実行 service.Commit(); (2) } catch { if ( service.State == ShunConnectionState.Open ) { // ロールバックの実行 service.Rollback(); (3) } throw; } service.Disconnect(); } catch ( ShunContinuousException e ) { // ShunContinuousExceptionが発生した場合の処理を記述 try { if( service != null && service.State == ShunConnectionState.Open ) { service.Disconnect(); } } catch( ShunException ex ) { Console.WriteLine("エラーメッセージ : {0}", ex.Message ); } Console.WriteLine("エラーメッセージ : {0}", e.Message ); } catch ( ShunTransactionRolledbackException e ) { // ShunTransactionRolledbackExceptionが発生した場合の処理を記述 try { if( service != null && service.State == ShunConnectionState.Open ) { service.Disconnect(); } } catch( ShunException ex ) { Console.WriteLine("エラーメッセージ : {0}", ex.Message ); } Console.WriteLine("エラーメッセージ : {0}", e.Message ); } catch ( ShunConnectionTerminatedException e ) { // ShunConnectionTerminatedExceptionが発生した場合の処理を記述 Console.WriteLine("エラーメッセージ : {0}", e.Message ); } |
' 以下のように用意されていることを仮定しています。 ' sQuery :検索式を格納した文字列 ' sReturn :リターン式を格納した文字列 ' updateData :更新データを格納した文字列 Dim service As ShunService = Nothing Try ' ShunServiceを作成 service = New ShunService() service.Host = "DirSvr1" service.Port = 33101 service.Connect() ' ShunSearchRequirementを作成 Dim req As ShunSearchRequirement = New ShunSearchRequirement() req.QueryExpression = sQuery req.ReturnExpression = sReturn req.ReplyNumber = 1 req.RequestCount = 30 ' 検索を実行 Dim rs As ShunResultSet = service.Search( req ) ' 自動コミットを無効に切替え service.AutoCommit = False (1) Try ' 3番目のデータを削除対象に設定 Dim deleteRecCol As ShunRecordCollection = New ShunRecordCollection() deleteRecCol.Add( rs.Records(2) ) ' データを削除 service.Delete( deleteRecCol ) ' 5番目のデータを更新対象に設定 Dim updateRecCol As ShunRecordCollection = New ShunRecordCollection() Dim record As ShunRecord = rs.Records(4) record.Data = updateData updateRecCol.Add( record ) ' データを更新 service.Update( updateRecCol ) ' コミットの実行 service.Commit() (2) Catch If service.State = ShunConnectionState.Open ' ロールバックの実行 service.Rollback() (3) End If Throw End Try service.Disconnect() Catch e As ShunContinuousException ' ShunContinuousExceptionが発生した場合の処理を記述 Try If Not service Is Nothing And service.State = ShunConnectionState.Open Then service.Disconnect() End If Catch ex As ShunException Console.WriteLine("エラーメッセージ : {0}", ex.Message ) End Try Console.WriteLine("エラーメッセージ : {0}", e.Message ) Catch e As ShunTransactionRolledbackException ' ShunTransactionRolledbackExceptionが発生した場合の処理を記述 Try If Not service Is Nothing And service.State = ShunConnectionState.Open Then service.Disconnect() End If Catch ex As ShunException Console.WriteLine("エラーメッセージ : {0}", ex.Message ) End Try Console.WriteLine("エラーメッセージ : {0}", e.Message ) Catch e As ShunConnectionTerminatedException ' ShunConnectionTerminatedExceptionが発生した場合の処理を記述 Console.WriteLine("エラーメッセージ : {0}", e.Message ) End Try |
ShunServiceクラスのAutoCommitプロパティで、自動コミットを無効に切り替えます。
ShunServiceオブジェクト作成時は、自動コミットが有効になっていますので、切替えが必要です。
再度自動コミットを有効にしたい場合は、AutoCommitプロパティにtrueを設定します。
トランザクションを終了し、それまでの操作をShunsakuに反映したい場合は、Commitメソッドを実行します。
エラーが発生したときなど、それまでの操作をShunsakuに反映しないでトランザクションをロールバックする場合は、Rollbackメソッドを実行します。
.NET APIの詳細については、“.NET APIリファレンス”を参照してください。
目次
索引
![]() ![]() |