重新认识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]