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

JDBC从入门到实战:DriverManager、Connection、PreparedStatement与ResultSet详解

一.JDBS

1.介绍

JDBC:就是使用Java语言操作关系型数据库的一套API

本质:

sun公司官方定义的一套操作所有关系型数据库的规范,即接口。

各个数据库厂商去实现这套接口,提供数据库驱动jar包

可以使用这套(JDBS)编程。真正执行的代码是驱动jar包中的实现类。

2.入门程序

1)完成数据修改

package org.junit.jupiter; import org.junit.jupiter.api.Test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Exception; import java.sql.Statement; public class JdbcTest { //JDBC入门程序 @Test public void testUpdate() throws Exception { //1.导入数据库驱动 Class.forName( "com.mysql.cj.jdbc.Driver" );//使用forName方法加载数据库驱动 //2.获取数据库连接 String url = "jdbc:mysql://localhost:3306/web01"; String username = "root"; String password = "1234"; DriverManager.getConnection(url,username,password); //3.获取SQL语句执行对象 Statement statement = connection.createStatement(); //4.执行SQL语句 int i = statement.executeUpdate("update account set money = 1000 where id = 1"); System.out.println("sql执行完毕次数" + i); //5.释放资源 Statment.close(); connection.close(); } }

2)完成查询数据

需求:基于JDBC执行如下select语句,将查询语句封装到User对象中

SQL:select * from user where username = "daqiao" and password = "123456"

AI提示词:

你是一名java开发工程师,帮我基于JDBC程序来操作数据库,执行如下SQL语句:select id,username,password,name,age from user where username = 'daqiao' and password = '123456';
并将查询的每一行记录,都封装到实体类User中,然后将User对象的数据输出到控制台中。
User 实体类属性如下:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id; //ID
private String username; //用户名
private String password; //密码
private String name; //姓名
private Integer age; //年龄
}

import java.sql.*; public class JdbcUserQuery { public static void main(String[] args) { // 数据库连接信息 String url = "jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=UTC&characterEncoding=utf8"; String username = "数据库用户名"; String password = "数据库密码"; // SQL查询语句 String sql = "select id,username,password,name,age from user where username = 'daqiao' and password = '123456'"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { // 1. 加载数据库驱动(MySQL 8.0+使用com.mysql.cj.jdbc.Driver) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 获取数据库连接 conn = DriverManager.getConnection(url, username, password); // 3. 创建PreparedStatement对象 pstmt = conn.prepareStatement(sql); // 4. 执行查询,获取结果集 rs = pstmt.executeQuery(); // 5. 处理结果集 while (rs.next()) { // 创建User对象 User user = new User(); // 设置属性值 user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); // 输出用户信息 System.out.println("查询到用户信息:"); System.out.println("ID: " + user.getId()); System.out.println("用户名: " + user.getUsername()); System.out.println("密码: " + user.getPassword()); System.out.println("姓名: " + user.getName()); System.out.println("年龄: " + user.getAge()); } } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("数据库驱动加载失败"); } catch (SQLException e) { e.printStackTrace(); System.out.println("数据库操作异常"); } finally { // 6. 关闭资源(按ResultSet ->PreparedStatement->Connection的顺序关闭) try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

模板化操作,AI可替代,不需要重复写

3.预编译SQL

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

相关文章:

  • 卡地亚中国官方售后服务中心|官方地址及售后热线权威信息声明(2026年7月更新) - 卡地亚官方售后中心
  • Python 1:介绍与安装
  • 如何快速上手LongCat-2.0:从零开始部署美团超大规模语言模型
  • 2026年AIGC率怎么降?从78%到12%的实战经验分享
  • Limonade部署指南:从开发到生产的完整部署流程
  • G-Helper终极指南:轻量级华硕笔记本性能控制神器,告别臃肿的Armoury Crate
  • 企业级Unity官方下载架构优化:完整的全球资源访问解决方案
  • Qwen2-1.5B_rai_1.7.1_npu_16K生成配置全解析:temperature/top_k参数调优指南
  • C语言学习笔记20260713-格式化输入输出家族汇总
  • 终极指南:如何在AMD MI350平台部署Kimi-K2-Instruct-0905-MXFP4大模型
  • 东南亚多语言商城系统H5开发实战指南
  • xAnalyzer终极指南:掌握x64dbg最强静态代码分析插件的3个核心技巧
  • Qwen2.5_3B_Instruct_rai_1.7.1_npu_4K量化策略详解:AWQ/Group 128/Asymmetric技术深度剖析
  • Ultimate Vocal Remover:5分钟从任何歌曲中提取纯净伴奏的AI神器
  • 通信与计算:信号与系统-基础概念与工程实践
  • 萧邦中国官方售后服务中心|服务热线及完整地址权威信息通知(2026年7月最新) - 萧邦中国官方服务中心
  • Wan2.1-Fun-V1.1-1.3B-Control实战指南:掌握AI视频控制的进阶技巧
  • 5个技巧优化Tmax-27B-MLX-6bit推理速度:从入门到专家级调优
  • 3分钟掌握Termux:Widget:让手机命令行效率提升10倍的必备插件
  • 无电感升压5V芯片和无电感升压3.3V芯片PW5410B电路图
  • Confucius4-TTS-mlx-int8安全与隐私:语音合成系统的数据保护策略
  • 深入解析Mistral-7B-v0.3的Quark量化技术:AWQ与UINT4权重优化实践
  • 3步拯救经典游戏:WidescreenFixesPack宽屏修复终极指南
  • Open Generative AI:开源免费的AI视频制作工具,200+模型打造专业影视级内容
  • 终极指南:如何在10分钟内使用AtlasOS解决Windows网络故障问题
  • MLX-VLM实战:用Ornith-1.0-9B-bf16构建你的第一个多模态AI应用
  • 高级技巧:优化mlx-community/Qwen3.5-2B-OptiQ-4bit推理性能的10个方法
  • GraphRNN核心原理揭秘:深度自回归模型的创新突破
  • 深度解析AtlasOS:Windows优化故障排查实战指南
  • 鸿蒙新特性实战:@ohos.measure 打造文本测量实验室