Statementオブジェクト

 Statementインタフェースは、SQL文などを使ってデータベースに問い合わせをするためのクラスです。Connectionオブジェクトから取得して利用します。

■ 主なメソッド

メソッド名 概要
close データベースの接続を閉じる
execute 複数の結果を返す可能性のあるSQL文を実行する
executeQuery SELECT文の実行結果を表すResultSetオブジェクトを返す
executeUpdate INSERT、UPDATE、DELETE文を実行する
isClose このオブジェクトがクローズされているかどうかを取得する
Statementの主なメソッド

○ プロジェクト

 プロジェクトを作成して確認してみましょう。

プロジェクト名 StatementTest

サンプルダウンロード

〇 作成の準備

 ConnectionTestプロジェクトをコピーして作成してください。

○ プログラム

 mainメソッドに次のように記述してください。

  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.Statement;
  6. public class ConnectionTest {
  7.  public static void main(String[] args) {
  8.   try{
  9.    //JDBCドライバークラスを指定する
  10.    String drivername = "com.mysql.jdbc.Driver";
  11.    //データベースを指定する
  12.    String url = "jdbc:mysql://localhost:3306/books?characterEncoding=utf8";
  13.    //ユーザー名を指定する
  14.    String username = "root";
  15.    //パスワードを指定する
  16.    String password = "";
  17.    //指定したドライバークラスを読み込む
  18.    Class.forName(drivername);
  19.    //データベースに接続する
  20.    Connection con = DriverManager.getConnection(url, username, password);
  21.    //追加する情報を入力する
  22.    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  23.    System.out.println("登録するユーザー情報を入力してください。");
  24.    System.out.print("ID:");
  25.    int id = Integer.parseInt(br.readLine());
  26.    System.out.print("ユーザー名:");
  27.    String uname = br.readLine();
  28.    System.out.print("パスワード:");
  29.    String passwd = br.readLine();
  30.    System.out.print("氏名:");
  31.    String name = br.readLine();
  32.    //入力した情報をもとにSQL文を作成する
  33.    String sql = "INSERT INTO Users VALUES(" + id + ", '" + uname + "', '" + passwd + "', '" + name + "')";
  34.    //Statementオブジェクトを取得する
  35.    Statement st = con.createStatement();
  36.    //SQL文を実行する
  37.    int ret = st.executeUpdate(sql);
  38.    //変更のあった行数を表示する
  39.    System.out.println("変更のあった件数:" + ret);
  40.    //データベースを切断する
  41.    con.close();
  42.   }catch(Exception e){
  43.    //例外の状態を出力する
  44.    e.printStackTrace();
  45.   }
  46.  }
  47. }

○ 実行結果

登録するユーザー情報を入力してください。
ID:4
ユーザー名:tanaka
パスワード:tpass
氏名:田中
変更のあった件数:1

○ 解説

 今回はUsersテーブルにデータを追加するプログラムです。32~39行目では、追加するデータを入力しています。入力したデータをもとに42行目でSQL文を作成しています。今回はレコードを追加するのでINSERT文を作成します。このようにJavaプログラムの中でSQL文は文字列として扱います。

 45行目でStatementオブジェクトを取得しています。ConnectionオブジェクトのcreateStatementメソッドを使って取得します。

 48行目では、SQL文を実行しています。excecuteUpdateメソッドは影響のあった行数を返すので、それをret変数に格納し、51行目で表示しています。一連の処理が終わったら54行目にもあるようにConnectionオブジェクトのcloseメソッドを使ってデータベースへの接続を閉じます。

データベースとStatementオブジェクトの関係
データベースとStatementオブジェクトの関係

○ データベースの確認

 phpMyAdminでUserテーブルのデータを確認してください。レコードが追加されていることを確認できます。

データベースに追加された
データベースに追加された

前へ   次へ