Statementオブジェクト

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

■ 主なメソッド

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

○ ファイル

ConnectionTest.javaファイルをコピーして、次のファイルを作成してください。

ファイル名 StatementTest.java

サンプルダウンロード

○ プログラム

次のようにプログラムを入力してください。

StatementTest.java

  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 StatementTest{
  7.     public static void main(String[] args){
  8.         try{
  9.             //JDBCドライバークラスを指定する
  10.             String drivername = "com.mysql.cj.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.             
  37.             //SQL文を実行する
  38.             int ret = st.executeUpdate(sql);
  39.             
  40.             //変更のあった行数を表示する
  41.             System.out.println("変更のあった件数:" + ret);
  42.             //データベースを切断する
  43.             st.close();
  44.             con.close();
  45.         }catch(Exception e){
  46.             //例外の状態を出力する
  47.             e.printStackTrace();
  48.         }
  49.     }
  50. }

○ コンパイルと実行

C:¥work>javac StatementTest.java
C:¥work>java -cp mysql-connector-java-8.0.22.jar;. StatementTest
登録するユーザー情報を入力してください。
ID:4
ユーザー名:takana
パスワード:tpass
氏名:田中
変更のあった件数:1

C:¥work>

○ 解説

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

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

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

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

○ データベースの確認

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

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

前へ   次へ