JDBC
概述
JDBC提供了访问特定数据库的接口和通讯标准,定义了一系列接口和类。
Driver
加载Driver驱动
新建java类,执行以下内容:
public class JDBC001 {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("com.mysql.cj.jdbc.Driver");
}
}
DriverManager
使用DriverManager创建一个Connection对象,参数至少包括3个:
- mysql url
格式:
jdbc:mysql://[IP地址]:[端口]/[数据库名]?[参数] - mysql用户名
- mysql密码
Connection接口
上述代码返回一个Connection对象,代表与特定数据库建立了链接。
具有以下常用方法:
createStatement():创建用于静态SQL的Starement对象。prepareStatement():接收一个String类型的数据库语句,创建用于执行预编译SQL的PrepareStatement对象。setAutoCoomit():接收一个布尔值,开启/关闭自动提交事务(用于事务控制)。
Statement接口
用于执行静态 SQL 语句。
方法
executeQuery():查询数据表,接收一个String类型的查询语句,返回一个ResultSet对象。executeUpdate():执行语句并返回受到影响的行数,接收一个String类型的sql语句,返回一个int,表示影响的行数。
ResultSet接口
ResultSet用于存储从数据库查询到的结果,并维护一个指向当前数据行的指针。初始化时,游标位于第一行前。
提供了以下常用方法:
-
next():将游标向下移动一行。如果新行有效,返回true;如果已无数据,返回false。 -
getXxx():读取指定列,允许接收一个整型索引或字符串索引,返回指定列的值。
需要注意JDBC 中列索引从 1 开始,不是 0。
通常情况下,ResultSet的游标都是单向移动的,因此通常会在查询语句执行后就将返回的ResultSet 读取到一个List中存放。
PreparedStatement接口
用于安全地对数据库进行操作,使用 ? 作为占位符,将 SQL 结构与数据分离,避免SQL注入的风险。
通常不和Statement接口同时使用。
常用方法:
executeQuery():执行查询语句,返回一个ResultSet对象。executeUpdate():执行语句并返回受到影响的行数,表示影响的行数。-
execute():执行当前对象的数据库语句,返回一个布尔值。 返回值为true时,执行的语句是查询语句; 返回值为false时,执行的语句是操作语句。 -
getResultSet():获取查询语句的结果,但和executeQuery()的返回值指向同一个对象。
释放资源
JDBC 创建的对象通常不会被垃圾回收自动立即释放,必须显式关闭。
关闭顺序为后打开的先关闭 :ResultSet -> Statement -> Connection,通常按以下逻辑写: