JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > JDBC (トランザクション)編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2002/02/03  田中宏和
JDBC (トランザクション)編
◆JDBCとは?
JDBCとはJavaからデータベースにアクセスするためのAPIです。JDBCのAPIを使用してJavaのプログラムからデータベースにSQL文を発行してデータベースのデータの操作を行うことができます。
◆データベースとは?
データベースとはデータの集まりのことです。たくさんのデータを整理、分類して管理することによってユーザーが必要なデータを簡単に検索して取り出したり、またデータを追加、更新したりできるようになります。
◆トランザクションとは?
トランザクションとはデータベースの一連の更新処理(INSERT,UPDATE,DELETE)のことです。トランザクションを開始(begin)して、トランザクション内である更新処理をした時点ではデータベースにその更新は反映されません。トランザクション(一連の更新処理)が終了しcommitしてはじめてデータベースに一連の更新処理が反映されます。また、トランザクション内でエラーが発生した場合、,rollbackすることでそこまでの処理を取り消すことができます。
◆ここでの環境
OS Windows 2000
J2SE SDK 1.4.0
データベース MS Access 2000
◆データベースの作成
データベースの作成、データの登録、DSNの登録まではJDBC編を参考にしてください。
◆Javaソースコード
HelloWorldJDBCBatch.java(ここからダウンロード)
import java.sql.*;

public class HelloWorldJDBCBatch {
  public static void main(String[] args) {
    Connection con = null;
    Statement stmt = null;
    try {
      // ドライバクラスをロード
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      // データベースへ接続
      con = DriverManager.getConnection("jdbc:odbc:helloworld", "", "");
      // 自動コミットモードを解除します
      con.setAutoCommit(false);
      // ステートメントオブジェクトを生成
      stmt = con.createStatement();
      
      /**処理1**/
      stmt.addBatch("INSERT INTO HELLO_WORLD_TABLE 
                     VALUES(3,'ドイツ語','Hallo Welt')");

      /**処理2**/
      stmt.addBatch("INSERT INTO HELLO_WORLD_TABLE 
                     VALUES(4,'スペイン語','Hola Mundo')");

      // バッチを実行します
      stmt.executeBatch();

      // コミットします
      con.commit();
    } catch (Exception e) {
      e.printStackTrace();
      try {
        // ロールバックします
        con.rollback();
      } catch (SQLException ex) {
        e.printStackTrace();
      }
    } finally {
      // データベースへの接続をクローズします
      try {
        if (stmt!=null) {
          stmt.close();
        }
        if (con!=null) {
          con.close();
        }
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}
 
 
◆コンパイルと実行
コマンドプロンプト
C:\作業フォルダ\JavaHello>javac HelloWorldJDBCBatch.java

C:\作業フォルダ\JavaHello>java HelloWorldJDBCBatch

C:\作業フォルダ\JavaHello>

成功しました。テーブルを見てみましょう!
おおお!追加されました!
 
◆ロールバックの実験
処理1のSQL文を"INSERT INTO HELLO_WORLD_TABLE VALUES(5,'フランス語','Bonjour, tout le monde')"
処理2のSQL文を"INSERT INTO HELLO_WORLD_TABLE VALUES(1,'ドイツ語','Hallo Welt')"
のように変更して 実行してみましょう。処理1は正常に追加されるはずですが、処理2はキーが重複しているためエラーが発生してしまいます。それでプログラムではrollbak()メソッドが呼び出さます。テーブルを見てみよう。
ロールバックされて追加されていませんね!
 
■関連
JDBC編
JDBC(MySQL)編
JDBC(PostgreSQL)編
プロパティファイル編

 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME