新トップページへ | Tip

JDBCの基本的な使い方のメモ

最終更新日 : 07/05/06

 JDBCを利用し、javaからデータベースにアクセスする方法についてのメモです。テストではPostgreSQLをDBに使いました。

☆もくじ

  1. 必要な設定を行う
  2. プログラムより問い合わせを行う

必要な設定を行う

使用するデータベースに付属しているJDBCを使います。コンパイルオプションにこのJDBCを含めてやる必要があります。
Eclipse上では、マウスだけで、設定可能です。下のほうにやり方を書いてみました。

問い合わせを行う

以下がとりあえず組んでみたサンプル
ソース中にも書いてありますが、接続先のDBにtext_tblというテーブルが存在している必要があります。あらかじめ、データベースやテーブルを作成しておいてください。

import java.sql.*;

class JdbcTest
{
        public static void main(String[] args)
        {
                System.out.println("ドライバをロードします。");
                //ドライバをロードする処理。
                try
                {
                        //ここでクラスを指定してやると、内部でDriverManagerにドライバを登録してくれるらしいです。
                        /*
                        データベース毎に、ドライバが提供されているはずなので、使うデータベースにあわせて
                        何を使うかを指定してやる必要がある。
                        PostgreSQLの場合、これでOK(PostgreSQLのドライバへのパスを指定してやる必要があります!
                        */
                        Class.forName("org.postgresql.Driver");
                }
                catch(ClassNotFoundException e)
                {
                        System.out.println("ドライバのロードに失敗しました。終了します。");
                        return;
                }
                
                
                System.out.println("データベースへと接続を試みます");
                //データベースに接続を行う処理。
                Connection connect;
                Statement st;
                ResultSet res;
                
                try
                {
                        //接続を行う。
                        connect = DriverManager.getConnection(
                                        "jdbc:postgresql://localhost:5432/postgres",
                                        "postgres",
                                        "usagi"

                                        );
                        /*
                        Note:getConnectionの引数について
                                第1引数
                                        URLというものらしいです。フォーマットは以下のとおりです。
                                        jdbc:サブプロトコル://ホスト名前:ポート番号/データベース名前
                                第2引数
                                        ログインするユーザー名前
                                第3引数
                                        パスワード
                        */
                        //問い合わせステートメント
                        st = connect.createStatement();
                        //SQLで問い合わせの実行
                        res = st.executeQuery("SELECT * FROM text_tbl");
                        /*
                        あらかじめtext_tblというテーブルがpostgresというデータベースにあることが前提。
                        CREATE TABLE text_tbl
                        (
                                id Integer PRIMARY KEY,
                                name TEXT NOT NULL
                        )
                        として作成されているものとします。
                        */
                        
                        //取得したResultSetの情報について取得する。
                        ResultSetMetaData meta = res.getMetaData();
                        int column_count = meta.getColumnCount();  //ResultSetのカラムの数を取得する。
                        int c = 1;
                        
                        //カラムを表示する。
                        System.out.print("    ");
                        while( column_count-- > 0 )
                        {
                                /*
                                getColumnNameは数値指定の範囲が1〜なので注意。ゼロを指定すると
                                例外を投げます。
                                */
                                System.out.print(meta.getColumnName(c++)+"  ");
                        }
                        System.out.println("");
                                                
                        //問い合わせ結果を出力する。
                        while( res.next() )
                        {
                                System.out.print(res.getRow()+" : ");   //行番号を出力
                System.out.println(res.getString("id") + "\t" + res.getString("name"));
                        }
                        /*
                        nextメソッドについて
                                カーソルを次に移動させる機能です。
                                ResultSetのカーソルは、初期状態では、最初の行の手前を指しているため、最初にnext
                                を呼び出し、それからデータを取得すると、最初の行のデータが取得できます。
                                データが無くなるとfalseを返します。
                        */
                        
                        //リソース開放
                        res.close();
                        st.close();
                        connect.close();
                }
                catch(SQLException e)
                {
                        System.out.println("問い合わせ中、エラーが発生しました。終了します。");
                        return;
                }
                
                System.out.println("\n正常に終了しました。");
        }
}

ちなみに実行結果は以下のとおりです。
text_tblに対し
INSERT INTO text_tbl VALUES(10,'nyannyan')

INSERT INTO text_tbl VALUES(10,'wanwan')
を実行した状態のtexT_tblに対する問い合わせ結果です。

ドライバをロードします。
データベースへと接続を試みます
    id  name  
1 : 10  nyannyan
2 : 11  wanwan

正常に終了しました。

EclipseにてJDBCをクラスパスに含める方法

Eclipse上で、使用するjarファイルをクラスパスに含めてやればOKです。
以下の例は、PostgreSQLに接続する際、必要なjarファイルをクラスパスに追加しているところです。