Java-JDBC配置和使用
下载 JDBC Jar包
Mysql JDBC 地址:https://dev.mysql.com/downloads/connector/j/
- 选择 Platform Independent 下载并解压得到 .jar 包,放入自己 Jar 文件夹中
将 Jar 库导入到 Idea
注册驱动并获取连接
从JBC3开始,目前已经普遍使用的版本。可以不用注册驱动而直接使用。
Class.forName
这句话可以省略。
// 注册驱动 从JDBC3开始这步可以省略
// mysql8 需要cj包中的驱动
Class.forName("com.mysql.cj.jdbc.Driver");
获得连接
- Connection 接口,代表一个连接对像具体的实现类由数据库的厂商实现。
- 使用 DriverManage r类的静态方法 getConnection() 可以获取数据库的连接。
| 获取连接的静态方法 | 说明 |
| ------------------------------------------------------------ | ----------------------------------------------- |
| Connection getConnection(String url, String user, String password) | 通过连接字符串和用户名,密码来获取数据库连接对象 |
-
getConnection 方法 3 个连接参数说明
| 连接参数 | 说明 |
| -------- | ----------------------------------------------------- |
| user | 登录用户名 |
| password | 登录密码 |
| url | mySql URL的格式
jdbc: mysql: //localhost: 3306/db4 | -
JDBC URl 详细说明
jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8
- JDBC规定ur的格式由三部分组成,每个部分中间使用冒号分隔。
- 第一部分是协议jdbc<这是固定的;
- 第二部分是子协议,就是数据库名称,连接mysq数据库,第二部分当然是 mysql了
- 第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysq的第三部分分别 由数据库服务器的IP地址( localhost)、端口号(3306),以及要使用的数据库名称组成。
- 获取连接 Connection 对象
// 获取连接 connection 连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8","root","000");
System.out.println(connection);
获取语句执行对象 Statement
- Statement:代表一条语句对象,用于发送SQL语句给服务器,用于执行静态SQL句并返回它所生成结果的对象。
Statement 类常用方法
方法声明 | 说明 |
---|---|
executeUpdate(String sql) | 执行 insert update delete语句返回nt类型代表受影响的行数 |
ResultSet executeQuery(String sql); | 执行 select 语句,返回 Resultset 结果集对象 |
代码示例
// 获取 statement 对象
statement = connection.createStatement();
// 通过 Statement 对象的 executeUpdate 方法创建一张表
String sql = "create table test(id int,name varchar(10),age int);";
// int count = statement.executeUpdate(sql); // 受影响行数 0
// System.out.println(count);
sql = "select * from test";
// 执行查询操作 ResultSet是结果集对象
ResultSet resultSet = statement.executeQuery(sql);
ResultSet 结果集对象
作用:封装数据库查询的结果对结果集进行遍历,取出每一条记录。
常用方法 | 说明 |
---|---|
boolean next() | 1)游标向下一行 2)返回 boolean类型,如果还有下一条记录,返回true,否则返回 false |
xxx getXxx( String or int) | 1)通过列名,参数是 String类型。返回不同的类型 2)通过列号,参数是整数,从1开始。返回不同的类型 |
- 处理结果集
String sql = "select * from test";
// 执行查询操作 ResultSet是结果集对象
resultSet = statement.executeQuery(sql);
// resultSet.next() 获取下一条结果集
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
预处理对象
PreparedStatement 接口介绍
- PreparedStatement是 Statement 接口的子接口,继承于父接口中所有的方法。它是一个预编译的SQL语句对象
- 预编译:是指SαL语句被预编译并存储在 PreparedStatement对象中。然后可以使用此对象多次髙效地执行该语句。
Preparedstatement 特点
- 因为有预先编译的功能,提高SQL的执行效率。
- 可以有效的防止SQL注入的问题,安全性更高
获取 Preparedstatemen对象
- 通过 Connection创建 PreparedStatemen对象
| Connection中的方法 | 说明 |
| ----------------------------------------------- | ------------------------------------------------------------ |
| PreparedStatement prepare Statement(String sql) | 指定预编译的SQL语句,
SQL语句中使用占位符?创建一个语句对象 |
事物
- 我们使用 Connection中的方法实现事务管理
| 方法 | 说明 |
| -------------------------------------- | ------------------------------------------------------------ |
| void setAutoCommit(boolean autoCommit) | 参数是true或fase如果设置为fase,表示关闭自动提交,相当于开启事务 |
| void commit() | 提交事务 |
| void rollback() | 回滚事务 |