Connection インタフェース

[内容]

  特定のデータベースとの接続 (セッション) を実現します.Connection によって,SQL 文がサーバに送られ,実行された結果が返されます.各文は,実行が成功してコミット(文の内容に従ってデータベースが更新)されるか,または,実行が途中で失敗しロールバック(データベースを文が実行される前の状態に戻す)されます.デフォルトでは,文が送られる毎に,自動的にコミットまたはロールバックされます.

  しかし,場合によっては,ある文が正しく実行されない限り,他の文の変更を有効にしたくないような場合があります.そのような場合は,自動コミットモードをオフにし,複数の文を送った後,commit メソッドの実行によりコミットする必要があります(エラーが生じた場合はロールバック).

[主なメソッド]

[使用例]

  1. プログラム例は,サーバ cs-www にある MySQL のデータベースへ,JDBC を使用して接続した例です.

  2. プログラム例は,サーバ cs-www にある MySQL のデータベースへ JDBC を使用して接続し,データベースを作成,選択,および,削除した例です.

  3. プログラム例は,サーバ cs-www にある MySQL のデータベースへ JDBC を使用して接続し,テーブルを作成した例です.このプログラムを実行すると以下のような出力が得られます.
    Tables_in_base
    		 gakuseki
    Field, Type, Null, Key, Default, Extra
    		 No, int(9), , PRI, 0,
    		 name, varchar(50), , , ,
    		 math, int(3), YES, , null,
    			

  4. プログラム例は,サーバ cs-www にある MySQL のデータベースへ JDBC を使用して接続し,作成したテーブルにデータを読み込ませた例です.テーブルへデータを読み込む方法として,二つの方法があります.一つは,ファイルから読み込む方法です.ファイルから読み込む場合は,1 行に 1 レコードの形式でタブで区切った値を記述したテキストファイルを作成します.このプログラムでは,次に示す2つのファイル「test1.txt」と「test2.txt」を使用しています.ファイル「test2.txt」には,ファイル「test1.txt」と同じキーのデータが含まれていますが,このデータは無視されます.
    test1.txt
        111111111	山田	10
        555555555	佐藤	50
    test2.txt
        222222222	鈴木	20
        333333333	山本	30
        111111111	山田	10
    			
      あと一つの方法は,INSERT コマンドを利用する方法です.INSERT コマンドの場合は,既にあるデータと同じキーのデータを入力するとエラーになってしまいます.このプログラムを実行すると以下のような出力が得られます.
    No, name, math
         111111111, 山田, 10
         555555555, 佐藤, 50
    No, name, math
         111111111, 山田, 10
         555555555, 佐藤, 50
         222222222, 鈴木, 20
         333333333, 山本, 30
    No, name, math
         111111111, 山田, 10
         555555555, 佐藤, 50
         222222222, 鈴木, 20
         333333333, 山本, 30
         444444444, 杉山, 40
    			

  5. プログラム例は,サーバ cs-www にある MySQL のデータベースへ JDBC を使用して接続し,テーブル内のレコードの削除,データの修正,および,レコードの挿入を行った例です.このような処置を行う場合,以下の点に注意してください.

    1. 「USE データベース名」の効果がないので,実際に使用するデータベースで接続する必要がある.
      Con = DriverManager.getConnection("jdbc:mysql://cs-www/base?" +
      "useUnicode=true&characterEncoding=sjis", "xxxxx", "*****");
    2. Statementオブジェクトの定義方法(コンストラクタの引数)
      Statement SQL = Con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
    削除前:
    No, name, math
         111111111, 山田, 10
         555555555, 佐藤, 50
         222222222, 鈴木, 20
         333333333, 山本, 30
         444444444, 杉山, 40
    削除後:
    No, name, math
         111111111, 山田, 10
         555555555, 佐藤, 50
         444444444, 杉山, 40
    修正,挿入後:
    No, name, math
         111111111, 山田, 100
         555555555, 佐藤, 50
         999999999, 小川, 88
         444444444, 杉山, 90
    			

  6. プログラム例は,サーバ cs-www にある MySQL のデータベースへ JDBC を使用して接続し,テーブル内のカラムの追加,および,削除を行った例です.このような処置を行う場合,以下の点に注意してください.

    1. 「USE データベース名」の効果がないので,実際に使用するデータベースで接続する必要がある.
      Con = DriverManager.getConnection("jdbc:mysql://cs-www/base?" +
      "useUnicode=true&characterEncoding=sjis", "xxxxx", "*****");
    2. Statementオブジェクトの定義方法(コンストラクタの引数)
      Statement SQL = Con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_UPDATABLE);
    追加前:
    No, name, math
         222222222, 鈴木, 20
         333333333, 山本, 30
         111111111, 山田, 10
    カラムの追加後:
    No, name, math
         222222222, 鈴木, null, 20
         333333333, 山本, null, 30
         111111111, 山田, null, 10
    カラムの削除後:
    No, name, math
         222222222, 鈴木, 20
         333333333, 山本, 30
         111111111, 山田, 10
    			

[参照]

DriverManager, Statement, ResultSet, PreparedStatement, ResultSetMetaData

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引