🏀1. Java的数据库编程:****JDBC
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java 开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
🏀2. JDBC工作原理
JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包含一些通用的接口类。
🏀3. *JDBC***使用 **
准备数据库驱动包,并添加到项目的依赖中:
使用java IDEA 新建一个Maven项目
打开并配置 pom.xml
🎈建立数据库连接:
MysqlDataSource db = new MysqlDataSource();
// 1. 告诉客户端,MySQL服务器在哪
// 通过告诉 地址 + 端口
db.setServerName("localhost");
db.setPort(3306);
// 2. 认证(名称 + 密码)
db.setUser("root");
db.setPassword("123456");
// 设置默认库(要操作的库名)
db.setDatabaseName("0331_library");
// 3. 其他配置
db.setUseSSL(false);
db.setCharacterEncoding("utf-8");
db.setServerTimezone("Asia/Shanghai");
🎈为了方便我们新建一个DBUtil类,直接调用即可
public class DBUtil {
private static final DataSource dataSource;
static {
MysqlDataSource db = new MysqlDataSource();
db.setServerName("localhost");
db.setPort(3306);
db.setUser("root");
db.setPassword("123456");
db.setDatabaseName("0331_library");
db.setUseSSL(false);
db.setCharacterEncoding("utf-8");
db.setServerTimezone("Asia/Shanghai");
dataSource = db;
}
public static Connection connection() throws SQLException {
return dataSource.getConnection();
}
}
🎈使用演示:
//已设默认库,写执行语句
// a. 查询
String sql = "select * from books";
// 4. 通过网络和MySQL服务器建立连接
try (Connection c = DBUTil.connection()) {
// 5. 发送给MySQL服务器我们的语句
try (PreparedStatement ps = c.prepareStatement(sql)) {
// 6. executeQuery 执行查询
// 7. ResultSet接收(需要输出)
try (ResultSet rs = ps.executeQuery()) {
// 8. 遍历、检索、打印集中的数据
while (rs.next()) {
String rid = rs.getString(1);
String name = rs.getString(2);
String stock = rs.getString(3);
String total = rs.getString(4);
System.out.printf("%s\t%s\t%s\t%s\n",rid,name,stock,total);
}
}
}
}
🎈对该库具体的增删改查完整代码如下:
import java.sql.*;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
try(Connection c = DBUtil.connection()){
// 1.增
String sql1 = "insert into readers (name) values (?)";
String newReaderName = scanner.next();
//Statement.RETURN_GENERATED_KEYS 得到自增值操作
try(PreparedStatement ps = c.prepareStatement(sql1,Statement.RETURN_GENERATED_KEYS)){
ps.setString(1,newReaderName);
ps.executeUpdate();
try(ResultSet rs = ps.getGeneratedKeys()){
rs.next();
int rid = rs.getInt(1);
System.out.println("新插入了一个reader:" + rid +"\t"+newReaderName);
}
}
// 2.删
String sql2 = "delete from readers where name = '刘昕怡'";
try(PreparedStatement ps = c.prepareStatement(sql2)){
ps.executeUpdate();
}
// 3.改
String sql3 = "update readers set name = '刘昕怡' where name = '陈浩民'";
try (PreparedStatement ps = c.prepareStatement(sql3)){
ps.executeUpdate();
}
// 4.查
String sql4 = "select * from books where 1 = 1";
try(PreparedStatement ps = c.prepareStatement(sql4)){
try(ResultSet rs = ps.executeQuery()){
while (rs.next()){
int rid = rs.getInt(1);
String name = rs.getString(2);
int stock = rs.getInt(3);
int total = rs.getInt(4);
System.out.printf("%d\t%s\t%d\t%d\n",rid,name,stock,total);
}
}
}
}
}
}
🎈此代码中涉及两个表:
readers表:
books表:
🎈MYSQL建表等操作请见上节:《 MySQL 增删改查(基础 + 详解)》
版权归原作者 爱干饭的猿 所有, 如有侵权,请联系我们删除。