JDBC介绍
JDBC的全称是Java数据库连接(Java Database connect),是Java程序开发中连接数据库的重要工具。
使用JDBC的原因
Java通过JDBC技术实现对各种数据库的访问,它充当了Java应用程序与各种数据之间进行对话的媒介,通过JDBC可以把程序中的数据持久保存到数据库中,这就是一种持久化机制,这里的持久化是一个专业术语,指将程序中的数据在瞬时状态和持久状态之间转换的机制。通俗的讲,就是讲瞬时数据(如内存中的数据,一旦关闭就会丢失)持久化为持久数据(如持久化至数据库中的数据,即使计算机关闭也能够长久保存)。
JDBC的工作原理
JDBC主要由JDBC API、JDBC Driver Manager和JDBC驱动组成。
JDBC的工作原理:
顶层是软件工程师写的Java应用程序,Java应用程序可以使用集成在JDK中的Java.sql
和javax.sql包中的JDBC API连接和操作数据库。
1) JDBC API
JDBC API提供了一套Java应用程序与各种数据库交互的标准接口,如Connection
(连接)接口,Statement
接口、ResultSet
(结果集)接口、PreparedStatement
接口等。
2) JDBC Driver Manager
JDBC Driver Manager是JDBC体系结构的支柱,它负责管理各种驱动(如MySQL数据库或Oracle数据库的JDBC驱动等
JDBC驱动
JDBC驱动并不包含在JDK中,它由各种数据库厂商或第三方中间厂商提供,负责连接各种数据库。
JDBC API
是Java程序应用程序与各种数据库交互的标准接口,主要功能是建立与数据库的连接,发送SQL语句和返回处理结果。
主要类/接口如下:
1.与数据库建立连接DriverManager
类:装载驱动程序,并为创建新的数据库连接提供支持。Connection
接口:负责连接数据库并担任传输数据的任务。
2.发送SQL语句Statement
接口:由Connection
产生,负责执行SQL语句。PreparedStatement
接口:上面接口的子接口,也由Connection
产生,同样负责执行SQL语句。与上面接口相比,具有高安全性、高性能、高可读性和高可维护性等优点。
3.返回处理结果ResultSet
接口:负责保存和处理Statement
执行后产生的查询结果。
使用
JDBC操作数据库的步骤
加载JDBC驱动。
与数据库建立连接。
发生SQl语句,并得到返回结果。
处理返回结果。
与数据库建立连接
DriverManager
类:装载驱动程序,并为创建新的数据库连接提取提供支持。Connection
接口:负责连接数据库并担任传送数据库任务。
发送SQL语句
Statement
接口:由Connection
产生,负责执行SQL语句。PreparedStatement
接口:Statement
的子接口,也由Connection
产生,同样负责执行SQL语句与Statement
接口相比,PreparedStatement
接口具有高安全、高性能、高可读性和高可维护性等优点。
返回处理结果
ResultSet
接口:负责保存和处理Statement
执行后产生的查询结果。
使用JDBC连接数据库
导入JDBC的驱动JAR包后,需要加载驱动。在本版驱动中,驱动类的类名是com.mysql.cj.jbc.Driver。通常使用Class.forName加载JDBC驱动类,这样做的目的是增加代码的灵活性。
使用Calss.forName加载驱动。
关键代码如下。
try{
class.forName(“JDBC驱动类的名称”);
}catch(ClassNotFoundException e){
//异常输出代码
}
Class.forName()
方法将指定的JDBC驱动类加载到Java虚拟机中。若系统中不存在指定的类,则会引发异常,异常类型为ClassNotFoundException
。
数据库连接字符串的语法格式如下。
jdbc:数据库://ip”端口/数据库名称[?连接参数=参数值]
其中:
- 数据库:JDBC连接的目标数据库,如MySQL数据库。
- Ip:JDBC所连接的目标数据库地址,如果是本地数据库,则可以为localhost,即本地主机名
- 端口:连接数据库的端口号,如果连接MySQL数据库,则默认端口号为3306。
- 数据库名称:目标数据库的名称,如hospital。
- 连接参数:连接数据库时的参数配置。
使用Statement执行数据库操作
获取Connection
对象后,需要先使用Connection
对象的createStatement()
方法创建Statement
对象,再通过Statement
对象将SQL语句反送到MySQL服务器中执行数据操作。
使用Statement接口插入数据
可以使用Statement
接口的exetcuteUpdate
()方法执行插入数据操作。
使用Statement接口更新数据
使用Statement接口更新数据库中数据的步骤与插入数据类似,都可以使用executeUpdate()
方法或execute()
方法实现更新数据库的操作。
使用PreparedStatement接口防止SQL注入
在应用安全领域由一种常见的攻击方式 ——SQL注入(SQL Injection)攻击。这种攻击方式主要通过利用应用程序在拼接SQL字符串时产生的漏洞,绕过程序设计的安全机制完成数据库的越权操作。