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

数据库操作-MySQL-4(JDBC编程)

JDBC:通过Java代码操作mysql数据库,数据库会提供一些API供我们调用

MySQL、Oracle、等API有差异,但是Java统一了所有接口,即JDBC;

原始api-驱动包(类似转接头)-统一的api-Java

驱动包:安装并引入项目里

下载第三方程序包:

  • 官网
  • github(Steam++)
  • 中央仓库(下载驱动包“MySQL Connector Java”)

Maven Repository: Search/Browse/Explore

ps.驱动包(.jar)要和mysql版本匹配

把驱动包引入项目:

1.复制到目录中,一般叫lib

2.把目录标记成库的目录

1 具体实现

1.1准备工作

先创建一个数据源DataSource (javax.sql    -    JDBC的包)

DataSource dataSource=new MysqlDataSource();//向上转型
((MysqlDataSource)dataSource).setUrl("地址");//向下转型
((MysqlDataSource)dataSource).setUser("root");//用户名
((MysqlDataSource)dataSource).setPassword("123456");//密码

地址: jdbc:mysql://127.0.0.1:3306/database名?characterEncoding=utf8&useSSL=false

127.0.0.1  环回ip地址,网络上一个主机所在位置,自己给自己发消息,如果jdbc和mysql在同一个主机,就用环回ip,否则用对应主机ip(cmd  ipconfig);

3306 端口号(具体到某个软件)

useSSL=false 是否进行加密

后面是访问资源时需要哪些参数

root 管理员mysql默认自带用户

高内聚:把相关联的功能放在一起;

低内聚:把相关联功能零散分布;

低耦合:两个模块之间的关联关系不是很紧密,一个变化对另一个影响小

URL(网址) 表示网络上的资源位置

1.2建立连接

Connection connection=dataSource.getConnection();//java.sql包
//抛出异常 SQLException

1.3构造sql

String sql="mysql语句";
PreparedStatement statement=connection.prepareStatement(sql);
//插入用户自行输入数据
String sql="insert into student values(?,?)";
PreparedStatement statement=connection.preparestatement(sql);
statement.setInt(值,对应列名);
statement.setString(值,对应列名);

PreparedStatement 准备好的、预处理的语句;

1.4把sql发给服务器

//写操作
//n表示影响到的行数
int n=statement.executeUpdate();//insert、update、delete  写操作
//读操作
//ResuleSet表示查询到的结果集合(临时表)
ResultSet resultSet=statement.executeQuery();//select 读操作
//遍历表
while(resultSet.next()){
//针对这一行处理,取出列的数据
int id=resultSet.getInt("列名");}

1.5关闭连接 释放资源

//写操作
statement.close();
connection.close();
//后生成的先释放
//读操作
resultSet.close();
statement.close();
connection.close();

http://www.lryc.cn/news/2399059.html

相关文章:

  • Linux打开.img镜像文件
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(5)
  • 【科研绘图系列】R语言绘制论文组合图形(multiple plots)
  • springMVC-9数据格式化
  • Kafka 和Redis 在系统架构中的位置
  • 【Spring AI】如何实现文生图功能
  • 【ISAQB大纲解读】Kafka消息总线被视为“自下而上设计”?
  • ISBN书号查询接口如何用PHP实现调用?
  • 什么是 Docker Compose 的网络(network),为什么你需要它,它是怎么工作的
  • 嵌入式Linux 期末复习指南(上)
  • SpringBoot3.2新特性:JdbcClient
  • Dify:启动 Web 服务的详细指南
  • 3.1 HarmonyOS NEXT分布式数据管理实战:跨设备同步、端云协同与安全保护
  • Aop + 注解实现数据字典类型转换 EasyExcel导出
  • Python 元组方法全集详解
  • Selenium 中 JavaScript 点击操作的原理及应用
  • Xilinx超过256m bit flash固件跳转失败问题
  • SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入
  • 02 APP 自动化-Appium 运行原理详解
  • 由docker引入架构简单展开说说技术栈学习之路
  • linux 1.0.5
  • 强化学习的前世今生(五)— SAC算法
  • SQL进阶之旅 Day 8:窗口函数实用技巧
  • 生成对抗网络(GAN)基础原理深度解析:从直观理解到形式化表达
  • ubuntu 安装redis-6.2.9 源码安装和相关配置详解
  • c++之数组
  • torch.distributed.launch 、 torchrun 和 torch.distributed.run 无法与 nohup 兼容
  • [SC]C++ 中 struct vs. class 的唯一区别
  • React从基础入门到高级实战:React 高级主题 - React设计模式:提升代码架构的艺术
  • 【GitHub开源AI精选】WhisperX:70倍实时语音转录、革命性词级时间戳与多说话人分离技术