• 【MySQL】Java的JDBC编程


    一、数据库编程的必备条件

    🚕(1)编程语言,如Java,C、C++、Python
    🚕(2)数据库,如Oracle,MySQL,SQL Server
    🚕(3)数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。

    二、Java的数据库编程:JDBC

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

    三、JDBC的使用

    3.1 准备工作

    🚙(1)下载MySQL驱动包(maven中央仓库,大版本要和MySQL一致)
    🚙(2)导入到项目中(复制到项目目录下)

    3.2 编写代码

    🚒(1)创建数据源(描述数据库服务器所在位置)
    🚒(2)建立连接
    🚒(3)构造SQL语句
    🚒(4)执行SQL语句
    🚒(5)释放资源

    3.3 代码演示

    插入数据:

    import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class JDBCinsert2 {
        public static void main(String[] args) throws SQLException {
            Scanner scanner = new Scanner(System.in);
            // JDBC 需要通过以下步骤来完成开发.
            // 1. 创建并初始化一个数据源
            DataSource dataSource = new MysqlDataSource();
            ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test_jdbc?characterEncoding=utf8&useSSL=false");
            ((MysqlDataSource) dataSource).setUser("root");
            ((MysqlDataSource) dataSource).setPassword("20030603");
            // 2. 和数据库服务器建立连接.
            Connection connection = dataSource.getConnection();
            // 3. 从控制台读取用户输入的内容
            System.out.println("请输入学生姓名:");
            String name = scanner.nextLine();
            System.out.println("请输入学号:");
            int id = scanner.nextInt();
            // 4. 构造 SQL 语句
            String sql = "insert into student value (?,?)";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setInt(1,id);
            statement.setString(2,name);
            System.out.println(statement);
            // 5. 执行 SQL 语句
            int ret = statement.executeUpdate();
            System.out.println("ret = " + ret);
            // 6. 释放必要的资源
            statement.close();
            connection.close();
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    查询:

    import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class JDBCselect {
        public static void main(String[] args) throws SQLException {
            // 1. 创建并初始化数据源
            DataSource dataSource = new MysqlDataSource();
            ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test_jdbc?characterEncoding=utf8&useSSL=false");
            ((MysqlDataSource)dataSource).setUser("root");
            ((MysqlDataSource)dataSource).setPassword("20030603");
            // 2. 建立连接
            Connection connection = dataSource.getConnection();
            // 3. 构造 SQL
            String sql = "select * from student";
            PreparedStatement statement = connection.prepareStatement(sql);
            // 4. 执行 SQL
            ResultSet resultSet = statement.executeQuery();
            // 5. 遍历结果集合
            while (resultSet.next()) {
                // 把 resultSet 想象成一个表格. 同时表格这里有个光标, 初始情况下光标指向表最上面~~
                // 每次调用 next, 光标往下走一行~~
                // 当光标指向某一行的时候, 就可以通过 getXXX 来获取到当前这行里的数据
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("id = " + id + ", name = " + name);
            }
            // 6. 释放资源
            resultSet.close();
            statement.close();
            connection.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
  • 相关阅读:
    切分集合的奇技淫巧——stream
    Vue是什么?
    Dockerfile(2) - LABEL 指令详解
    做一名既有宽度也有深度的测试!
    ESP8266-Arduino编程实例-LSM303 3D加速度计/磁力计驱动
    天津Java培训机构揭秘!Java到底能做什么?
    Docker 与 K8S学习笔记(二十四)—— 工作负载的使用
    前端工程师应该如何去创业?
    服务器Debian 12.x中安装Jupyer并配置远程访问
    深入理解CSS:探索前端开发的进阶技巧
  • 原文地址:https://blog.csdn.net/m0_68101404/article/details/134449653