🤞目录🤞
🏀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 增删改查(基础 + 详解)》