今からはじめるプログラミング74(SQLを発行する・・・その2)

結果が見ずらいので、コネクション(DBへの接続)とかリザルトセット(結果)からメタデータ(データの補完データ?とか設定?)を取得して、結果に列名を加えてみました。

こうすると実行結果をより見やすくできます。

まぁ何ができるか確認するには、メタデータをSystemアウトしてしまうといいです。使える関数とかも確認できます。

 

修正したexecSQL

----------------------------------------------------------------------------------------

    /**
     * SQLを実行するメソッドを追加して、ポインタから実行できるようにした
     * */
    public void execSQL() {

        final String URL = "jdbc:sqlite:E:\\resource\\sqlite_win\\test.db";
        // final String USER = "";
        // final String PASS = "";
        final String SQL = "select * from area where id =? ;";

        try (Connection conn = DriverManager.getConnection(URL);
                PreparedStatement ps = conn.prepareStatement(SQL)) {

            ps.setInt(1, 1);

            try (ResultSet rs = ps.executeQuery()) {
                ///MetaDataから列名とかを取得する
                ResultSetMetaData mDat = rs.getMetaData();
                int colCnt = mDat.getColumnCount();
                //列名をいれる配列
                String[] names = new String[colCnt];

                for(int i=0;i<colCnt ;i++){
                    //列名をmetadataから配列に入れて表示(System.out)
                    names[i] = mDat.getColumnName(i+1);
                    System.out.print(names[i] + " | ");

                }
                //見ずらいので改行
                System.out.println( " ");

                while (rs.next()) {
                    for(int i=0;i<colCnt ;i++){
                        System.out.print(rs.getString(names[i]) + " | ");

                    }
                    System.out.println( " ");

                }
            }
            ;
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("処理が完了しました");
        }
    }

 

------------------------------------------------------------------------------

SQLを現場で使う場合は、件数が多い場合など、ページングを行うことがほとんどですが、そのために実際のSQLの前に件数カウントのSQLを発行することが多いですね。

また、コスト(時間とか処理の重さ)を計測して、必要ならチューニングする必要もあります。データベーススペシャリストなんて資格もあるくらいですから、深い分野であるので、体制の充実したプロジェクトだったら、逐次相談して進めましょう。

ものによっては、プリントアウトするとA4数枚とかのSQLを書くこともあります。。。商用DBでストアドとかプロシジャなど多用したり、何をどこまで使用するか、たいていルールが決まっているので、確認する必要があります。

 

・・・というかよく見たらコネクションクローズしてないですねwwww