jdbc连接oracle数据库_附源码下载_java访问本地oracle

详细讲解了两种方式的jdbc连接oracle
源代码下载地址

一、apache dbcp连接池方式jdbc连接oracle

啥也不说,先上图片,眼见为实!
\"jdbc连接oracle数据库的第一种方法效果图\"

测试类代码

package com.javawebxx;

import java.util.List;
import java.util.Map;

import com.javawebxx.dbcp.Dbcp;
import com.javawebxx.druid.DbPoolConnection;

public class 测试类 {
	public static void main(String[] args) {
		//第一种连接池方式 apche出品的 dbcp
		Dbcp db1 = Dbcp.getInstance();
		List list1 = db1.getList(\"select * from t_book\");
		System.out.println(list1);
		System.out.println(\"======================我是完美分割线========================\");
		//第二个连接池方式 阿里巴巴 druid,
		DbPoolConnection db2 = DbPoolConnection.getInstance();
		List<Map<String, >> list2 = db2.queryForList(\"select * from t_book\");
		System.out.println(list2);
	}
}

dbcp连接池配置文件

#oracle
username=账号
password=密码
url=jdbc\\:oracle\\:thin\\:@localhost:1521:XE
driverClassName=oracle.jdbc.driver.OracleDriver
maxActive=1000

#mysql
#username=root
#password=root
#url=jdbc\\:mysql\\://localhost\\:3306/bbb
#driverClassName=com.mysql.jdbc.Driver
#maxActive=1000

#sqlserver
#username=sa
#password=123456
#url=jdbc\\:microsoft:sqlserver\\://localhost:1433;Data Name=bbb
#driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
#maxActive=1000

同时附录了mysql、sqlserver的配置方式,方便你学习转换!!!

dbcp的工具类

package com.javawebxx.dbcp;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSet Data;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.log4j.Logger;


public class Dbcp {

	public static Logger logger = Logger.getLogger(Dbcp.class);
	private static final String config = \"commons-dbcp.properties\";
	private BasicDataSource ds;
	private static Dbcp db;
	private Connection conn = null;
	private Statement stmt = null;

	private Dbcp(String config) {
		this.ds = null;
		try {
			this.ds = createDataSource(config);
		} catch (Throwable thr) {
			throw new RuntimeException(thr);
		}
	}

	public synchronized static Dbcp getInstance() {

		if (db == null)
			try {
				db = new Dbcp(config);
			} catch (Exception e) {
				e.printStackTrace();
				
			}
		return db;
	}

	public static BasicDataSource createDataSource(String propertiesFile)
			throws Exception {
		Properties properties = new Properties();
		// System.out.println(\"dbcp
		// path=\"+Dbcp.class.getResource(\".\").getPath());
		InputStream stream = Dbcp.class.getResourceAsStream(propertiesFile);
		properties.load(stream);
		stream.close();
		BasicDataSource ds = (BasicDataSource) BasicDataSourceFactory
				.createDataSource(properties);
		return ds;
	}

	public Connection getConnection() throws SQLException {
		return this.ds.getConnection();
	}

	public static void close(Connection conn) {
		if (conn != null)
			try {
				conn.close();
			} catch (Throwable localThrowable) {
			}
	}

	public static void close(Statement stmt) {
		if (stmt != null)
			try {
				stmt.close();
			} catch (Throwable localThrowable) {
			}
	}

	public static void close(ResultSet rs) {
		if (rs != null)
			try {
				rs.close();
			} catch (Throwable localThrowable) {
			}
	}

	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		close(rs);
		close(stmt);
		close(conn);
	}

	public static void close(Connection conn, Statement stmt) {
		close(stmt);
		close(conn);
	}

	public static void close(Statement stmt, ResultSet rs) {
		close(rs);
		close(stmt);
	}

	public int getExecuteCount(String sql) {
		int queryNum = -1;
		ResultSet rs = null;
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = this.getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			if (rs != null) {
				rs.next();
				queryNum = rs.getInt(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
			logger.info(sql);
		} finally {
			closeAll(conn, rs, stmt);

		}
		return queryNum;
	}
	
	public int getExecuteCount(String sql, [] params) {
		int queryNum = -1;
		ResultSet rs = null;
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			conn = this.getConnection();
			ps = conn.prepareStatement(sql);
			for(int i=0;i<params.length;i++) {
				ps.set (i+1, params[i]);
			}
			rs = ps.executeQuery();
			if (rs != null) {
				rs.next();
				queryNum = rs.getInt(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			closeAll(conn, rs, stmt);
			
		}
		return queryNum;
	}

	public void closeAll(Connection conn, ResultSet rs, Statement stmt) {
		close(conn);
		close(rs);
		close(stmt);
	}

	public int getNextSequence(String seq_name) {
		String sql = \"select nextval(\'\"+seq_name+\"\') SEQ_VALUE\";
		Map map = db.getValue(sql);
		if(map!=null&&map.size()>0){
			return Integer.parseInt((String) map.get(\"SEQ_VALUE\"));
		}else{
			return 0;
		}
		
	}

	public String getStringValue(String sql) {
		Map map = db.getValue(sql);
		return (String) map.get(\"STRING_VALUE\");
	}

	public int execute(String sqlstr) {
		ResultSet rs = null;
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = getConnection();
			stmt = conn.createStatement();
			stmt.execute(sqlstr);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			logger.info(sqlstr);
		} finally {
			closeAll(conn, rs, stmt);
		}
		return 0;
	}
	
	public int execute(String sql, [] params) {
		ResultSet rs = null;
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			conn = getConnection();
			ps = conn.prepareStatement(sql);
			for(int i=0;i<params.length;i++) {
				ps.set (i+1, params[i]);
			}
			ps.execute();
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			closeAll(conn, rs, ps);
		}
		return 0;
	}

	public ArrayList getList(String sqlString) {
		ArrayList<Map> pkv = new ArrayList<Map>();
		ResultSet rs = null;
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sqlString);
			ResultSet Data rsmd = rs.get Data();
			int num = rsmd.getColumnCount();
			while (rs.next()) {
				Map map = new HashMap();
				for (int i = 1; i <= num; i++) {
					String key = rsmd.getColumnName(i);
					String value = rs.getString(i);
					if (value == null)
						value = \"\";
					map.put(key, value);
				}
				pkv.add(map);
			}
		} catch (SQLException e) {
			logger.error(sqlString);
			logger.error(e.toString());
		} finally {
			closeAll(conn, rs, stmt);
		}
		return pkv;
	}

	public Map getValue(String sql) {
		Map map = new HashMap();
		ResultSet rs = null;
		Connection conn = null;
		Statement stmt = null;

		try {
			conn = getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			ResultSet Data rsmd = rs.get Data();
			int num = rsmd.getColumnCount();
			if (rs.next()) {
				for (int i = 1; i <= num; i++) {
					String key = rsmd.getColumnName(i);
					String value = rs.getString(i);
					if (value == null)
						value = \"\";
					map.put(key, value);
				}
			}
		} catch (Exception e) {
			logger.info(sql);
			logger.info(e.toString());
		} finally {
			closeAll(conn, rs, stmt);
		}
		return map;
	}

	public int excuteBatch(List<String> sqlList) {
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = getConnection();
			conn.setAutoCommit(false);
			stmt = conn.createStatement();

			for (String sql : sqlList) {
				stmt.addBatch(sql);
			}
			stmt.executeBatch();
			conn.commit();
			conn.setAutoCommit(true);
			return 1;

		} catch (Exception e) {
			e.printStackTrace();
			try {
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
				if (conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException ee) {
				logger.info(ee.toString());
			}
		} finally {
			try {
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
				if (conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException ee) {
				logger.info(ee.toString());
			}
		}
		return 0;
	}

	public void beginBatch() {

		try {
			conn = getConnection();
			conn.setAutoCommit(false);
			stmt = conn.createStatement();
		} catch (Exception e) {
			e.printStackTrace();
			try {
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
				if (conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException ee) {
				// TODO Auto-generated catch block
				logger.info(e.toString());
			}
		}
	}

	public void addBatch(String sql) {
		try {
			stmt.addBatch(sql);
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
				if (conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException ee) {
				ee.printStackTrace();
			}
		}
	}

	public int doBatch() {
		try {
			stmt.executeBatch();
			conn.commit();
			return 1;
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				conn.rollback();
				if (stmt != null) {
					stmt.close();
					stmt = null;
				}
				if (conn != null) {
					conn.close();
					conn = null;
				}
			} catch (SQLException ee) {
				logger.info(ee.toString());
			}
		}
		return 0;
	}

	public void endBatch() {
		try {
			if (stmt != null) {
				stmt.close();
				stmt = null;
			}
			if (conn != null) {
				conn.close();
				conn = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

二、阿里巴巴druid 连接池方式jdbc连接oracle

\"druid连接池方式效果图\"
druid的效率是高于dbcp的(仅限于大数据量应用,常规使用基本无差别,初学者不要纠结),
druid的配置文件,配置文件中也是同时备注了mysql、sqlserver的配置方式,方便大家学习。

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc\\:oracle\\:thin\\:@localhost:1521:XE
username=账号
password=密码
filters=stat
initialSize=2
maxActive=10
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1 from dual
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200

#mysql
#driverClassName=com.mysql.jdbc.Driver
#url=jdbc\\:mysql\\://localhost\\:3306/wangzhanmoban
#username=root
#password=root
#filters=stat
#initialSize=2
#maxActive=10
#maxWait=60000
#timeBetweenEvictionRunsMillis=60000
#minEvictableIdleTimeMillis=300000
#validationQuery=SELECT 1
#testWhileIdle=true
#testOnBorrow=false
#testOnReturn=false
#poolPreparedStatements=false
#maxPoolPreparedStatementPerConnectionSize=200

#sqlserver
#driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc\\:microsoft:sqlserver\\://localhost:1433;Data Name=bbb
#username=sa
#password=123456
#filters=stat
#initialSize=2
#maxActive=10
#maxWait=60000
#timeBetweenEvictionRunsMillis=60000
#minEvictableIdleTimeMillis=300000
#validationQuery=SELECT 1
#testWhileIdle=true
#testOnBorrow=false
#testOnReturn=false
#poolPreparedStatements=false
#maxPoolPreparedStatementPerConnectionSize=200

druid的工具类

package com.javawebxx.druid;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.pool.DruidPooledConnection;

public class DbPoolConnection {

	private static DbPoolConnection data Pool = null;
	private static DruidDataSource dds = null;
	private static QueryRunner runner = null;
	static {
		Properties properties = loadPropertyFile(\"db_server.properties\");
		try {
			dds = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
			runner = new QueryRunner(DbPoolConnection.getInstance().getDataSource());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private DbPoolConnection() {
	}

	public static synchronized DbPoolConnection getInstance() {
		if (null == data Pool) {
			data Pool = new DbPoolConnection();
		}
		return data Pool;
	}

	public DruidDataSource getDataSource() throws SQLException {
		return dds;
	}

	public DruidPooledConnection getConnection() throws SQLException {
		return dds.getConnection();
	}

	public static Properties loadPropertyFile(String fullFile) {
		if (null == fullFile || fullFile.equals(\"\"))
			throw new IllegalArgumentException(\"Properties file path can not be null : \" + fullFile);
		InputStream inputStream = null;
		Properties p = null;
		try {
//			inputStream = new FileInputStream(System.getProperty(\"user.dir\") +System.getProperty(\"file.separator\")+fullFile);
			inputStream = DbPoolConnection.class.getResourceAsStream(fullFile);
			p = new Properties();
			p.load(inputStream);
		} catch (FileNotFoundException e) {
			throw new IllegalArgumentException(\"Properties file not found: \"+ fullFile);
		} catch (IOException e) {
			throw new IllegalArgumentException(
					\"Properties file can not be loading: \" + fullFile);
		} finally {
			try {
				if (inputStream != null)
					inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return p;
	}
	
	public static QueryRunner getRunner(){
		return runner;
	}
	
	//以下执行方法//////////////////////////////////////////////////////////////
	
	public List<Map<String,  >> queryForList(String sql){
		List<Map<String,  >> list=null;
		try {
			list = runner.query(sql, new MapListHandler());
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return list;
	}
	
	public List<Map<String,  >> queryForList(String sql, [] params){
		List<Map<String,  >> list=null;
		try {
			list = runner.query(sql, new MapListHandler(),params);
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return list;
	}
	
	public Map<String,  > queryForMap(String sql, [] params){
		Map<String,  > map=null;
		try {
			map = runner.query(sql, new MapHandler(),params);
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return map;
	}
	
	public Map<String,  > queryForMap(String sql){
		Map<String,  > map=null;
		try {
			map = runner.query(sql, new MapHandler());
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return map;
	}
	
	public Long queryForLong(String sql){
		Long in=null;
		try {
			in = runner.query(sql, new ScalarHandler<Long>());
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return in;
	}
	
	public Long queryForLong(String sql, [] params){
		Long in=null;
		try {
			in = runner.query(sql, new ScalarHandler<Long>(),params);
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return in;
	}
	
	public String queryForString(String sql){
		String in=null;
		try {
			in = runner.query(sql, new ScalarHandler<String>());
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return in;
	}
	
	public String queryForString(String sql, [] params){
		String in=null;
		try {
			in = runner.query(sql, new ScalarHandler<String>(),params);
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return in;
	}
	
	public Integer update(String sql){
		Integer in=null;
		try {
			in = runner.update(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return in;
	}
	
	public Integer update(String sql, [] params){
		Integer in=null;
		try {
			in = runner.update(sql,params);
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return in;
	}
	
	
	public <T> List<T>  queryForList(Class<T> c,String sql, [] params){
		List<T> list=null;
		try {
			list = runner.query(sql, new BeanListHandler<T>(c),params);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	
	public <T> List<T>  queryForList(Class<T> c,String sql){
		List<T> list=null;
		try {
			list = runner.query(sql, new BeanListHandler<T>(c));
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	
	public <T> T queryForBean(Class<T> c,String sql, [] params){
		T t=null;
		try {
			t = runner.query(sql, new BeanHandler<T>(c),params);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return t;
	}
	
	public <T> T queryForBean(Class<T> c,String sql){
		T t=null;
		try {
			t = runner.query(sql, new BeanHandler<T>(c));
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return t;
	}
	
	/**
	 * 仅仅批次提交
	 * @param sql
	 * @param paramss
	 */
	public void batchOnly(String sql, [][] paramss){
		try {
			runner.batch(sql, paramss);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 事务
	 */
	public void batchTransition(String sql, [][] paramss){
		DruidPooledConnection connetion = null;
		try {
			connetion = getConnection();
			connetion.setAutoCommit(false);
			runner.batch(connetion, sql, paramss);
			connetion.commit();
		} catch (SQLException e) {
			e.printStackTrace();
			try {
				connetion.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
		}finally{
            if(connetion!=null){
                try {
                	connetion.setAutoCommit(true);
                	//关闭了自动提交
                	connetion.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
	}
	
	public static void main(String[] args) {
		DbPoolConnection db = DbPoolConnection.getInstance();
//		String sql=\"insert into send_sn(sn,ipaddress) values(?,?)\";
//		 [][] paramss = {{\"1\",\"01\"},{\"2\",\"02啊啊啊\"},{\"3\",\"03\"},};
//		db.batchTransition(sql, paramss);
		
		String sql=\"create table  if not exists t_send_log_11 as select * from t_send_log where 1=2\";
		db.update(sql);
	}
	
}


jdbc连接oracle数据库源代码下载地址

收藏 打印