ひとつ前の研修で接続まではできました。では実際にSQL文を動かしましょう。
今回はjavaとSQLServerを接続してSQLのSELECT文を流してみましょう
shohinテーブルの作成
この研修は「SQL - ゼロからはじめるデータベース操作」翔泳社を教科書にしてやったSQL講座の最後に行ったものです。そのためこの本で使っているデータを利用しています。
shohinテーブル作成
SQLServerにshopデータベースを作成し、その中にshohinテーブルを作成します。
この本ではnull値に関して詳しく勉強したので、nullの値が入っていますが、別に同じデータである必要はありません。
商品ID、商品名、商品分類、販売単価、仕入れ単価、登録日の項目を使いました。
shohinテーブル作成
では、このテーブルからデータを検索するプログラムを作りましょう。プリペアードの練習で販売単価が1000円以上のものを検索します。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Main { public static void main(String[] args) { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(ClassNotFoundException e) { throw new IllegalStateException("ドライバーのロードに失敗しました"); } Connection con = null; try { con = DriverManager.getConnection("jdbc:sqlserver://localhost\\SQLEXPRESS;" + "databaseName=shop;IntegratedSecurity=true;TrustServerCertificate=true;"); PreparedStatement pstmt = con.prepareStatement( "select * from shohin where hanbai_tanka >= ?"); pstmt.setInt(1, 1000); ResultSet rs = pstmt.executeQuery(); while( rs.next()) { System.out.printf("id:%s\tname:%s \thanbai:%d\tshiire:%d\n", rs.getString("shohin_id"),rs.getString("shohin_mei"), rs.getInt("hanbai_tanka"),rs.getInt("shiire_tanka")); } pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (con != null) { try { con.close(); } catch(SQLException e) { e.printStackTrace(); } } } } }
前回とほぼ同じでまず接続までします。そのあと、select文でプリペアードをしていきます。
hanbai_tanka >= ?の?のところに1000という数値を与えます。数値なのでsetIntでやっていますが、文字列ならばsetStringです。
executeQuery()をすると、結果がレコードセットで返ってきます。それを rs.next()で1行づつ展開して表示します。
値の取得は整数はgetInt文字列はgetStringでフィールド名を指定します。
最後にコネクションをクローズして終わりますが、その時にエラーが発生するかもしれないとかなりしつこいコーディングです。
結果はこんな感じです。