ㅤㅤㅤ

JavaからJDBCでPostgreSQL 본문

プログラミング/Postgre

JavaからJDBCでPostgreSQL

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 2017. 7. 20. 17:30



JavaからJDBCでPostgreSQLにアクセス(トランザクション、COMMIT、ROLLBACK)

				
package javaPosgre;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Posgre2 {
	public static void main(String[] args) {
		try {
			connectionTest();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * コネクションの取得
	 * 
	 * @throws Exception
	 *             実行時例外
	 */
	public static void connectionTest() throws Exception {
		Connection conn = null;

		try {

			// クラスのロード
			Class.forName("org.postgresql.Driver");

			// コネクションの取得
			conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres", "ps");

			// 自動コミットを解除する(トランザクション開始)
			conn.setAutoCommit(false);

			// INSERTのテスト
			insertTest(conn);

			System.out.println("connectionTest_OK");

			// コミット
			conn.commit();
		} catch (Exception e) {

			// ロールバック
			conn.rollback();
			System.out.println("connectionTest_NG");
			throw e;
		} finally {
			if (conn != null) {
				conn.close();
			}
		}
	}

	/**
	 * データ取得テスト
	 * 
	 * @param conn
	 *            コネクション
	 * @throws SQLException
	 *             SQL例外
	 */
	public static void insertTest(Connection conn) throws SQLException {
		Statement stmt = null;

		try {

			// ステートメントの作成
			stmt = conn.createStatement();

			// SQLの実行(updateもexecuteUpdateメソッドでいけます)
			stmt.executeUpdate("insert into m_user(id,name) values('004','test user4');");

			System.out.println("selectTest_OK");
		} catch (Exception e) {
			System.out.println("selectTest_NG");
			throw e;
		} finally {
			if (stmt != null) {
				stmt.close();
				stmt = null;
			}
		}
	}
}


			

トランザクションの開始はコネクションのsetAutoCommitメソッドで行います。

				
// 自動コミットを解除する(トランザクション開始)
conn.setAutoCommit(false);


			

コミットはコネクションのcommitメソッドで行います。

				
// コミット
conn.commit();
			

			

ロールバックはコネクションのrollbackメソッドで行います。

				
// ロールバック
conn.rollback();
			

			


setAutoCommit(false)を行った後に、SQLを実行しても最終定期にcommit()しなければ、データベースに反映されません。 









1. 포스트그레SQL 설치


  1) 다운로드 - http://www.postgresql.org/download/windows/







2) 설치 시작



<포스트레SQL이 설치 될 폴더 설정>



<데이터를 저장할 폴더 설정>

그냥 넘겨도 된다.



<비밀번호 설정>



<포트 번호 설정> 

그냥 넘겨도 된다.



<데이터베이스 클러스터 설정> 

그냥 넘겨도 된다.



<진짜 설치할 건가요?>



<설치중...>



<플로그인과 같은 스텍 빌더 설치를 할건지 물어본다>

잘 모르면 패스하는게 마음에 편하다.

패스할 거면 체크를 풀고 끝내자.







2. JDBC 설치


1) 다운로드 - http://jdbc.postgresql.org/download.html




2) 설치

java 설치 폴더 -> ext -> 다운받은 파일 넣기 

(###64비트이고 기본 폴더가 program files라면 32비트 자바에 넣으면 안됩니다.###)



출처: http://derveljunit.tistory.com/93 [IT를 보고, 듣고, 사색하고]







크리에이티브 커먼즈 라이선스
Creative Commons License








1. 포스트그레SQL 실행 - pgAdmin III 를 실행






2) PostgreSQL 9.3 을 클릭

3) 비밀번호는 설치시 설정한 것을 넣는다.





4) 테이블스페이스를 선택




5) 새 테이블스페이스 선택




6) 이름을 채워넣고 '정의'로 이동




7) '정의'에서는 테이블스페이스를 저장할 폴더를 선택한다.




8) 데이터베이스를 선택 -> 스키마 -> 퍼블릭에 들어오면 

테이블이 있다.




9) 새 테이블 선택





10) 이름 넣고




11)  속성을 추가하기 위해'열'로 이동하여 추가 버튼을 선택

12) 이름과 데이터 형식 지정 (열-속성 값)

13) 확인을 누르면 추가가 된다.

14) 최종적으로 확인을 누른다.




14) 최종적으로 테이블이 생성 된걸 확인할 수 있다.




출처: http://derveljunit.tistory.com/94 [IT를 보고, 듣고, 사색하고]









크리에이티브 커먼즈 라이선스
Creative Commons License




JSP 연동 방법


참조 - http://blog.daum.net/chemusic/25




중요 포인트 

<%

