Java 连接 Oracle 单例模式

来源:互联网 发布:淘宝支付宝登录 编辑:程序博客网 时间:2024/04/29 01:07
单例模式拿到oracle数据库连接
package com.chy.orclconn;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Statement;public class OrclConn {private final String driverClass = "oracle.jdbc.driver.OracleDriver";//驱动类private final String url = "jdbc:oracle:thin:@localhost:1521:chen";//数据库连接urlprivate final String username = "chen";//用户名private final String password = "chen";//密码private Connection conn;private Statement st;private PreparedStatement ps;/** * single pattern; */private static OrclConn orclConn;private OrclConn(){}/** * @return OrclConn instance; */public static OrclConn getInstance(){if(orclConn == null){orclConn = new OrclConn();}return orclConn;}/** *  * @return an oracle connection */private Connection getConnection(){try {
//加载驱动、得到数据库连接Class.forName(driverClass);conn = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {System.out.println("Class DriverClass not found !");e.printStackTrace();} catch (SQLException e){System.out.println("connection failed !");e.printStackTrace();}return conn;}/** *  * @return an sql statement */public Statement getStatement(){try {if(st == null){st = getConnection().createStatement();}} catch (SQLException e) {e.printStackTrace();}return st;}/** * @param the sql that you want to operate oracle! * @return an sql PreparedStatement; */public PreparedStatement getPreparedStatement(String sql){try {if(ps == null){ps = getConnection().prepareStatement(sql);}} catch (SQLException e) {e.printStackTrace();}return ps;}/** * close connection */public void connClose(){try {if(conn != null){if(!conn.isClosed()){        conn.close();    }}} catch (SQLException e) {e.printStackTrace();}}}

测试:

package com.chy.orclconn;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Test {public static void main(String[] args) throws SQLException {String sql = "select table_name as tableName from user_tables";Statement st = OrclConn.getInstance().getStatement();ResultSet rs = st.executeQuery(sql);while (rs.next()){System.out.println(rs.getString("tableName"));}}}