Q73:@データベースのコミットとロールバックを明示的に使用したい。
A接続、切断の成否を受け取る方法。
Q73-1:
1.データベースアクセスの処理を複合コンポーネントで作成しています。データベースアクセスの中ではSQL文(DELETE)のみ実行し、commitは実行していませんが、アプリケーションからデータベースアクセスを呼んでもどってきたときデータベースがコミットされています。データベースのコミットとロールバックを明示的に使用したいのですが、commit、rollback実行以外のタイミングでコミット、ロールバックされるケースについて教えていただけませんでしょうか。
2.データベース接続およびデータベースの切断の場合、処理完了イベントに渡ってこないのですが、接続、切断の成否を受け取る方法を教えていただけませんでしょうか。
A73-1:
1.MZ Platformにてデータベースのトランザクション処理を行う基本的な方法は次のとおりです。
(1)データベースの自動更新モードを停止する:
[データベースアクセス]のメソッド「setAutoCommit(boolean)」
を引数にfalseを設定して実行する。
(2)「SQL文を実行する(String)」等を使用し、SQL文を実行する。
(3)操作の結果を反映したい場合には「commit()」を、取り消したい場合には「rollback()」を実行する。
(4)データベースを自動更新モードに戻す:
「setAutoCommit(boolean)」を引数にtrueを設定して実行する。
但しMySQLでは「setAutoCommit(true/false)」の代わりに、SQL文で「setAutoCommit=0」、「set AutoCommit=1」を実行しないと自動更新モードを変更できないといったような、各データベースソフトで特徴がある可能性があります。
MySQLについてはサンプルファイルがありますので、ご参考までに掲載致します。
他のデータベースソフトをお使いの場合は、大変お手数ですが、ソフト名等をお知らせください。
2.[データベースアクセス]のメソッド「接続情報、エラー情報等を取得する()」をお試しください。
Insert,Update文など結果を返さないSQL文の実行、接続/切断、あるいはエラー発生時に、[データベースアクセス]から処理完了イベントが発生します。
ここに[テキストエリア」等を繋げ、上記のメソッドを引数に使用してテキストを設定するとメッセージを確認することができます。
イベント番号を設定するとエラー発生時と分けることもできます。
関連ファイル:トランザクション処理.mzax