六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 99|回复: 0

重新认识JDBC

[复制链接]

升级  50%

5

主题

5

主题

5

主题

童生

Rank: 1

积分
25
 楼主| 发表于 2013-1-13 18:56:54 | 显示全部楼层 |阅读模式
<!----><!----><!---->
近来项目需要从外部加载JABC JAR包,访问多个数据库,有可能是oracle 7、oracle9、db2 9、db2 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 吗?
 

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 方法。这下子放心了。
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表