Dynamically load database driver to connect to database

import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
public class test {
    
    
	//主要已经注册的驱动进行卸载
	private static final  Map<String,Driver> tempmap=new HashMap<String,Driver>();
	public static void main(String[] args) {
    
    
		//log.info("开始查询驱动信息");、
		Connection conn=null;
		Statement statement=null;
		ResultSet rs =null;
		String fileurl="d:\\ojdbc6.jar";
		try{
    
    
			//URL路劲获取本地驱动包
            URL u = new URL("file:"+fileurl);
            //将jar包路劲转为路劲类加载
            URLClassLoader ucl = new URLClassLoader(new URL[] {
    
     u });
            //静态加载驱动
			Driver d = (Driver) Class.forName("oracle.jdbc.driver.OracleDriver", true, ucl).newInstance();
			//所有的获取的驱动都要必须实现Driver接口
			driverImpl driver = new driverImpl(d);
			//注册驱动
			DriverManager.registerDriver(driver);
			tempmap.put(fileurl, driver);
			System.out.println("==============="+driver+"驱动正在加载...");
    		conn=DriverManager.getConnection("jdbc:oracle:thin:@29.22.22.137:1521:orcl", "test", "123456");
    		
    		if(conn!=null){
    
    
    			String sql="select * from CZYTH_DATARESTORE";
    			statement = conn.createStatement();
    			 rs = statement.executeQuery(sql);
    			while(rs.next()){
    
    
    				String string = rs.getString("HFLJ").toString();
    				System.out.println(string);
    			}
    		}
		}catch(Exception e){
    
    
			e.printStackTrace();
			try {
    
    
				DriverManager.deregisterDriver(tempmap.get(fileurl));
			} catch (SQLException e1) {
    
    
				e1.printStackTrace();
			}
		}finally{
    
    
			try {
    
    
				if(statement!=null||rs!=null){
    
    
					statement.close();
					rs.close();
				}
				if(conn!=null){
    
    
					conn.close();
				}
			} catch (SQLException e) {
    
    
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		try {
    
    
			DriverManager.deregisterDriver(tempmap.get(fileurl));
			//tempmap.remove(fileurl);	
			System.out.println("==============="+tempmap.get(fileurl));
			Enumeration<Driver> drivers = DriverManager.getDrivers();
			Driver sd = drivers.nextElement();
			System.out.println(sd);
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}
	}
	
	
	
}
import java.sql.Connection;

public class driverImpl implements Driver{
    
    
	
	private Driver driver;
	
	driverImpl(Driver d){
    
    
		this.driver=d;
		System.out.println(this.driver);
	}

	@Override
	public Connection connect(String url, Properties info) throws SQLException {
    
    
		// TODO Auto-generated method stub
		return this.driver.connect(url, info);
	}

	@Override
	public boolean acceptsURL(String url) throws SQLException {
    
    
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public DriverPropertyInfo[] getPropertyInfo(String url, Properties info)
			throws SQLException {
    
    
		// TODO Auto-generated method stub
		return this.getPropertyInfo(url, info);
	}

	@Override
	public int getMajorVersion() {
    
    
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int getMinorVersion() {
    
    
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public boolean jdbcCompliant() {
    
    
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
    
    
		// TODO Auto-generated method stub
		return this.getParentLogger();
	}

}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324353541&siteId=291194637