MySQL:基于 JDBC 实现增删改查(执行过程 + 源代码超详解)

目录

一、增:往数据库中增加数据

1、创建数据源

setUrl:

setUser:

setPassWord:

2、建立数据库连接

3、创建操作命令

1、创建 sql 命令

2、发送命令

4、执行 SQL 命令

5、释放资源

完整源码:

二、删:从数据库中删除数据

完整源码:

三、改:修改数据库中的数据

完整源码:

四、查:查询数据库中的数据

完整源码:


一、增:往数据库中增加数据

1、创建数据源

//1、创建"数据源" (DataSource)
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/work_0318?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("1234");

setUrl:

 MySQL 数据库连接的 URL 参数格式如下:

jdbc:mysql://服务器地址:端口/数据库名?参数名=参数值

一般情况下,大家只有数据库名与我这里的不同,其他的都是相同的。

setUser:

用户名。一般情况下都是root。

setPassWord:

数据库密码。这里是大家自己设置的数据库的密码。

2、建立数据库连接

//2、与数据库服务器建立连接
        Connection connection = dataSource.getConnection();

需要注意!这边要选择第一个Connection,否则会报错!

在代码写完后会出现报错,这时我们只要声明一下异常即可解决。

3、创建操作命令

//3、创建能操作数据库的 sql 命令
        String sql = "insert into test values (18,'张三')";
        PreparedStatement preparedStatement = connection.prepareStatement(sql); 

1、创建 sql 命令

        假设在一个 test(age int,name varchar(20)) 表格中插入数据,我们需要先构建一条能操作数据库的 sql 命令。

2、发送命令

Statement对象主要是将 SQL 语句发送到数据库中。

JDBC API 提供了三种Statement对象:

·Statement

用于执行不带参数的简单 SQL 语句

·PreparedStatement

用于执行带或不带参数的 SQL 语句

SQL 语句会预编译在数据库系统

执行速度快于 Statement 对象

·CallableStatement

用于执行数据库存储过程中的调用

实际开发中我们最常用的是 PreparedStatement 对象。

4、执行 SQL 命令

 //4、执行 SQL:把刚刚解析好的语句发送给数据库服务器
        //      返回值是一个int 类型的数,表明操作影响了几行
        int n = preparedStatement.executeUpdate();
        System.out.println("n = " + n);

掌握两种 SQL 的执行方法:

1、executeQuery()

方法执行后返回单个结果集,通常用于select语句

2、executeUpdate

方法执行后返回一个整数,指示受影响的行数。通常用于 update、insert、delete 语句

此时执行代码,我们就可以发现,表格会多出一条我们添加的数据,n的值为1。

              

5、释放资源

//5、释放资源 (先使用的后释放
        //   主要是释放 语句对象 和 连接对象,DataSource不需要释放
        preparedStatement.close();
        connection.close();

完整源码:

import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Insert_Demo {
    public static void main(String[] args) throws SQLException {
        //1、创建"数据源" (DataSource)
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/work_0318?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("1234");
        //2、与数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        //3、创建能操作数据库的 sql 命令
        String sql = "insert into test values (18,'张三')";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4、执行 SQL:把刚刚解析好的语句发送给数据库服务器
        //      返回值是一个int 类型的数,表明操作影响了几行
        int n = preparedStatement.executeUpdate();
        System.out.println("n = " + n);
        //5、释放资源 (先使用的后释放
        //   主要是释放 语句对象 和 连接对象,DataSource不需要释放
        preparedStatement.close();
        connection.close();
    }
}

二、删:从数据库中删除数据

        基本操作还和增加数据中的一样,只是把sql命令操作修改一下。

完整源码:

import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Delete_Demo {
    public static void main(String[] args) throws SQLException {
        //1、创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/work_0318?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("1234");
        //2、和数据库服务器建立连接 (记得声明异常
        Connection connection = dataSource.getConnection();
        //3、构建操作数据库的 sql 语句
        String sql = "delete from test where name = '张三'";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4、执行 SQL:把刚刚解析好的语句发送给数据库服务器
        //      返回值是一个int 类型的数,表明操作影响了几行
        int n = preparedStatement.executeUpdate();
        System.out.println("n = " + n);
        //5、释放资源
        preparedStatement.close();
        connection.close();
    }
}

三、改:修改数据库中的数据

        基本操作还和增加数据中的一样,只是把sql命令操作修改一下。

完整源码:

public class Update_Demo {
    public static void main(String[] args) throws SQLException {
        //1、创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/work_0318?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("1234");
        
        //2、与服务器建立连接 (记得声明异常
        Connection connection = dataSource.getConnection();
        
        //3、创建能操作数据库的 sql 语句
        //(将张三的年龄改为1 岁)
        String sql = "update test set age = 1 where name = '张三'";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4、执行 SQL:把刚刚解析好的语句发送给数据库服务器
        //      返回值是一个int 类型的数,表明操作影响了几行
        int n = preparedStatement.executeUpdate();
        System.out.println("n = " + n);
        
        //5、释放资源
        preparedStatement.close();
        connection.close();
    }
}

执行前后:

四、查:查询数据库中的数据

        基本操作还和增加数据中的一样,只是把sql命令操作修改一下。这边还需要额外多出的就是一个结果集。

        需要注意:结果集会给出许多get方法,当你想查询的数据类型是什么方法的时候,就使用哪种get方法。

完整源码:

import com.mysql.cj.jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.*;
public class Select_Demo {
    public static void main(String[] args) throws SQLException {
        //1、创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/work_0318?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("1234");
        //2、和数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        //3、构建操作数据库的 sql 语句
        String sql = "select * from test";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4、执行 sql
        //ResultSet 是结果集,拿到了一个表格一样的数据
        //我们遍历结果集就可以得到表格中的数据内容了
        ResultSet resultSet = preparedStatement.executeQuery();
        //5、遍历结果集合
        while (resultSet.next()) {
            //读取数据
            int age = resultSet.getInt("age");    //获取age列的数据
            String name = resultSet.getString("name");    //获取name列的数据
            System.out.println("age = "+age+" name = "+name);
        }
        //6、释放资源
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }
}

运行结果:

     


        以上就是  MySQL:基于 JDBC 实现增删改查(执行过程 + 源代码超详解) 的全部内容了,希望能对您有所帮助!