MySQL Java的JDBC编程

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL Java的JDBC编程

 🤞目录🤞

💖1. Java的数据库编程:JDBC

💖2. JDBC工作原理

💖3. JDBC使用


🏀1. Java的数据库编程:JDBC

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

🏀2. JDBC工作原理

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

image.gif编辑

🏀3. JDBC使用

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

使用java IDEA 新建一个Maven项目

image.gif编辑

打开并配置 pom.xml

image.gif编辑

🎈建立数据库连接:

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");

image.gif

🎈为了方便我们新建一个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();
    }
}

image.gif

🎈使用演示:

//已设默认库,写执行语句
        // 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);
                    }
                }
            }
        }

image.gif

🎈对该库具体的增删改查完整代码如下:

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);
                    }
                }
            }
        }
    }
}

image.gif

🎈此代码中涉及两个表:

readers表:

image.gif编辑

books表:

image.gif编辑

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
存储 安全 Java
Java并发编程中的高效数据结构:ConcurrentHashMap解析
【4月更文挑战第25天】在多线程环境下,高效的数据访问和管理是至关重要的。Java提供了多种并发集合来处理这种情境,其中ConcurrentHashMap是最广泛使用的一个。本文将深入分析ConcurrentHashMap的内部工作原理、性能特点以及它如何在保证线程安全的同时提供高并发性,最后将展示其在实际开发中的应用示例。
|
1天前
|
SQL 关系型数据库 MySQL
Spring_jdbc数据连接池(mysql实现增、删、改、查)
Spring_jdbc数据连接池(mysql实现增、删、改、查)
7 0
|
2天前
|
Java API 调度
[Java并发基础]多进程编程
[Java并发基础]多进程编程
|
2天前
|
Java API 调度
[AIGC] 深入理解Java并发编程:从入门到进阶
[AIGC] 深入理解Java并发编程:从入门到进阶
|
2天前
|
前端开发 Java 测试技术
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
|
2天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
2天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
2天前
|
IDE Java 开发工具
Java从入门到精通:1.3.1实践编程巩固基础知识
Java从入门到精通:1.3.1实践编程巩固基础知识
|
7天前
|
IDE Java 物联网
《Java 简易速速上手小册》第1章:Java 编程基础(2024 最新版)
《Java 简易速速上手小册》第1章:Java 编程基础(2024 最新版)
13 0
|
SQL Java 关系型数据库
java与MySQL数据库的连接
java与MySQL数据库的连接1.数据库的安装和建立参见上一篇博客中的第1,2步骤。(http://blog.csdn.net/nuptboyzhb/article/details/8043091) 或使用SQL语句   [sql] view plaincopy   ...
877 0