分享
 
 
 

(一)jdbc从入门到精通,特别适合初学者!

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

如果你有翻阅java API文档的习惯的话,你就会发现,jdbc API中接口占了大多数。不同的jdbc驱动开发者提供了实现必要接口的类。开发商之间的不断竞争就为我们提供了多种jdbc驱动。

点击这里你会方便的获得很多公司提供的jdbc驱动。

从编程的角度出发,有两个主要的类负责建立与数据库的连接。

第一个类是 DriverManager,它是在 JDBC API 中提供的为数不多的实际类之一。DriverManager 负责管理已注册驱动程序的集合,实质上就是提取使用驱动程序的细节,这样程序员就不必直接处理它们。

第二个类是实际的 JDBC Driver 类。这些是由独立厂商提供的。JDBC Driver 类负责建立数据库连接和处理所有与数据库的通讯。

在所有java程序与数据库之间创建连接的过程的第一步是在jvm中注册jdbc驱动。在传统的连接机制(相对于后面中讨论的 DataSource 连接机制)中,连接和所有数据库通讯是由 DriverManager 对象控制的。要建立一个连接,必须用 DriverManager 对象注册针对目标数据库的适当的 JDBC 驱动程序。

JDBC 规范规定了 JDBC 驱动程序在装入 JVM 时应该自动用 DriverManager 对象注册自身。例如,下面的代码段使用一个静态的初始化程序来首先创建一个 persistentjava JDBC 驱动程序的实例,然后用 DriverManager 将其注册。

static {

java.sql.DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ;

}

注册驱动程序就是将驱动程序类装入 JVM 的工作,它可以用几种不同的方法完成。一种方法就是使用类调用器(ClassLoader)Class.forName(yourDriver);。另一种方法不太常见,是使用 jdbc.drivers 系统属性。这种方法可以有三种不同的方式:

从命令行:

java -Djdb.drivers=com.persistentjava.JdbcDriver Connect

在 java 应用程序中:

System.setProperty("jdbc.drivers", "com.persistentjava.JdbcDriver") ;

通过在系统属性文件中设置 jdbc.drivers 属性,这通常和系统有关。通过用冒号隔离驱动程序,多个驱动程序可以使用上面提到的系统属性方法注册。使用系统属性方法的一个好处是驱动程序很容易在 JVM 中调入和调出,而不用修改任何代码或修改最少的代码。如果注册了多个驱动程序,它们的优先顺序是:

1)JVM 初始化时通过 jdbc.drivers 属性注册的 JDBC 驱动程序,

2)动态装入的 JDBC 驱动程序。

因为 jdbc.drivers 属性只在 DriverManager() 方法的第一次调用时检查一次,确保所有驱动程序在建立数据库连接之前被正确注册是很重要的。

然而,不是所有的 JVM 都平等创建,一些 JVM 并不符合 JVM 规范。结果是,静态初始化程序并不如预期的那样运行。这导致了注册 JDBC 驱动程序的多种方法,包括:

Class.forName("com.persistentjava.JdbcDriver").newInstance() ;

DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ;这些替代方案应该在所有 JVM 中都运行良好,所以您应该放心地在众多可能出现的 JVM 中使用它们工作。最后一个问题是 Class.forname() 可能抛出一个 ClassNotFoundException,所以您需要在合适的异常处理程序中包装注册代码。

一旦 JDBC 驱动程序用 DriverManager 注册了,就可以用于建立到数据库的连接。但是很多不同的驱动程序都可能被实际注册过,DriverManager 怎样选择正确的驱动程序呢?方法非常简单:每个 JDBC 驱动程序使用一个专门的 JDBC URL作为自我标识的一种方法,他的格式和web地址挺相似。URL 的格式是直观的:jdbc:sub-protocol:database locator。子协议(sub-protocol)与 JDBC 驱动程序有关,可以是 odbc、oracle、db2 等等,根据实际的 JDBC 驱动程序厂商而不同。数据库定位器(database locator)是与驱动程序有关的指示器,用于唯一指定应用程序要和哪个数据库进行交互。根据驱动程序的类型,该定位器可能包括主机名、端口和数据库系统名。

当提供了具体的 URL 之后,DriverManager 在已注册的驱动程序集合中循环,直到其中一个驱动程序识别出指定的 URL。如果没有发现适合的驱动程序,就抛出一个 SQLException。下面的清单说明了几个实际 JDBC URL 的具体示例:

jdbc: odbc:jdbc

jdbc: oracle:thin:@persistentjava.com:1521:jdbc";

jdbc:db2:jdbc很多驱动程序(包括 JDBC-ODBC 桥驱动程序)接受在 URL 末尾的附加参数,如用户名和密码。

给定具体的 JDBC URL,获取数据库连接的方法就是在 DriverManager 对象上调用 getConnection()。这种方法有几种形式:

DriverManager.getConnection(url) ;

DriverManager.getConnection(url, username, password) ;

DriverManager.getConnection(url, dbproperties) ;在这里,url 是一个 String 对象,也就是 JDBC URL;用户名和密码是 String 对象,它们是 JDBC 应用程序要用来连接到数据源的用户名和密码;而 dbproperties 是一个包括所有参数(可能包括用户名和密码)的 Java properties 对象,JDBC 驱动程序需要这些参数作成功的连接。

看到这里,你已经成功的在你即将诞生的java程序和数据库之间建立起了沟通的桥梁。

你知道jdbc驱动有几种类型吗?下节课我们来一探究竟……

各位看官感想如何?感觉还行的话我会连载下去的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有