使用Java操作MySQL实现数据交互的方法

 更新时间:2025年01月09日 09:50:40   作者:呼啦啦啦啦啦啦啦啦  
JDBC是Java中用于操作数据库的API,可以为多种关系数据库提供统一访问,它通过JDK自带的JDBC API和数据库驱动包进行操作,实现数据库的增删改查,本文给大家介绍使用Java操作MySQL实现数据交互的方法,感兴趣的朋友跟随小编一起看看吧

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.创建数据源

        //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.和数据库服务器建立连接 

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

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

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

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

2.url写错了

3.用户名写错了

4.密码填错了

5.网络断开.....

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

        //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语句

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

有俩种方法:

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

5.释放资源 

        //5.释放资源
        preparedStatement.close();
        connection.close();

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

完整代码:

Insert:

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:

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:

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

到此这篇关于使用Java操作MySQL实现数据交互的文章就介绍到这了,更多相关java mysql数据交互内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java使用反射来获取泛型信息示例

    Java使用反射来获取泛型信息示例

    这篇文章主要介绍了Java使用反射来获取泛型信息,结合实例形式分析了java基于反射操作泛型信息的相关实现技巧与注意事项,需要的朋友可以参考下
    2019-07-07
  • 教你如何区分Spring与Structs2中间件

    教你如何区分Spring与Structs2中间件

    这篇文章主要介绍了教你如何区分Spring与Structs2中间件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • spring boot 本地图片不能加载(图片路径)的问题及解决方法

    spring boot 本地图片不能加载(图片路径)的问题及解决方法

    这篇文章主要介绍了spring boot 本地图片不能加载(图片路径)的问题,解决的办法其实很简单,只要写一个配置文件,也就是图片位置的转化器,原理是虚拟一个在服务器上的文件夹,与本地图片的位置进行匹配。需要的朋友可以参考下
    2018-04-04
  • 使用Java构建一个简洁清晰的日期API

    使用Java构建一个简洁清晰的日期API

    这篇文章主要为大家详细介绍了如何使用Java构建一个简洁清晰的日期API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-10-10
  • Java并发编程之Executors类详解

    Java并发编程之Executors类详解

    今天给大家带来的是关于Java并发编程的相关知识,文章围绕着Java Executors类展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringMVC文件上传的配置实例详解

    SpringMVC文件上传的配置实例详解

    本文通过实例代码给大家介绍SpringMVC文件上传的配置相关内容,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-05-05
  • SpringBoot实现国际化的配置方法

    SpringBoot实现国际化的配置方法

    随着一个系统的规模做上去之后,国际化的问题就会逐渐暴露出来,简单来说,当你的系统面对的不再是本国的用户,而要面临海外用户时,系统必须要能适配国际化,所以本文给大家介绍了SpringBoot实现国际化的配置方法,需要的朋友可以参考下
    2025-11-11
  • 一文带你看懂Android动画的实现原理

    一文带你看懂Android动画的实现原理

    动画是 Android 应用程序中重要的交互特性,ndroid 提供了多种动画效果,包括平移、缩放、旋转和透明度等,它们可以通过代码或 XML 来实现,本文将介绍 Android 动画的原理和实现方法,并提供一些示例,需要的朋友可以参考下
    2023-07-07
  • Java redisson实现分布式锁原理详解

    Java redisson实现分布式锁原理详解

    这篇文章主要介绍了Java redisson实现分布式锁原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Spring Boot中使用 Spring Security 构建权限系统的示例代码

    Spring Boot中使用 Spring Security 构建权限系统的示例代码

    本篇文章主要介绍了Spring Boot中使用 Spring Security 构建权限系统的示例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08

最新评论