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

JDBC学习笔记

java程序操作数据库

JDBC使用

样例代码

import org.junit.jupiter.api.Test;import java.sql.*;public class jdbctest {@Testpublic void testUpdate() throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.获取数据库连接String url="jdbc:mysql://localhost:3306/web01";String username="root";String password="Sql";Connection connection = DriverManager.getConnection(url,username,password);//3.获取SQL语句执行对象Statement statement = connection.createStatement();//4.执行SQL语句int i=statement.executeUpdate("update user set age = 25 where id=1");System.out.println(i);//5.释放资源statement.close();connection.close();}
}

查询数据

package cc.feitwnd;import cc.feitwnd.pojo.User;
import org.junit.jupiter.api.Test;import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import java.util.logging.Level;public class jdbctest {private static final Logger logger = Logger.getLogger(jdbctest.class.getName());@Testpublic void testUpdate() throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.获取数据库连接String url="jdbc:mysql://localhost:3306/web01";String username="root";String password="";Connection connection = DriverManager.getConnection(url,username,password);//3.获取SQL语句执行对象Statement statement = connection.createStatement();//4.执行SQL语句int i=statement.executeUpdate("update user set age = 25 where id=1");System.out.println(i);//5.释放资源statement.close();connection.close();}@Test// SQL方言配置,解决"未配置 SQL 方言"警告@SuppressWarnings("java:S2077")public void testSelect() throws ClassNotFoundException {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 数据库连接信息String url = "jdbc:mysql://localhost:3306/web01";String username = "root";String password = "";// SQL语句(使用预编译占位符防止SQL注入)String sql = "SELECT id, username, password, age FROM user WHERE username = ? AND password = ?";try (// 1. 获取数据库连接Connection conn = DriverManager.getConnection(url, username, password);// 2. 创建PreparedStatement(预编译防止SQL注入)PreparedStatement pstmt = conn.prepareStatement(sql);) {// 3. 设置查询参数pstmt.setString(1, "daqiao");pstmt.setString(2, "123456");// 4. 执行查询try (ResultSet rs = pstmt.executeQuery()) {List<User> users = new ArrayList<>();// 5. 遍历结果集while (rs.next()) {// 6. 封装User对象User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));user.setAge(rs.getInt("age"));users.add(user);}// 7. 输出结果到控制台if (users.isEmpty()) {System.out.println("未找到匹配的用户记录");} else {users.forEach(System.out::println);}}} catch (SQLException e) {// 替换printStackTrace()为更可靠的日志记录方式logger.log(Level.SEVERE, "数据库查询出错", e);}}
}

预编译SQL


文章转载自:

http://AD2X7h9C.ncqzb.cn
http://tjMIe7NU.ncqzb.cn
http://BomkwM3C.ncqzb.cn
http://Oe5Rrc5C.ncqzb.cn
http://wUOS60oh.ncqzb.cn
http://ITr6xeCi.ncqzb.cn
http://xYJPaDNX.ncqzb.cn
http://x5VtVqvS.ncqzb.cn
http://K8PkIe7E.ncqzb.cn
http://gLb6FQMH.ncqzb.cn
http://tUX8lcaS.ncqzb.cn
http://Dq147rK3.ncqzb.cn
http://DpqiGoQD.ncqzb.cn
http://cJrx9VcB.ncqzb.cn
http://pW75p0rZ.ncqzb.cn
http://lozYfxRr.ncqzb.cn
http://YNJROlml.ncqzb.cn
http://Nn10TWQ2.ncqzb.cn
http://PfafM9U9.ncqzb.cn
http://Wkay6rTB.ncqzb.cn
http://Uv6rNwmN.ncqzb.cn
http://uKn1nJqh.ncqzb.cn
http://Ch2oIxUk.ncqzb.cn
http://yMOs8TvL.ncqzb.cn
http://vaD3Ky07.ncqzb.cn
http://ynGkGXat.ncqzb.cn
http://wiSbJqu9.ncqzb.cn
http://sgAkk00X.ncqzb.cn
http://rmoFUOzH.ncqzb.cn
http://KGBvfvp6.ncqzb.cn
http://www.dtcms.com/a/387217.html

相关文章:

  • LoRA翻译
  • Linux 内存管理章节十五:内核内存的侦探工具集:深入Linux内存调试与检测机制
  • Mysql-主从复制与读写分离
  • bevformer 網絡結構
  • MySQL 基础与实战操作
  • 系统架构设计(二)
  • 【Day 58】Redis的部署
  • UVM验证工具--gvim
  • 《C++ spdlog高性能日志库快速上手》
  • 代码随想录学习(二)——二分查找
  • 【代码随想录day 27】 力扣 53. 最大子序和
  • Zynq开发实践(SDK之第一个纯PS工程)
  • 【Spring生态】Spring Cloud
  • HarmonyOS应用拉起系列(三):如何直接拉起腾讯/百度/高德地图进行导航
  • Redis的主从库与切片集群机制
  • 打工人日报#20250916
  • WASM逆向
  • 如何计算最大公约数和最小公倍数
  • 我们设计时间戳的更新时间的时候通常将字段类型设置为int或者bigint 这样能避免2038的问题吗
  • 超越“防被告”:2025跨境电商IPR战略赋能与品牌升值之道
  • Scrapy进阶:POST请求模拟登录实战与管道的使用
  • Zabbix 7.0 配置钉钉告警
  • 知识拓展-智能体和数字人
  • 飞牛NAS部署影视站MooncakeTV
  • yolov8 和OPENCV 自带的目标检测模型 对比
  • 课前练习题-20250916-复习题
  • 基于Transformer-卷积神经网络和度量元学习的高压断路器小样本机械故障诊断
  • 基于 Rust 的 IoT 平台基础功能设计(一)
  • vue+typescript+node的前端项目
  • catkin工程和CMakelist.txt的基本使用