一、介绍
JavaDataBaseConnectivity(Java语言连接数据库),是sun公司制定的java统一访问数据库的接口。在java.sql.*包下。
二、使用JDBC连接MySql
1、导入mysql驱动包
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
2、编写JDBC连接代码
加载驱动类
驱动类只要在项目启动时加载一次即可,所以要放在静态代码块中。
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
连接数据库
// 数据库连接地址
String url = "jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false";
// 获取数据库连接对象(参数:数据库地址,帐号,密码)
Connection con = DriverManager.getConnection(url, username, password);
编写sql语句
// ?表示占位符,后面会给?赋值
// 添加语句,id设置了auto_increment所以写null即可
String sql1 = "insert into music values(null,?,?,?,?)";
// 删除语句
String sql2 = "delete from music where id = ?";
// 修改语句
String sql3 = "update music set name = ? where id = ?";
// 查询语句
String sql4 = "select * from music where id = ?";
预准备sql
// 获取预准备sql对象
PreparedStatement ps = con.prepareStatement(sql);
// 给占位符赋值(参数:?下标从1开始,给?赋的具体值)
ps.setInt(1, id);
执行sql语句
执行增删除语句,返回值是受影响的行数。
int count = ps.executeUpdate();
执行查询语句。
// 执行查询语句,返回结果集对象
ResultSet rs = ps.executeQuery();
// 遍历结果集 rs.next() 判断是否存在下一行数据
while (rs.next()) {
// 获取指定下标的列,从1开始
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
// 更多列...
}
关闭数据库连接
// rs.close(); 如果是查询语句
ps.close();
con.close();
三、使用DbUtils工具类操作mysql
1、导入相关依赖
<!-- dbutils工具包 -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.8.1</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.22</version>
</dependency>
2、编写数据源类
package com.buba;
import com.alibaba.druid.pool.DruidDataSource;
import javax.sql.DataSource;
/**
* @author 游王子og
* @title MyDataSource
* @date 2024/5/20 16:46
*/
public class MyDataSource {
private static DruidDataSource dataSource;
static {
dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/数据库?useUnicode=true&characterEncoding=utf8&useSSL=false");
dataSource.setUsername("root");
dataSource.setPassword("密码");
}
public static DataSource getDataSource() {
return dataSource;
}
}
3、使用QueryRunner类操作数据库
创建QueryRunner对象
// 创建QueryRunner对象,将数据源传入该对象中
QueryRunner qr = new QueryRunner(MyDataSource.getDataSource());
执行添加、删除、修改语句,返回受影响的行数。
int count = qr.update(sql,占位符值1,占位符值2 ...);
执行查询语句,返回值是结果集处理器指定的对象。
T t = qr.query(sql,结果集处理器对象,占位符值1,占位符值2...);
结果集处理器类如下:
- BeanHandler:返回单一的结果对象。
- BeanListHandler:返回List集合对象。
- ScalarHandler:返回指定的下标/列名的值。