jdbc 全称为 java database connectivity,是 java 操作数据库的技术。
jdbc 的本质是一套操作关系型数据库的接口。各个数据库厂商提供实现的驱动 jar 包,由程序员编写操作数据库代码。
一. jdbc 实现增删改查
1.导入驱动jar ( jar 包下载,点击这里)
2.注册驱动
class.forName("com.mysql.jdbc.Driver");
( 8.0 以上版本为 com.mysql.cj.jdbc.Driver )
(上面的写法,实际就是实例化 class 的作用)
(也可以 DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); )
3.获取数据库连接对象
connection conn =DriverManager.getConnection("jdbc:mysql://host:port/db","user","password");
4.定义sql
String sql = "select * from user";
5.获取执行sql语句的对象statement
Statement stmt = conn.createStatement();
6.执行sql,接收返回结果
int count = stmt.executeUpdate(sql);
7.处理结果
System.out.println(count);
8.释放连接对象
stmt.close(conn);
stmt.close(stmt);
二 对象详解
1.DriverManager:驱动管理器
用于注册驱动:class.forName(“com.mysql.jdbc.Driver”);
(mysql 5 以后的版本jar包会自动注册驱动)
连接数据库:DriverManager.getConnection(“url”,”user”,”password”);
( url 的写法 :jdbc:sql://host:port/db)
2.Connection:数据库连接对象
获取执行 sql 对象:
- createStatement()
- prepareStatement(String sql)
管理事务
- 开启事务:void setAutoCommit(boolean autoCommit);
- 提交事务:commit();
- 回滚事务:rollback();
3.Statement:执行 sql 的对象
执行 sql
- boolean execute(String sql); 可执行任意sql
- int executeUpdate(String sql); 执行DML,DDL
- ResultSet executeQuery(String sql); 执行DQL语句
4.ResultSet:结果集对象
是一个结果集,包含了多条数据,是 sql 查询到的所有数据
每次操作一条数据,通过移动游标不断获取数据
- boolean rs.next(); 向后移动一条数据,(它同时返回一个 boolean)
- XXX getXXX(“name”); 获取 XXX 类型的数据,名称为 name
5.Preparestatement对象,预编译sql对象
sql 的编写如果是静态的,需要连接字符串,容易被注入sql
用 ? 作为占位符,编译时,再换成真正的字符,这样更安全
在执行前,对 ? 通过 pstmt.setXXX( index, value);赋值
三 事务管理
这里的事务,包含多个语句,如何保证中途错误时,回滚?
在获取连接之后(getConnection),首先就要开启事务
//开启事务
conn.setAutoCommit(false);
在执行完 sql 语句,进行提交事务
//提交事务
conn.commit();
接着,捕获 exception ,然后在 exception 中再捕获,看是否存在事务异常,如果存在事务异常,那么事务回滚
catch (Exception e) {
//事务回滚
try {
if(conn != null) {
conn.rollback();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}