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

JDBC接口

文章目录

  • JDBC介绍
  • 入门程序
  • 预编译
    • 代码剖析

JDBC介绍

JDBC:(Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API。

  • sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包。
  • 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

入门程序

修改数据库中的数据

  1. 创建maven项目
  2. 创建一个数据库,创建一个user表
create table user(id int unsigned primary key auto_increment comment 'ID,主键',username varchar(20) comment '用户名',password varchar(32) comment '密码',name varchar(10) comment '姓名',age tinyint unsigned comment '年龄'
) comment '用户表';insert into user(id, username, password, name, age) values (1, 'daqiao', '123456', '大乔', 22),(2, 'xiaoqiao', '123456', '小乔', 18),(3, 'diaochan', '123456', '貂蝉', 24),(4, 'lvbu', '123456', '吕布', 28),(5, 'zhaoyun', '12345678', '赵云', 27);
  1. pom.xml中引入依赖
<dependencies><!-- MySQL JDBC driver --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.3</version><scope>test</scope></dependency>
</dependencies>
  1. 编写测试类,定义测试方法
package baichu;import com.baochu.pojo.User;
import org.junit.Test;import java.sql.*;public class jdbcTest {@Testpublic void testUpdate() throws ClassNotFoundException, SQLException {//注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//获取数据库连接String url = "jdbc:mysql://localhost:3306/web01";String password = "gubaichu";String username = "root";Connection connection = DriverManager.getConnection(url,username,password);//获取数据库对象Statement statement = connection.createStatement();//执行sqlint i = statement.executeUpdate("update user set age = 28 where id =1");System.out.println(i);//释放资源statement.close();connection.close();}
}

5.结果
在这里插入图片描述

预编译

查询数据并封装为一个User类

package com.baochu.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer id;private String username;private String password;private String name;private Integer age;
}jdbc
package baichu;import com.baochu.pojo.User;
import org.junit.Test;import java.sql.*;public class jdbcTest {@Testpublic void tsetSelect(){String URL = "jdbc:mysql://localhost:3306/web01";String USERNAME = "root";String PASSWORD = "gubaichu";Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null; //封装查询返回结果try {// 1. 加载驱动(可选,新版 JDBC 自动加载)Class.forName("com.mysql.cj.jdbc.Driver");// 2. 获取数据库连接conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);// 3. 编写 SQL 查询语句String sql = "SELECT id, username, password, name, age FROM user WHERE username = ? AND password = ?";// 4. 创建 PreparedStatementpstmt = conn.prepareStatement(sql);pstmt.setString(1, "daqiao");   // 设置第一个参数pstmt.setString(2, "123456");   // 设置第二个参数// 5. 执行查询rs = pstmt.executeQuery();// 6. 处理结果集boolean found = false;while (rs.next()) {found = true;User user = new User(rs.getInt("id"),rs.getString("username"),rs.getString("password"),rs.getString("name"),rs.getInt("age"));// 输出到控制台System.out.println(user);}if (!found) {System.out.println("未找到匹配的用户记录。");}} catch (ClassNotFoundException e) {System.err.println("MySQL 驱动未找到!");e.printStackTrace();} catch (SQLException e) {System.err.println("数据库操作异常!");e.printStackTrace();} finally {// 7. 关闭资源(建议使用 try-with-resources 更安全)try {if (rs != null) rs.close();if (pstmt != null) pstmt.close();if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}

代码剖析

ResultSet(结果集对象):封装了DQL查询语句查询的结果。

  • next():将光标从当前位置向前移动一行,并判断当前行是否为有效行,返回值为boolean。
  • getXxx(…):获取数据,可以根据列的编号获取,也可以根据列名获取(推荐)。

运行结果:
在这里插入图片描述


文章转载自:

http://CrpDWXTf.znzxd.cn
http://1BLHZyAl.znzxd.cn
http://QF6bRf8o.znzxd.cn
http://TI0xaiSO.znzxd.cn
http://4QAVn6YV.znzxd.cn
http://xxj2PRyr.znzxd.cn
http://curN6COW.znzxd.cn
http://65X40mWm.znzxd.cn
http://lp9rp4nu.znzxd.cn
http://6aRFbBp0.znzxd.cn
http://JfRszDnB.znzxd.cn
http://8l7u3Qxj.znzxd.cn
http://BjkCnmH3.znzxd.cn
http://9Mo1Wap3.znzxd.cn
http://VIl4BC4W.znzxd.cn
http://xil6VY1l.znzxd.cn
http://Xhchabt6.znzxd.cn
http://zu3Lb557.znzxd.cn
http://5OQ4gWhV.znzxd.cn
http://OlFJh8Sc.znzxd.cn
http://zTXOvhMc.znzxd.cn
http://1JGG4Tg6.znzxd.cn
http://ZVOsM4Fr.znzxd.cn
http://jiiQSIYf.znzxd.cn
http://l5X5nNf6.znzxd.cn
http://miahjpIR.znzxd.cn
http://Q1XqHPGW.znzxd.cn
http://F2Vqvyg6.znzxd.cn
http://6fAgJoSW.znzxd.cn
http://lrqtwvbb.znzxd.cn
http://www.dtcms.com/a/377118.html

相关文章:

  • 图形基础算法:如何将点与带曲线边的多边形位置关系算法做稳定
  • 深圳南柯电子|EMC干扰问题整改:患者安全优先的零风险操作方案
  • Java全栈开发面试实战:从基础到微服务的完整技术栈解析
  • 关于发布生成式人工智能服务已备案信息的公告(2025年7月至8月)
  • 深度学习基本模块:ConvTranspose1D 一维转置卷积层
  • Flink Agents:基于Apache Flink的事件驱动AI智能体框架
  • JavaSSM框架-MyBatis 框架(四)
  • 网络编程基础知识总结:Socket与TCP通信
  • 《TCP协议基础》
  • 1234567
  • 【面试向】物联网IoT
  • 快消26届联合利华校招AI测评及第二轮线上认知能力测评SHL笔试真题及评分要求
  • 我在嘉顺达蓝海的安全日常
  • 洞察 2025:中国身份访问安全厂商格局深度剖析
  • LLMOps平台:开源项目LMForge = GPTs + Coze
  • 开源欧拉_网络插件cilium_HA集群_二进制_IPV4IPV6双栈_Kubernetes-1.33.0
  • 101、23种设计模式之享元模式(10/23)
  • Tomcat原理
  • Linux 内核和用户空间
  • Cookie、Session和Token之间的区别
  • 大模型之词嵌入模型实现文本向量化
  • MySQL慢查询
  • 前端如何判断token是否过期
  • 当没有接口文档时,如何使用Jmeter录制和创建脚本
  • 解锁深度学习黑科技:Embedding向量嵌入探秘
  • Java 大视界 -- 基于 Java 的大数据分布式存储在数字图书馆海量资源存储与管理中的应用
  • 6、Python-Pandas数据处理与分析
  • 实现一个优雅的城市选择器组件 - Uniapp实战
  • WebSocket 双向通信实战:SCADA 移动端实时操控响应优化
  • 校园管理系统练习项目源码-前后端分离-【node版】