MySQL——PreparedStatement对象

PreparedStatement可以防止SQL注入,效率更高。

1. 增

public class TestInsert {public static void main(String[] args) throws SQLException {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = jdbcUtils.getConnection();// 区别// 使用问号占位符代替参数String sql = "INSERT INTO users(id,`NAME`,`PASSWORD`,`email`,`birthday`) values(?,?,?,?,?)";ps = conn.prepareStatement(sql);  // 预编译SQl,先写sql,然后不执行// 手动给参数赋值ps.setInt(1,5);ps.setString(2,"haha");ps.setString(3,"55555");ps.setString(4,"5555@qq.com");// 注意点:sql.Date:数据库用      util.Date:Java用    Date().getTime():获得时间戳   java.sql.Date():转换ps.setDate(5, new java.sql.Date(new Date().getTime()));// 执行int i = ps.executeUpdate();if (i>0){System.out.println("插入成功!");}} catch (SQLException e) {throw new RuntimeException(e);}finally {jdbcUtils.release(conn,ps,null);}}
}

2. 删

public class TestDelete {public static void main(String[] args) throws SQLException {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = jdbcUtils.getConnection();// 区别// 使用问号占位符代替参数String sql = "delete from users where id = ?";ps = conn.prepareStatement(sql);  // 预编译SQl,先写sql,然后不执行// 手动给参数赋值ps.setInt(1,5);// 执行int i = ps.executeUpdate();if (i>0){System.out.println("删除成功!");}} catch (SQLException e) {throw new RuntimeException(e);}finally {jdbcUtils.release(conn,ps,null);}}
}

3. 改

public class TestUpdate {public static void main(String[] args) throws SQLException {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = jdbcUtils.getConnection();// 区别// 使用问号占位符代替参数String sql = "update users set `NAME`=? where id=?";ps = conn.prepareStatement(sql);  // 预编译SQl,先写sql,然后不执行// 手动给参数赋值ps.setString(1,"hahaha");ps.setInt(2,5);// 执行int i = ps.executeUpdate();if (i>0){System.out.println("修改成功!");}} catch (SQLException e) {throw new RuntimeException(e);}finally {jdbcUtils.release(conn,ps,null);}}
}

4. 查

public class TestSelect {public static void main(String[] args) throws SQLException {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = jdbcUtils.getConnection();String sql = "select * from users where id=?";  // 编写SQLps = conn.prepareStatement(sql);  // 预编译ps.setInt(1,4);  // 传递参数rs = ps.executeQuery();  // 执行if (rs.next()){System.out.println(rs.getString("NAME"));}} catch (SQLException e) {throw new RuntimeException(e);}finally {jdbcUtils.release(conn,ps,rs);}}
}

5. 防止SQL注入

public class 防止SQL注入 {public static void main(String[] args) throws SQLException {login("chenyang8","123456");  //正常登录//login(" ' 'or 1=1","123456");  // 技巧}// 登录业务public static void login(String username, String password) throws SQLException {Connection conn = null;PreparedStatement st = null;ResultSet rs = null;try {conn = jdbcUtils.getConnection();// PreparedStatement 防止SQl注入的本质,把传递进来的参数当作字符// 假设其中存在转义字符,比如说 ' 会被直接转义String sql = "select * from users where `NAME`=? and `PASSWORD`=?";st = conn.prepareStatement(sql);st.setString(1,username);st.setString(2,password);rs = st.executeQuery();  //查询完毕会返回一个结果集while (rs.next()){System.out.println(rs.getString("NAME"));System.out.println(rs.getString("PASSWORD"));}} catch (SQLException e) {throw new RuntimeException(e);}finally {jdbcUtils.release(conn,st,rs);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

矩阵分析与应用1-矩阵代数基础

矩阵分析与应用1-矩阵代数基础 1 矩阵的基本运算2 矩阵的初等变换3 向量空间、线性映射与Hilbert空间4 内积与范数5 随机向量6 矩阵的性能指标7 逆矩阵与伪逆矩阵8 Moore-Penrose逆矩阵9 矩阵的直和与Hadamard积10 Kronecker积与Khatri-Rao积11 向量化与矩阵化12 稀疏表示与压缩…

金丝键合强度测试仪试验条件要求:键合拉脱/引线拉力/剪切力等

金丝键合强度测试仪是测量引线键合强度,评估键合强度分布或测定键合强度是否符合有关的订购文件的要求。键合强度试验机可应用于采用低温焊、热压焊、超声焊或有关技术键合的、具有内引线的器件封装内部的引线-芯片键合、引线-基板键合或内引线一封装引线键合&#…

华为机试HJ23删除字符串中出现次数最少的字符

华为机试HJ23删除字符串中出现次数最少的字符 题目: 实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 想法&…

第三方商城对接重构(HF202407)

文章目录 项目背景一、模块范围二、问题方案1. 商品模块整体来说这块对接的不是太顺利,梳理了几条大概的思路: 2. 订单模块3. 售后4. 发票5. 结算单 经验总结 项目背景 作为供应商入围第三方商城成功,然后运营了一段时间,第三方通…

PostgreSQL和Mysql的对比

PostgreSQL 是一种功能强大、开源的对象关系型数据库管理系统,广泛用于企业级应用和复杂数据查询。以下是一些关于 PostgreSQL 的基本介绍及其主要特性: 基本介绍 开源和社区支持:PostgreSQL 是一个开源项目,有一个活跃的社区支…

【vue2】记录mounted里面某三个接口调完之后才能执行其他方法的写法

背景 vue2,异步操作并行运行 需求 某个页面现时需要一些接口请求回来的枚举值作为查询条件可供选择,然后将这些查询条件作为入参,请求列表数据。这就造成了我需要先调用枚举值接口,等枚举值接口调用完了,再调查询接…

Docker部署Seata与Nacos整合

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Docker部署Seata与Nacos整合 Docker 部署 Seata 与 Nacos 整合 运行所使用的 demo项目地址 …

提升系统稳定性:熔断、降级和限流策略详解

文章目录 前言一、熔断(Circuit Breaker)二、降级(Degradation)三、限流(Rate Limiting)四、应用案例五、小结推荐阅读 前言 随着互联网业务的快速发展,系统稳定性和高可用性成为现代分布式系统…

RedHat9 | Zabbix-Server监控服务部署

系统版本以及软件版本 使用的系统版本: Red Hat Enterprise Linux release 9.2 软件版本: zabbix-release-7.0-3.el9.noarchzabbix-web-7.0.0-release1.el9.noarchzabbix-web-mysql-7.0.0-release1.el9.noarchzabbix-web-deps-7.0.0-release1.el9.noar…

路径规划之基于二次规划的路径平滑Matlab代码

参考: 自动驾驶决策规划算法第二章第二节(上) 参考线模块_哔哩哔哩_bilibili 自动驾驶决策规划算法第二章第二节(下) 参考线代码实践_哔哩哔哩_bilibili QP函数,二次规划的逻辑 function [smooth_path_x,smooth_path_y] QP(path_x, path_y, w_cost_s…

STM32嵌入式工业机器人控制系统教程

目录 引言环境准备工业机器人控制系统基础代码实现:实现工业机器人控制系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 运动控制系统实现 4.4 用户界面与数据可视化应用场景:工业自动化与优化问题解决方案与优化收尾与总结 1. 引言 工业机器人控制系统…

element表格高度撑开div滚动失效解决方案

描述&#xff1a;当显示区域小于表格列表显示内容时 列表完全撑开表格 无法触发el-table组件的滚动事件 解决&#xff1a;包裹表格的div&#xff0c;加上display: flex;flex-direction: column;即可 <template><div class"table-wrap table-scrollable"&g…

Bahdanau 注意力中上下文变量 ′的公式解释

公式 (10.4.1) 是 Bahdanau 注意力模型中的一个关键公式&#xff0c;用于计算在解码时间步 ( t’ ) 的上下文变量 (\mathbf{c}_{t’})&#xff1a; [ \mathbf{c}{t’} \sum{t1}^T \alpha(\mathbf{s}_{t’ - 1}, \mathbf{h}_t) \mathbf{h}_t ] 下面对公式进行详细解释&#x…

【pytorch18】Logistic Regression

回忆线性回归 for continuous:y xwbfor probability output:yσ(xwb) σ:sigmoid or logistic 线性回归是简单的线性模型&#xff0c;输入是x&#xff0c;网络参数是w和b&#xff0c;输出是连续的y的值 如何把它转化为分类问题?加了sigmoid函数&#xff0c;输出的值不再是…

开闭原则的简单总结

简介 开闭原则指的是软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着: 对扩展开放:当需要新增功能时,可以通过添加新的代码来实现,而不是修改现有代码。对修改关闭:已经存在的、经过测试的代码不应该被修改。 优缺点 优点: 提高代码的可维护性和复用性降低…

java-HashSet 源码分析 1

## 深入分析 Java 中的 HashSet 源码 HashSet 是 Java 集合框架中的一个重要类&#xff0c;它基于哈希表实现&#xff0c;用于存储不重复的元素。HashSet 允许 null 元素&#xff0c;并且不保证元素的顺序。本文将详细分析 HashSet 的源码&#xff0c;包括其数据结构、构造方法…

2024阿里国际春招笔试

第一题 0 解题思路&#xff1a; 数据范围很大&#xff0c;肯定得找规律。 当n1时&#xff0c;0&#xff0c;1&#xff0c;结果为0 当n2时&#xff0c;00&#xff0c;01&#xff0c;10&#xff0c;11&#xff0c;结果为1 当n3时&#xff0c;000&#xff0c;001&#xff0c;010&a…

AWS IoT Core 权限管理指南

AWS IoT Core 是一项托管云服务,允许连接设备安全地与云应用程序和其他设备进行交互。有效管理 IoT Core 的权限对于确保设备和数据的安全至关重要。本文将详细介绍 IoT Core 的常用权限分类,并提供相应的 JSON 策略示例。 1. 概述 IoT Core 的权限可以大致分为以下几类: …

【算法笔记自学】第 3 章 入门篇(1)——入门模拟

3.1简单模拟 自己写的题解 #include <stdio.h> #include <stdlib.h> int main() {int N;int num0;scanf("%d",&N);while(N!1){if(N%20){NN/2;}else{N(3*N1)/2;}num;}printf("%d",num);system("pause"); // 防止运行后自动退出&…

Linux网络管理

一、linux网络管理 1.获取计算机的网络信息 基本语法&#xff1a; #ifconfig #ip address &#xff08;ip a&#xff09; 解析&#xff1a; ens33&#xff1a;默认网卡 lo&#xff1a;环回网卡&#xff0c;127.0.0.1作为固定ip代表本机 virbr0&#xff1a;虚拟网络接口&…