【MySQL篇】使用Java操作MySQL实现数据交互

目录

JDBC的认识:

安装MySQL驱动包:

下载完成后将包导入IDEA

实现代码:

1.创建数据源

2.和数据库服务器建立连接

[3.构造操作数据库的 sql 语句.](#3.构造操作数据库的 sql 语句.)

4.执行SQL语句

5.释放资源

完整代码:

Insert:

Select:

Update:


JDBC的认识:

JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问;

由于每个厂商的数据库的API都不同,为了进行统一管理,Java提供了一套标准的API接口标准,每个数据库都得安装这套标准才能在Java中使用,这套标准就是JDBC;

JDBC的作用可以在Java中对数据库进行增删改查操作;


安装MySQL驱动包:

只要安装了JDK就自带了JDBC,JDBC是Java标准库中提供的,但是Java要想操作数据库,就得下载它的数据库驱动包,得适配到Java中

中央仓库:https://mvnrepository.com/

中央仓库:有大佬将Java中日常开发中可能会使用到的第三方库,安装包统一收集在一个网站中,这个网站就叫做"中央仓库";

因为我使用的数据库是5.7版本的,属于旧版本,下载旧版本的驱动包即可;

随便哪个版本都行,只需前面的大版本对应你的MySQL版本就行

下载jar文件

下载完成后将包导入IDEA

1)在项目中创建一个新目录

2)将jar包复制粘贴到lib包中

3)右击.jar文件 选择 点击OK

4)添加完成

实现代码:

1.创建数据源

java 复制代码
        //1.创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

这里设置了账号密码使用的有连接方式

客户端-服务器之间的通信有俩种:

有连接:这里JDBC使用的就是这种,需要双方同意才能进行操作。

例如:打电话,A打B的电话,B必须接收才能相互通信

无连接:类似发短信,不需要对方同意,也可以直接发送

2.和数据库服务器建立连接

java 复制代码
        //2.和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

这块不要导错包,否则会出现错误;

在getConnection()这个方法的可能会连接失败 有以下几点可能:

1.数据库服务器没有正确启动

2.url写错了

3.用户名写错了

4.密码填错了

5.网络断开.....

3.构造操作数据库的 sql 语句.

java 复制代码
        //3.构造操作数据库语句
        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        System.out.println("请输入姓名: ");
        String name = scanner.next();
        String sql = "insert into student values(?, ?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1, id);
        preparedStatement.setString(2, name);

prepareStatement(sql) 方法将 SQL 语句传递给数据库,准备执行。PreparedStatement 提供了一种预编译的方式,确保 SQL 语句能更高效地执行,并且可以有效防止 SQL 注入。

在sql语句中使用到?这种占位符

preparedStatement:可以设置sql语句对应的占位符位置,并且下标是从1开始

4.执行SQL语句

java 复制代码
//4.执行SQL语句
int n = preparedStatement.executeUpdate();
System.out.println("n = "+n);

有俩种方法:

  • executeQuery() 方法执行后返回单个结果集的,通常用于select语句
  • executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete语句

5.释放资源

java 复制代码
        //5.释放资源
        preparedStatement.close();
        connection.close();

对应前面创建的资源都得手动释放掉,以免不必要的浪费

完整代码:

Insert:

java 复制代码
public class Demo {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        //1.创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");

        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

        //2.和数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        //3.构造操作数据库语句
        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        System.out.println("请输入姓名: ");
        String name = scanner.next();
        String sql = "insert into student values(?, ?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1, id);
        preparedStatement.setString(2, name);
        //4.执行SQL语句
        int n = preparedStatement.executeUpdate();
        System.out.println("n = "+n);
        //5.释放资源
        preparedStatement.close();
        connection.close();
    }
}

Select:

java 复制代码
public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        //1.创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");

        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

        //2.和数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        //3.构造操作数据库语句
        String sql = "select * from student";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        //4.执行语句
        ResultSet resultSet = preparedStatement.executeQuery();

        //遍历结果
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id = "+id +", name = " + name);
        }
        //5.资源释放
        resultSet.close();
        preparedStatement.close();;
        connection.close();
    }

ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供了对这些行中数据的访问。

ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。

Update:

java 复制代码
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        //1.建立数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("040518");
        //2.建立连接
        Connection connection = dataSource.getConnection();
        //3.构建sql
        String sql =  "update student set name = 'wangwu' where id = 2";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        //4.执行sql
        int n = preparedStatement.executeUpdate();
        System.out.println("n = " + n);
        //5.释放资源
        preparedStatement.close();
        connection.close();
    }
相关推荐
索荣荣3 小时前
Maven配置文件(pom.xml)终极指南
java·开发语言
数据知道3 小时前
PostgreSQL 故障排查:万字详解如何找出数据库中的死锁
数据库·postgresql
代码栈上的思考3 小时前
SpringBoot 拦截器
java·spring boot·spring
AI_56783 小时前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai
送秋三十五3 小时前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
choke2333 小时前
软件测试任务测试
服务器·数据库·sqlserver
龙山云仓3 小时前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
雨中飘荡的记忆3 小时前
千万级数据秒级对账!银行日终批处理对账系统从理论到实战
java
IT邦德3 小时前
OEL9.7 安装 Oracle 26ai RAC
数据库·oracle
jbtianci3 小时前
Spring Boot管理用户数据
java·spring boot·后端