Statementオブジェクト
Statementインタフェースは、SQL文などを使ってデータベースに問い合わせをするためのクラスです。Connectionオブジェクトのメソッドから取得して利用します。
■ 主なメソッド
メソッド名 | 概要 |
---|---|
close | データベースの接続を閉じる |
execute | 複数の結果を返す可能性のあるSQL文を実行する |
executeQuery | SELECT文の実行結果を表すResultSetオブジェクトを返す |
executeUpdate | INSERT、UPDATE、DELETE文を実行する |
isClose | このオブジェクトがクローズされているかどうかを取得する |
○ ファイル
ConnectionTest.javaファイルをコピーして、次のファイルを作成してください。
ファイル名 | StatementTest.java |
---|
○ プログラム
次のようにプログラムを入力してください。
StatementTest.java
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- public class StatementTest{
- public static void main(String[] args){
- try{
- //JDBCドライバークラスを指定する
- String drivername = "com.mysql.cj.jdbc.Driver";
- //データベースを指定する
- String url = "jdbc:mysql://localhost:3306/books? characterEncoding=utf8";
- //ユーザー名を指定する
- String username = "root";
- //パスワードを指定する
- String password = "";
- //指定したドライバークラスを読み込む
- Class.forName(drivername);
- //データベースに接続する
- Connection con = DriverManager.getConnection(url, username, password);
- //追加する情報を入力する
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- System.out.println("登録するユーザー情報を入力してください。");
- System.out.print("ID:");
- int id = Integer.parseInt(br.readLine());
- System.out.print("ユーザー名:");
- String uname = br.readLine();
- System.out.print("パスワード:");
- String passwd = br.readLine();
- System.out.print("氏名:");
- String name = br.readLine();
- //入力した情報をもとにSQL文を作成する
- String sql = "INSERT INTO Users VALUES(" + id + ", '" + uname + "', '" + passwd + "', '" + name + "')";
- //Statementオブジェクトを取得する
- Statement st = con.createStatement();
- //SQL文を実行する
- int ret = st.executeUpdate(sql);
- //変更のあった行数を表示する
- System.out.println("変更のあった件数:" + ret);
- //データベースを切断する
- st.close();
- con.close();
- }catch(Exception e){
- //例外の状態を出力する
- e.printStackTrace();
- }
- }
- }
○ コンパイルと実行
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メソッドを使ってデータベースへの接続を閉じます。
○ データベースの確認
phpMyAdminでuserテーブルのデータを確認してください。レコードが追加されていることを確認できます。