重新认识JDBC

近来项目需要从外部加载 JABC JAR, 访问多个数据库,有可能是 oracle 7oracle9db2 9db2 10 。同一个数据库不能的版本之间 JAR 包可能不能通用,但接口不变,所以需要从外部加载相应 jar 

URL url = new URL ( "file:/" + Jar 路径 );

    URLClassLoader myClassLoader = new URLClassLoader(

                  new URL [] { url }, Thread.currentThread ()

                         .getContextClassLoader());

Class   myClass = myClassLoader.loadClass(driver);

Driver driver = (Driver) myClass.newInstance();

Connection conn =Driver .connect(uri, info);

 

长期以来一直用 对 JDBC 一直是 DriverManager.getConnection(url,user,password) ,这个公式化的东西,一直都这么用。

Drivermanager. registerDriver (Driver  driver) 注册驱动 在运行时一直找不到适合的驱动。虽然注册了 但在后面的操作过程中,dm 是从系统级加载中寻找,而不是从线程级加载中查找。

   最后还是只用Driver 来获取连接,脑子神经了下,是不是所有数据库都能这样写 比如MYSQL 那么多参数 怎么写 是所有数据库 Preperties 用户名 密码都是 user/password 吗?

 

Connection

connect (String  url, Properties  info)
           试图创建一个到给定 URL 的数据库连接。

 

DriverManager 里这是这写的

  java.util.Properties info = new java.util.Properties();

if (user != null ) {

        info.put( "user" , user);

    }

    if (password != null ) {

        info.put( "password" , password);

    }  

 

Connection result = di.driver.connect(url, info);

 

区别就是 DriverManager 里面是 synchronized 方法。这下子放心了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值