2. SQL文の実行
JDBC 2章 SQL文の実行
- 2.1. insert, update, delete文の実行
- 2.2. java.sql.PreparedStatement
- 2.3. バッチ処理
2.1. insert, update, delete文の実行
SQLの「insert」「update」「delete」文の実行でも、「java.sql.Statement」オブジェクトを使用します。実行には「executeQuery」メソッドではなく、「executeUpdate」メソッドを使用します。
import java.sql.*; public class InsertUpdateDeleteSample{ public static void main(String args[]) throws ClassNotFoundException,SQLException{ Class.forName("org.postgresql.Driver"); Connection connection=DriverManager.getConnection("jdbc:postgresql:Training","postgres",""); Statement statement=connection.createStatement(); String sql="insert into product values(101,'Viz','Compact car',100);" statement.executeUpdate(sql); sql="update product set price=price*1.1 where price>=200;" int result=statement.executeUpdate(sql); System.out.println(result+" products are changed."); sql="delete product where price<=100;"; int result=statement.executeUpdate(sql); System.out.println(result+" products are deleted."); connection.close(); } }
「executeUpdate」メソッドで実行されるSQL文は、「select」文ではありませんので結果の表を返しません。返り値には「java.sql.ResultSet」オブジェクトではなく、実行によって更新されたテーブルの行数を返します。何も返さないSQL文を実行した場合には「0」を返します。
最後の「java.sql.Connection」クラスの「close」メソッドは、データベースへの接続を解除するメソッドです。このメソッドを明示的に呼び出さなくても、「java.sql.Connection」オブジェクトがガベージコレクトされるときに、自動的にデータベースへの接続は解除されます。
(実習課題1)
1章の実習課題1のプログラムを改良しなさい。
- ウィンドウに「更新」ボタンを追加する事。
- テーブルの各セルは編集可能な状態にし、「更新」ボタンを押すと、各セルを編集した結果がデータベースに反映されるようにする事。
- 編集した行に関するSQL文を発行するように工夫する事。
- トランザクション処理は考慮しなくて良い。