このページでは、javaでDBに接続する方法を解説していきます。
本作業は、postgresqlとpgadmin4のインストールの完了が前提条件となっています。
もしまだやっていない場合は次の記事を参考にして下さい。
pgadmin4をインストールしよう
続きを見る
javaからDBへ接続をおこなう方法。(postgresql)
1. jdbcをダウンロードしよう
1.下記リンクからダウンロードサイトへ行けます。
https://jdbc.postgresql.org/download.html#others
2.ダウンロードサイトを開いたらダウンロード対象のjarファイルを選択します。
使用しているJREのバージョンによってダウンロード対象のjarファイルが決まります。
※(今回はJRE8を使用しているため、「PostgreSQL JDBC 4.2 Driver, 42.2.16」をダウンロードします)
- JREのバージョン確認方法を見る
Eclipseのサーバタブを選択し、使用しているTomcatサーバをダブルクリックします。
以下の画面が表示されますので、赤枠内の「ランタイム環境」を選択してください。
次のポップアップ画面の赤枠内に記載されているものが現在使用しているJREのバージョンです。
下記のように、しっかりダウンロードされていれば次の作業に進みましょう
2. 使用するDBを用意しよう
次に接続先のDBの用意をします
1.以下のようなテーブルを作成していきましょう。
入力SQL
create table sample (
id int,
name nchar(20),
sex smallint,
expireDate timestamp
);
insert into sample values('1','hasimoto','0','2020/09/22');
insert into sample values('2','william ','0','2020-11-02');
insert into sample values('3','minamino','1','2019/08/08');
テーブルにデータが入ったのを確認したら完了です。
3. Eclipseにjdbcを取り込もう
次にEclipseにダウンロードしたjdbcファイルを取り込んでいきましょう。
1.次の順番で操作します。
対象のプロジェクト(DBを使用したいプロジェクト)を右クリック→「ビルド・パス(B)」→「ビルド・パスの構成」
2.以下の画面が出てきますので、次の順で操作します。
「Javaのビルドパス」→「ライブラリー」→「外部jarの追加」
3.先ほどダウンロードしたjarファイルを選択してください。
4.同jarファイルを対象プロジェクトの「lib」タブの下にコピーします。
4. javaでDBに接続しよう
先ほど作成したDBにjavaで接続してデータを取得しましょう。
下記はサンプルコードです
Sample.java
import java.io.PrintWriter;
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 javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* Servlet implementation class mainController
*/
@WebServlet("/Sample")
public class Sample extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
// 1.データベースに接続する準備
Connection con = null;
Statement stmt = null;
ResultSet result = null;// 2.接続文字列の設定
String url = "jdbc:postgresql://localhost:5432/postgres" ;
String user = "postgres" ;
String password = "パスワード" ; // 3.JDBCドライバの読み込み
try {
// postgreSQLのJDBCドライバを読み込み
Class.forName("org.postgresql.Driver");
} catch(ClassNotFoundException e) {
// JDBCドライバが見つからない場合
e.printStackTrace();
}
try {
// 4.PostgreSQLに接続
con = DriverManager.getConnection ( url, user, password ) ;
// 5.SELECT文の作成・実行
stmt = con.createStatement() ;
String sql = "SELECT * from sample" ;
result = stmt.executeQuery ( sql ) ;
PrintWriter pw = response.getWriter();
pw.print("<html><head>");
pw.print("<title>セッションテスト</title>");
pw.print("</head>");
pw.print("<body>");
ResultSetMetaData rsmd = result.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
// 6.実行結果の取得
while ( result.next() ) {
ArrayList<String> col = new ArrayList<String>();
for(int i=0;i<numberOfColumns;i++){
col.add(result.getString (i+1));
if(i!=(numberOfColumns-1))
pw.print(col.get(i)+",");
else
pw.print(col.get(i)+"<br>");
}
/*6を簡単にしたコードです。コントアウトしているため反映されません。
String col1 = result.getString ( 1 ) ;
String col2 = result.getString ( 2 ) ;
String col3 = result.getString ( 3 ) ;
String col4 = result.getString ( 4 ) ;
request.setAttribute("col1", col1);
request.setAttribute("col2", col2);
request.setAttribute("col3", col3);
request.setAttribute("col4", col4);
pw.print(col1+","+col2+","+col3+","+col4);
pw.print("<br>");
*/
}
pw.print("</body>");
pw.print("</html>");
} catch ( SQLException e ) {
e.printStackTrace() ;
} finally {
// 7.クローズ処理
try {
if ( result != null ) {
result.close() ;
}
if ( stmt != null ) {
stmt.close() ;
}
if ( con != null ) {
con.close() ;
}
} catch ( SQLException e ) {
e.printStackTrace() ;
}
}
}
}
実行結果
少し解説していきます。
(Sample.java内➀)変数を定義し、データベースに接続する準備をしています。
(Sample.java内➁)DB接続情報の設定を行います。
基本的な記述形式は下記のようになります。
String user = "ユーザー名";
String password = "パスワード";
(Sample.java内➂)JDBCドライバをロードします。
// postgreSQLのJDBCドライバを読み込み
Class.forName("org.postgresql.Driver");
} catch(ClassNotFoundException e) {
// JDBCドライバが見つからない場合
e.printStackTrace();
}
(Sample.java内➃)ostgreSQLに接続します
(Sample.java内➄)SELECT文の作成を行います
String sql = "SELECT * from sample" ;
result = stmt.executeQuery ( sql ) ;
この処理でデータベースからデータの取り出しを行っています。
(取出したデータはresultに格納されています。)
(Sample.java内➅)実行結果をブラウザに出力しています
resultに格納されている値をブラウザに表示している処理です。
※コメントアウトしてあるコードはこれを簡単に書いたものです。
(Sample.java内➆)クローズ処理です
以上で終了となります。お疲れさまでした( ̄▽ ̄)