サンプルコード1

まずはじめにJDBCの基礎として、コンソール上で動くものを作ってみる。以下のサンプルは、DBにアクセスし、レコードを1件追加し、全レコードを表示するものである。

JdbcCuiSample.java


import java.sql.*;

public class jdbcCuiSample {
    public static void main(String argv[]){
        String user = "データべースユーザ名";
        String passwd = "パスワード";
        String url = "jdbc:postgresql://サーバ名/データべース名";
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;

        try{
            //使用するドライバの読み込み
            Class.forName("org.postgresql.Driver");
            System.out.println("ドライバの読み込みが完了");
            //接続。getConnection()の中の書き方はドライバに依存する。
            con = DriverManager.getConnection(url,user,passwd);
            System.out.println("接続完了");

            //SQL文を実行するStatementの作成
            stmt = con.createStatement();

            //INSERT文の実行
            String sql = "INSERT INTO t99xxxxx_tbl1 VALUES" + 
                    "('Concept',  'http://www.hogehoge3.com'," +
		       "'Insert from enshuIndexCui.java')";
            int count = stmt.executeUpdate(sql);
            System.out.println(count + "件のレコード追加");

            //SELECT文の実行
            sql = "SELECT * FROM t99xxxxx_tbl1";
            rs = stmt.executeQuery(sql);
            System.out.println("SELECT文の実行");
            System.out.println("button0 | name0 | textarea0");
            //ResultSetからデータの取り出し
            while(rs.next()){
                String button0 = rs.getString("button0");
                String name0 = rs.getString("name0");
                String textarea0 = rs.getString("textarea0");
                System.out.println(button0 + " | ");
                System.out.println(name0 + " | ");
                System.out.println(textarea0);
            }
        }catch(SQLException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                //切断。closeする。
                if(rs != null) rs.close();
                if(stmt != null) stmt.close();
                if(con != null) con.close();
             }catch(Exception e){
                e.printStackTrace();
             }
         }
    }
}

解説

INSERT文の実行
接続したDBへのINSERT文の実行にはexecuteUpdateメソッドを使用する。このメソッドは変更したレコード数としてint型の数字を返す。UPDATE文、DELETE文などのDML文や、CREATE TABLE文やDROP TABLE文などのDDL文もこのメソッドを使用する。
SELECT文の実行
SELECT文の実行にはexecuteQueryメソッドを使用する。このメソッドは抽出したレコードの塊としてResultSetクラス(java.sqlパッケージ)のオブジェクトを返す。
ResultSetからデータの取り出し
ResultSetの概念は以下のように表せる。

ResultSetは抽出してきたレコードの塊と、ひとつひとつのレコードをさすカーソルから成る。StetementクラスのオブジェクトのexecuteQueryメソッドから受け取った直後、このカーソルは一番最初のレコードのひとつ前(何もないところ)を指している。このカーソルを動かしながらResultSetからデータを取り出す。

nextメソッドを実行すると、カーソルは一つ後ろのレコードに移動し、その位置にデータが入っていればtrue、なければfalseを返す。ゆえにこのサンプルのようにwhile文を利用すればすべてのレコードについての操作が簡単に行える。レコードからそれぞれのデータを取り出すには、getxxxxメソッドを使う。Stringで取り出したい場合はgetString,、intで取り出したい場合はgetIntなど、いろいろな型に応じたメソッドが用意されている。これを使うとカーソルが指しているレコードから指定した列の値を取り出すことができる。

SQLException
SQLExceptionは、データベースの接続エラーや、SQL命令に対するエラーの際に投げられてくる。デバッグの時に非常に役に立つのでメッセージはよく読むようにしておくとよさそう。

実行結果


# java jdbcCuiSample
ドライバの読み込みが完了
接続完了
1件のレコード追加
SELECT文の実行
button0 | name0 | textarea0
method | http://www.hogehoge.com | Very Useful!!
class | http://www.hogehoge2.com | Cool!!
Concept | http://www.hogehoge3.com | Insert from enshuIndexCui.java



→サンプルコードその2
←もどる
ホームへ