/** 실행결과

 * JDBC Connection String Examples

 *

 * jdbc:postgresql:database_name 

 * jdbc:postgresql://host/database_name 

 * jdbc:postgresql://host:port/database_name 

 */


    String url = "jdbc:postgresql:테이블명";  

    String usr = "유저이름(따로 만들지 않았다면 postgres 가 됩니다)";  

    String pwd = "패스워드(따로 만들지 않았다면 설치시 설정한 패스워드)";


    Class.forName("org.postgresql.Driver");

    

    // -- 1

    Connection conn = DriverManager.getConnection(url, usr, pwd);

    System.out.println(conn);

    conn.close();

    

    // -- 2

    url = "jdbc:postgresql://localhost/테이블명";

    conn = DriverManager.getConnection(url, usr, pwd);

    System.out.println(conn);

    conn.close();


    

    // -- 3

    url = "jdbc:postgresql://localhost:5432/테이블명";

    conn = DriverManager.getConnection(url, usr, pwd);

    System.out.println(conn);

    conn.close();

 %>



안되는 점이나 의견사항있으면 댓글달아주세요



출처: http://derveljunit.tistory.com/95 [IT를 보고, 듣고, 사색하고]




■概要

とにかくちょろっと使いたい人向け
Windows版です。

※はじめに、ユーザーを新しく作ってそのユーザーでSQLを実行! とやろうとするとハマるので(ハマりました)
 初めから登録されているスーパーユーザーで進めて行きます。

ざっくりと流れを説明すると、
1.PostgreSQL本体とJDBCドライバを入手する
2.Javaで新規プロジェクトを作成し、jarを参照し、ソースコードをコピペする
3.実行!
と言った感じです。
初期から存在しているテーブルを参照しに行くので、準備のためのCREATE文もINSERT文も必要ありません。

■準備

・PostgreSQL本体の入手

http://www.postgresql.jp/download
ダウンロードリンクから、OSに対応したPostgreSQLをダウンロードする
ダウンロード.png

今回はWindowsの64bit版
ダウンロード2.png

・JDBCドライバの入手

JavaでPostgreSQLへ接続するためにはJDBCドライバが必要
https://jdbc.postgresql.org/download.html
JDBC.png

Current Versionからダウンロードするドライバを選択。
Java8の場合は、

JDBC42 Postgresql Driver, Version 9.4.1212

を選択。(バージョン部分は2016/11/18時点)

Java8以外の場合は、
Other Versionsを見るとJDKに対してどれを選択したら良いのかが書いてある。
JDBC2.png

ダウンロード後、解答し、jarファイルを適当な場所に置いておく。

■PostgreSQLのインストール

何も変更しないで次に進んでいく。
パスワードを決める箇所があるので、入力しパスワードをメモしておく(重要)。

Password:test

■Javaのプロジェクトを作成

・新規作成

File -> New -> Java Project
image

ProjectName:ConnectPostgreSample(すでに存在しているので、画像は名前の末尾に2をつけています)
image

・メインクラスの作成

src右クリック -> New -> Class
image

Name:Main(すでに存在しているので、画像は名前の末尾に2をつけています)
image

・JDBCのjarを参照する

プロジェクトを右クリック -> Build Path -> Add External Archives 
image

準備のときに取得したJDBC用のjarファイルを選択する。
image

・以下のコードをコピペする

作成したメインクラスに以下のコードをコピペします。

Main.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) throws Exception {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            //-----------------
            // 接続
            //-----------------
            connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sampleDatabase", // "jdbc:postgresql://[場所(Domain)]:[ポート番号]/[DB名]"
                    "postgres", // ログインロール
                    "test"); // パスワード
            statement = connection.createStatement();

            //-----------------
            // SQLの発行
            //-----------------
            //ユーザー情報のテーブル
            resultSet = statement.executeQuery("SELECT * FROM pg_shadow");

            //-----------------
            // 値の取得
            //-----------------
            // フィールド一覧を取得
            List<String> fields = new ArrayList<String>();
            ResultSetMetaData rsmd = resultSet.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                fields.add(rsmd.getColumnName(i));
            }

            //結果の出力
            int rowCount = 0;
            while (resultSet.next()) {
                rowCount++;

                System.out.println("---------------------------------------------------");
                System.out.println("--- Rows:" + rowCount);
                System.out.println("---------------------------------------------------");

                //値は、「resultSet.getString(<フィールド名>)」で取得する。
                for (String field : fields) {
                    System.out.println(field + ":" + resultSet.getString(field));
                }
            }


        } finally {
            //接続を切断する
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
            }
        }
    }

}

・実行する

※pg_shadowテーブルは最初から存在するユーザー情報が格納されているテーブルなので、
テーブルを作ることも、データを入れることもせずに使うことが出来ます。

---------------------------------------------------
--- Rows:1
---------------------------------------------------
usename:user
usesysid:16393
usecreatedb:t
usesuper:f
userepl:f
usebypassrls:f
passwd:md55d9c68c6c50ed3d02a2fcf54f63993b6
valuntil:2016-11-17 14:34:06+09
useconfig:null

■以上

新人さんにPostgreSQLをとりあえず試してもらいたい時などにご利用ください。

続き
コマンドプロンプトからPostgreSQLに接続します。

http://qiita.com/wb773/items/c2fd0e1e0349a41b5844

'プログラミング > Postgre' 카테고리의 다른 글

Windows(윈도우) PostgreSQL 64Bit(비트) 설치  (0) 2017.07.20
Comments