• 通过JDBC连接MySQL


    通过JDBC连接MySQL

    1. 添加maven依赖

    maven repository官网:Maven Repository: Search/Browse/Explore (mvnrepository.com)

    在pom.xml的中添加jdbc相关依赖:

    
    <dependency>
    	<groupId>mysqlgroupId>
    	<artifactId>mysql-connector-javaartifactId>
        <version>8.0.30version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 代码编写

    2.1 注册驱动
    Class.forName("com.mysql.jdbc.Driver");
    
    • 1

    运行这行代码的时候可能会出现下面的warning,此时注释掉该行代码即可

    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
    
    • 1
    2.2 获取连接对象

    Connection(数据库连接对象)的作用:

    • 获取执行SQL的对象
    • 管理事务
    String url = "jdbc:mysql://ipAddress:port/database";
    String username = "";
    String password = "";
    Connection conn = DriverManager.getConnection(url, username, password);
    
    • 1
    • 2
    • 3
    • 4
    2.3 定义SQL

    在定义sql之前,我们先创建一个以供测试使用的student表

    CREATE TABLE `db1`.`student`( `name` CHAR(20) NOT NULL, `age` INT, PRIMARY KEY (`name`) ); 
    
    • 1

    顺便再往表格里插入两个数据

    INSERT INTO `db1`.`student` (`name`, `age`) VALUES ('Tom', '20'); 
    INSERT INTO `db1`.`student` (`name`, `age`) VALUES ('Lily', '22'); 
    
    • 1
    • 2

    接下来尝试通过sql语句将Tom的年龄修改为23,sql语句如下:

    String sql1 = "update student set age=23 where name='Tom';";
    
    • 1

    修改完表之后或许想要输出一下表格的内容,对应的sql语句如下:

    String sql2 = "select * from student;";
    
    • 1
    2.4 获取执行sql的对象

    Statement作用:

    • 执行SQL语句
      • int executeUpdate(sql):执行DML、DDL语句,返回(1)DML语句影响的行数(2)DDL语句执行后,执行成功也可能返回0
      • ResultSet executeQuery(sql):执行DQL语句,返回ResultSet结果集对象
    Statement stmt = conn.createStatement();
    
    • 1
    2.5 执行sql

    在执行sql时,我们希望获取sql语句执行后受影响的row的数量

    int count = stmt.executeUpdate(sql1);
    ResultSet rs = stmt.executeQuery(sql2);
    
    • 1
    • 2
    2.6 处理结果

    输出以下处理的结果

    // 修改数据
    System.out.println(count);
    // 查看表
    while (resultSet.next()) {
    	String name = resultSet.getString("name");
    	int age = resultSet.getInt("age");
    	System.out.println("name: "+name+", age: "+age);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    2.7 释放资源
    stmt.close();
    conn.close();
    
    • 1
    • 2

    3. 完整代码

    import java.sql.*;
    
    public class jdbc_test {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            // 1. 注册驱动
            // Class.forName("com.mysql.jdbc.Driver");
            // 2. 获取连接对象
            String url = "";
            String username = "";
            String password = "";
            Connection conn = DriverManager.getConnection(url, username, password);
            //3. 定义SQL
            // 修改年龄
            String sql1 = "update student set age=23 where name='Tom';";
            // 输出student表
            String sql2 = "select * from student";
            //4. 获取执行sql的对象
            Statement stmt = conn.createStatement();
            //5. 执行sql
            int count = stmt.executeUpdate(sql1);
            ResultSet resultSet = stmt.executeQuery(sql2);
            //6. 处理结果
            System.out.println(count);
            while (resultSet.next()) {
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println("name: "+name+", age: "+age);
            }
            //7. 释放资源
            stmt.close();
            conn.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
  • 相关阅读:
    【数据结构】单链表
    css3 函数汇总(笔记)
    信息检索与智能问答
    关于.NET代码质量度量和分析的一些总结
    论文阅读(单词记录)Investigating Attention Mechanism in 3D Point Cloud Object Detection
    东软睿驰受邀出席恩智浦汽车生态技术峰会,见证S32 CoreRide开放平台全新发布
    如何自学java怎么入门?我有秒招
    Go-Excelize API源码阅读(二十四)——SetColVisible、SetRowHeight
    Web自动化测试进阶:网页中难点之等待机制 —— 强制等待,隐式等待
    【蓝桥杯国赛真题24】Scratch货物运输 第十三届蓝桥杯 图形化编程scratch国赛真题和答案讲解
  • 原文地址:https://blog.csdn.net/cacique111/article/details/126550568