本投稿ではJDBCを使ってJavaのプログラムからSQLの実行、実行結果の表示を行うことで、JDBCの使い方を説明します
前提としてまずはこちらの
https://dev.to/programmingmonky/postgresqlsql-3dja
記事の通りのデータベース、テーブルが作成されており、
データの投入とSQLの実行確認ができているものとします。
JDBCのダウンロード
https://jdbc.postgresql.org/download.html
こちらのサイトからJDBCをダウンロードします
JDBCの追加先アプリケーションの作成
JDBCを追加するアプリケーションを作成します。
Eclipseを開き、ファイル>新規>Javaプロジェクトを選択
適当な名前を付けてプロジェクトを作成してください
今回私はjdbcsampleとしました
JDBCのビルドパスの追加
インストールしたJDBCを解凍し、Eclipseでビルドパスを追加してください
プロジェクト右クリック>ビルド・パス>外部アーカイブの追加 で解凍したJDBCを選択してください
これでJDBCがプロジェクトに追加されました
Javaのプログラム作成
ファイル>新規>クラスから新しくJavaのファイルを追加します。
名前にMainと付け、「完了」を押します。
作成したMainのファイルに以下のJavaのプログラムを張り付けます
package jdbcsample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
try (
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sample", // "jdbc:postgresql://<場所>:<ポート>/<データベース名>"
"postgres", //user
"postgres"); //password;
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(
"select code,name_jp,region,\r\n" +
"count('1') over(partition by region) as num\r\n" +
"\r\n" +
"from m_country\r\n" +
"order by num"
);
){
List<String> columns = new ArrayList<String>();
ResultSetMetaData rsmd = resultSet.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
columns.add(rsmd.getColumnName(i));
}
System.out.println(resultSet);
while (resultSet.next()) {
System.out.println("\ncount:" + resultSet.getRow());
columns.stream().forEach((i)->{try {
System.out.println(i + ":" + resultSet.getString(i));
} catch (SQLException e) {
e.printStackTrace();
}});
}
}
}
}
プログラムの意味を一部解説すると
以下の部分でデータベースに接続しています
Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sample", // "jdbc:postgresql://<場所>:<ポート>/<データベース名>"
"postgres", //user
"postgres"); //password;
※ユーザー名、ポート、パスワードがなどが私の環境と違う場合、別のものを選択してください。
以下の部分でSQLを実行して結果を受け取っています
ResultSet resultSet = statement.executeQuery(
"select code,name_jp,region,\r\n" +
"count('1') over(partition by region) as num\r\n" +
"\r\n" +
"from m_country\r\n" +
"order by num"
);
以下の部分で取得結果を表示する処理を実行しています。
while (resultSet.next()) {
System.out.println("\ncount:" + resultSet.getRow());
columns.stream().forEach((i)->{try {
System.out.println(i + ":" + resultSet.getString(i));
} catch (SQLException e) {
e.printStackTrace();
}});
}
このプログラムを保存し、
パッケージエクスプローラでプロジェクト名を右クリックし
実行>Javaアプリケーション
をクリックしてください。
実行結果
IDEのコンソール欄にSQLを実行した結果が表示されています。
同じSQLを実行しているのでこの投稿の実行結果と一致しているはずです。
code | name_jp | region | num |
---|---|---|---|
643 | ロシア連邦 | ロシア | 1 |
010 | 南極 | 南極 | 2 |
470 | マルタ | 地中海地域 | 2 |
196 | キプロス | 地中海地域 | 2 |
074 | ブーベ島 | 南極 | 2 |
666 | サンピエール島・ミクロン島 | 北アメリカ | 3 |
840 | アメリカ合衆国 | 北アメリカ | 3 |
124 | カナダ | 北アメリカ | 3 |
以上がJDBCの使い方になります。
Top comments (0)