ひとつ前の研修で接続まではできました。では実際に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でフィールド名を指定します。
最後にコネクションをクローズして終わりますが、その時にエラーが発生するかもしれないとかなりしつこいコーディングです。
結果はこんな感じです。