当前位置: 首页 > news >正文

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

目录

JDBC的认识:

安装MySQL驱动包:

下载完成后将包导入IDEA

实现代码:

1.创建数据源

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

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

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

http://www.jsqmd.com/news/479930/

相关文章:

  • 2026年湖北基坑围挡公司五强解析:安全与效率的革新者 - 2026年企业推荐榜
  • 开源工具提升网盘下载效率:Online-disk-direct-link-download-assistant全场景应用指南
  • 2026年3月武汉固定式防撞设施优质厂商深度评估 - 2026年企业推荐榜
  • 蓝牙协议逆向与跨平台适配:GalaxyBudsClient的开源设备控制技术突破
  • 2026年值得关注的回本快自助棋牌室加盟品牌推荐 - 2026年企业推荐榜
  • 2026年3月湖北新型悬挑工字钢服务商综合实力TOP5 - 2026年企业推荐榜
  • 5大场景带你掌握微信自动化:从零基础到企业级应用
  • Linux 进程剖析:深入内核源码,揭开进程运作机制
  • M3U8视频下载技术全解析:从误区破除到未来演进
  • 2026年Q1低能耗冷链泡沫箱品牌可靠选择分析 - 2026年企业推荐榜
  • WarcraftHelper:经典游戏增强与兼容性解决方案
  • 2026年比较好的集装箱建筑厂家推荐:集装箱房屋实力工厂推荐 - 品牌宣传支持者
  • 革新B站缓存视频管理:m4s-converter突破格式限制的全流程解决方案
  • 如何用GPT-SoVITS实现广播级音频合成?揭秘AI语音技术的突破性进展
  • 2026年水电简修快修服务口碑榜TOP5揭晓 - 2026年企业推荐榜
  • DSM 7.2.2系统Video Station解决方案完全指南
  • 如何通过ExplorerPatcher实现Windows工作环境的个性化与效率提升
  • 3个实用方案:Xbox手柄macOS兼容配置与优化指南
  • 开源项目国际化从0到1构建:多语言适配避坑指南
  • 重构网盘下载体验:Online-disk-direct-link-download-assistant技术原理与应用实践
  • 重构装备管理体验:TQVaultAE的颠覆式存储革命
  • 突破百度网盘限速的5个秘诀:让Mac下载速度提升10倍的完整指南
  • C盘告急?系统卡顿?Windows Cleaner让你的电脑重获新生
  • 3步掌握!wvp-GB28181-pro视频监控平台的Docker高效部署实战指南
  • 突破网盘下载限制:直链解析技术全攻略
  • Tftpd64网络服务工具实战指南:从基础部署到企业级应用全攻略
  • 突破扫描文档桎梏:Umi-OCR双层PDF革新技术全解析
  • PS手柄PC全适配指南:解决兼容性难题的DS4Windows实战方案
  • 【2026年京东春招 - 3月14日 -第一题- 星际快递】(题目+思路+JavaC++Python解析+在线测试)
  • 3大核心引擎破解Steam创意工坊访问限制:WorkshopDL的跨平台下载方案