網頁

2021/2/4

Java JDBC 取得Oracle資料庫連線 get Oracle database connection

Java使用JDBC 取得Oracle資料庫的java.sql.Connection連線物件。

Oracle資料庫連線資訊如下。

  • 主機位址(host):192.168.0.1
  • 連接埠(port):1521
  • SID(System Identifier):mydb
  • 使用者名稱(username):admin
  • 密碼(password):12345

在Oracle SQL Developer的連線設定如下。



Oracle資料庫jdbc driver url格式為
jdbc:oracle:<drivertype>:@<host>:<port>:<sid>

  • drivertype:有ocithinkprb,通常都用thin
  • host:資料庫主機位址
  • port:連接埠
  • sid:Oracle資料庫實例名稱

JDBC 4.0以前要先用Class.forName("oracle.jdbc.driver.OracleDriver")註冊OracleDriver類,然後用DriverManager.getConnection(String url, String user, String password)取得連線物件。

JdbcUtils

package com.abc.demo.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcUtils {
    
    /**
     * 取得Oracle資料庫 host=192.168.0.1, port=1521, sid=mydb 的連線物件
     *
     * @return 連線物件
     * @throws SQLException
     * @throws ClassNotFoundException 
     */
    public static Connection getConnection() throws SQLException, ClassNotFoundException {
        Class.forName("oracle.jdbc.driver.OracleDriver"); // register OracleDriver class
        
        String url = "jdbc:oracle:thin:@192.168.0.1:1521:mydb";
        String user = "admin";
        String password = "12345";

        return DriverManager.getConnection(url, user, password);
    }

    /**
     * 是否連線
     */    
    public static boolean hasConnection() {
        
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = getConnection();
            ps = conn.prepareStatement("select 1 as num from dual");
            rs = ps.executeQuery();
            if(rs.next()) {
                int num = rs.getInt("num");
                return num == 1;
            }
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {/* Ignored */}
            }
            if (ps != null) {
                try {
                    ps.close();
                } catch (SQLException e) {/* Ignored */}
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {/* Ignored */}
            }

        }
        return false;
    }

}


沒有留言:

張貼留言