insomniask 发表于 2013-1-25 22:29:49

重新认识JDBC

<!----><!----><!---->
近来项目需要从外部加载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 吗?
 
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 方法。这下子放心了。
 
页: [1]
查看完整版本: 重新认识JDBC