MySQL Java的JDBC编程

目录

1. Java的数据库编程:JDBC

2. JDBC工作原理

3. JDBC使用


1. Java的数据库编程:JDBC

JDBC ,即 Java Database Connectivity java 数据库连接。是一种用于执行 SQL 语句的 Java API ,它是 Java中的数据库连接规范。这个 API java.sql.*,javax.sql.* 包中的一些类和接口组成,它为 Java 开发人员操作数据库提供了一个标准的API ,可以为多种关系数据库提供统一访问。

2. JDBC工作原理

JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问 API 的一种高级抽象,它主要包含一些通用的接口类。
MySQL Java的JDBC编程_第1张图片

3. JDBC使用

准备数据库驱动包,并添加到项目的依赖中:

使用java IDEA 新建一个Maven项目

MySQL Java的JDBC编程_第2张图片

 打开并配置 pom.xml 

MySQL Java的JDBC编程_第3张图片

建立数据库连接:
        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表:

MySQL Java的JDBC编程_第4张图片

 books表:

MySQL Java的JDBC编程_第5张图片

MYSQL建表等操作请见上节:《 MySQL 增删改查(基础 + 详解)》

你可能感兴趣的:(MySQL,sql,java,开发语言)