当今时代,几乎所有的应用程序都需要访问数据库,例如一个人们使用的购票软件就是典型的例子。购票软件之所以能够显示出车次、票价等各项信息,都是因为购票软件实时查询了保存在数据库中关于车次、票价等数据。
Java程序如果希望能够访问数据库就必须使用JDBC让应用程序与数据库之间建立连接,并且在建立连接之后能够对数据进行增、删、改、查等各种操作,因此JDBC就是Java程序与数据库之间的连接桥梁。
最早的时候,Sun公司希望自己开发一组Java API,程序员通过这组Java API即可操作所有的数据库系统,但后来Sun发现这个目标根本无法实现,因为数据库系统实在太多了,而且各数据库系统的内部特性又各不相同。后来Sun就制定了一组标准的API,它们只是接口,没有提供实现类,这些实现类由各数据库厂商提供实现,这些实现类就是驱动程序。而程序员使用JDBC时只要面向标准的JDBC API编程即可,当需要在数据库之间切换时,只要更换不同的实现类,也即更换数据库驱动程序就行,这是面向接口编程的典型应用。
由以上介绍不难看出:JDBC为数据库开发提供了标准的API,程序员有了JDBC API就不需要为访问Oracle 数据库写一套访问程序,为访问MySQL数据库再写一套访问程序,开发人员只要面向统一的JDBC API编写一套访问程序,然后根据不同的数据库产品使用不同的数据库驱动程序即可完成对各种数据库的访问。
JDBC驱动程序通常有以下4种类型:
- JDBC-ODBC桥:这种驱动是最早实现的JDBC驱动程序,主要目的是为了快速推广JDBC。这种驱动将JDBC API映射到ODBC API。这种方式在JDK1.8中已经被删除了。
- 部分本地API Java驱动程序:本地API驱动直接把JDBC调用转变为数据库的标准调用再去访问数据库,这种方法需要本地数据库驱动代码。
- JDBC网络纯Java驱动程序:这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
- 本地协议纯Java驱动:基于Java的纯驱动程序通过套接字连接直接与供应商的数据库通信。这是可用于数据库的性能最高的驱动程序,通常由供应商本身提供。这种驱动程序非常灵活,因此也是目前行业内使用最多的驱动程序,本书的案例也使用这种驱动程序。
无论使用哪一种驱动程序,开发者使用JDBC可以完成以下操作:
- 建立与数据库的连接
- 执行SQL语句
- 获得SQL语句的执行结果
接下来的几个小节中将从理论到实践详细讲解JDBC在Java实际开发中的应用。