1.为什么需要JDBC?
Java是通过JDBC技术实现对各种数据库的访问,JDBC是Java数据库连接(Java DataBase Connectivity)技术的简称,它充当了Java应用程序与各种不同数据库之间进行对话的媒介。它可以把数据持久保存,这就是一种持久化机制。持久化是将程序中的数据在瞬时状态和持久状态间转换的机制。
JDBC由一组使用Java语言编写的类和接口组成,可以为多种关系数据库提供统一访问。
2.JDBC的工作原理
JDBC API 由Sun公司提供,其中提供了Java应用程序与各种不同数据库交互的标准接口,如Connection(连接)接口、Statement接口、ResultSet(结果集)接口、PreparedStatement接口等。
JDBC Driver Manager(驱动程序管理器)由Sun公司提供 ,它是JDBC体系结构的的支柱,负责管理各种不同的JDBC驱动,把Java应用程序连接到相应的JDBC驱动程序上,位于JDK的java.sql包中。
JDBC驱动由各个数据库厂商或第三方中间件厂商提供,负责连接各种不同的数据库。
3.JDBC API介绍
JDBC API主要做三件事:与数据库建立连接、发送SQL语句、处理结果 。
DriverManager类:装载驱动程序,并为创建新的数据库连接提供支持。
Connection接口:负责连接数据库并担任传送数据的任务。
Statement接口:由Connection产生,负责执行SQL语句。
ResultSet接口:负责保存和处理Statement执行后所产生的查询结果。
PreparedStatement接口:Statement的子接口,也由Connection产生,同样负责执行SQL语句。与Statement接口相比,PreparedStatement接口具有高安全性、高性能、高可读性和高可维护性的优点。
4.JDBC访问数据库的步骤
1)加载JDBC驱动
使用Class.forName()方法将给定的JDBC驱动类加载到Java虚拟机中。若系统中不存在给定的类,则会引发异常,异常类型为ClassNotFoundException。代码示例:
Class.forName("JDBC驱动类的名称");
2)与数据库建立连接
DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。DriverManager类跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。代码示例:
Connection con = DriverManager.getConnection(数据连接字符串,数据库用户名,密码);
3)发送SQL语句,并得到返回结果
一旦建立连接,就使用该连接创建Statement接口的对象,并将SQL语句传递给它所连接的数据库。如果是查询操作,将返回类型为ResultSet的结果集,它包含执行SQL查询的结果。如果是其他操作,将根据调用方法的不同返回布尔值或操作影响的记录数目。示例代码:
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELET `id`,`name` FROM `master`");
4)处理返回结果
处理返回结果主要是针对查询操作的结果集,通过循环取出结果集中每条记录并做相应处理。代码示例:
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println(id +""+name);
}
5.两种常用的驱动方式
第一种是JDBC-ODBC桥接方式,试用于个人开发与测试,它通过ODBC与数据库进行连接。另一种是纯Java的驱动方式,它直接同数据库进行连接,在生产型开发中,推荐使用纯Java的驱动方式。
JDBC-桥连就是将对JDBC API的调用转换为对另一组数据库连接(即ODBC)API的调用。
纯Java驱动方式由JDBC驱动直接访问数据库,驱动程序完全用Java语言编写,运行速度快,而且具备了跨平台特点。
6.Statement接口和ResultSet接口
使用Connection对象创建Statement对象
Connection接口常用方法
Statement接口常用方法
ResultSet接口常用方法及作用
7.PreparedStatement接口
PreparedStatement接口继承自Statement接口,PreparedStatement比普通Statement对象使用起来更加灵活,更有效率。
为什么要使用PreparedStatement?
原因是在使用Statement接口方法时要进行SQL语句的拼接,不仅拼接繁琐麻烦、容易出错,还存在安全漏洞,而使用PreparedStatement接口就不存在这个问题。
PreparedStatement接口常用方法
使用PreparedStatement操作数据库的基本步骤
1)创建PreparedStatement对象
2)设置每个输入参数的值
3)执行SQL语句