| |
|
|
|
| |
 |
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 |
|
|