PreparedStatement

PreparedStatement详细用法 立即下载

PreparedStatement

简单概述:

PreparedStatement继承自Statement,但比Statement功能强大的多。

优点:

1、PreparedStatement是预编译的,比Statement速度快。

当同时要执行多条相同结构sql语句时使用,这时可以用setObject(),addBatch()和executeBatch()这几个函数。

2、可以防止sql注入。

对JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在插入时改变查询的逻辑结构.

举例分析:

例一: 说明PreparedStatement速度快 插入两条语句只需编译一次,而Statement则需要编译两次。

package com;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class TestPreparedStatement {
public static void main(String[] args) {
Connection con = null;
PreparedStatement pst = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=userManager";
con = DriverManager.getConnection(url, "as", "");

String sql = "insert into myuser (userName,pwd) values (? , ?)";
pst = con.prepareStatement(sql);

pst.setString(1, "张三"); //也可以用setObject()
pst.setString(2, "123");
pst.addBatch();

pst.setString(1, "李四");
pst.setString(2, "456");
pst.addBatch();

pst.executeBatch();

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (pst != null) {
pst.close();
pst = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

例二:说明PreparedStatement可以防止sql注入。

System.out.println("请输入用户名:");
name = input.nextLine();
System.out.println("请输入密码:");
pwd = input.nextLine();

String sql = "select * from myuser where userName = '" + name + "' and pwd = '" + pwd + "'";

Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
if (rs.next()) {
System.out.println("登陆成功!");
} else {
System.out.println("登陆失败!");
}

当输入用户名为任意,密码为:123' or '1' = '1时,则都可以登录成功。

System.out.println("请输入用户名:");
name = input.nextLine();
System.out.println("请输入密码:");
pwd = input.nextLine();

String sql = "select * from myuser where userName = ? and pwd = ? ";
PreparedStatement pst = con.prepareStatement(sql);

pst.setString(1, name);
pst.setString(2, pwd);
ResultSet rs = pst.executeQuery();
System.out.println(sql);
if (rs.next()) {
System.out.println("登陆成功!");
} else {
System.out.println("登陆失败!");
}

当输入用户名为任意,密码为:123' or '1' = '1时,则都可以登录失败。防止了sql注入

LMX2594时钟配置实战:TICS PRO从入门到寄存器导出 本文详细介绍了LMX2594时钟芯片的配置实战,重点讲解了如何使用TICS PRO调试软件简化复杂的寄存器设置过程。通过实例演示从基础频率配置到高级参数调优的全流程,并分享SPI写入的嵌入式系统移植技巧,帮助工程师快速掌握高性能时钟芯片的配置方法。 阅读详情

相关推荐

LVGL移植教程(正点原子)

学习正点原子LVGL移植教程,根据视频教程写的博客

papalila的博客 943

JDBC之——PreparedStatement实现对数据库的增删改操作

一、PreparedStatement接口引入 PreparedStatement是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是现在数据表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,二十之后再进行设置。 (以后开发一部用PreparedStatement,不用Statement) 二、使用...

weixin_39941298的博客 5470

保姆级教程:用Docker快速部署mpromonet/webrtc-streamer实现WebRTC直播(附常见问题解决)

本文提供了一份详细的Docker部署mpromonet/webrtc-streamer的实战指南,帮助用户快速搭建WebRTC直播服务。内容涵盖从环境准备、基础部署到进阶配置与性能调优的全过程,并针对容器网络、视频流配置、跨网访问等常见问题提供了解决方案,旨在实现低延迟的流媒体传输。

dell8的博客 177

PreparedStatement的使用

PreparedStatement介绍 可以通过调用 Connection 对象的 prepareStatement(String sql) 方法获取 PreparedStatement 对象 PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句 PreparedStatement 对象所代表的 SQL 语句中的参数用问号(?)来表示(?在SQL中表示占位符),调用 PreparedStatement 对象的 setXxx() 方法来设置这些参数.

mofeigege的博客 1万+

SAP PI实战:5分钟搞定REST适配器同步接口配置(含Postman测试技巧)

本文详细介绍了如何在SAP PI中快速配置REST适配器同步接口,包括ESR设计、集成流配置及Postman测试技巧。通过实战步骤和关键参数设置,帮助开发者高效实现系统集成,特别适合需要实时数据交互的业务场景。

weixin_33738555的博客 485

第五节 Amesim《直动型溢流阀HCD建模》HCD5 学习资料

利用HCD原则创建直动型溢流阀的界面。这可能包括图形化表示直动型溢流阀的工作原理、操作方式和调节方法。这样的界面应当直观且易于理解,使用户能够轻松了解阀门的功能和使用方法。

m0_58052642的博客 1330

Preparedstatement的使用

如何使用PreparedStament以及PreparedStatment和Statement的区别

Garson的博客 988

嵌入式GUI显示驱动配置实战:从emWin硬件接口到SPI屏驱动优化

在嵌入式系统开发中,显示驱动是连接GUI库与物理屏幕的核心底层模块,其本质是CPU与显示控制器之间的数据“翻译”与“传输”系统。其工作原理是通过实现特定的硬件抽象层接口,将GUI生成的图形数据转换为屏幕能识别的时序和协议。这项技术的核心价值在于,它允许开发者在资源受限的MCU上,通过适配不同的硬件接口,以最小的硬件开销实现稳定的图形输出。其典型应用场景包括智能家居面板、工业HMI、可穿戴设备等嵌入式图形界面开发。本文将深入解析emWin GUI库的驱动框架,重点探讨如何针对SPI、I2C等串行接口进行高效的

weixin_29159711的博客 342

PreparedStatement的用法

 一.PreparedStatement 概述在数据库的操作过程中,PreparedStatement 对象是一个很不起眼但是记为重要的接口对象,它继承 于Statement,并与之在两方面有所不同:1)PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。

Ckary的博客 11万+

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

qq_44703886的博客 3621

ANSYS-CFX,计算时报错,内存参数报错,return code 1【终极解决方案】

ANSYS-CFX,计算时报错,内存参数报错,return code 1【终极解决方案】 在CFX计算时经常会遇到内存不足的错误报告,有的算例网格并不多也会出现这样的问题,本文就最近遇到的内存错误问题以及解决方法进行简单的总结,以供大家参考。 1 CFX-Solver Manager内存种类 打开Define Run,面板上的Partitioner、Solver、Interpolator选项中分别都有关于内存的设置选项。当出现内存不足错误时,应该设置哪一个选项的内存参数,要看是哪一部分的内存不足。 2 C

深海民工CFDer 3万+

PreparedStatement和Statement的区别

PreparedStatement 和 Statement 的区别: 1.PreparedStatement在使用时只需要编译一次,就可以运行多次,Statement每运行一次就编译一次,所以PreparedStatement的效率更高 2.PreparedStatement需要的sql语句为用?(占位符)来替换值,Statement所需要的sql语句为字符串拼接 3.PreparedStatement解决了sql注入的问题,Statement没有解决,因为PreparedStat.

m0_60418397的博客 6799

使用Python实现卷积神经网络(CNN)

卷积神经网络是一种专门用于处理具有网格状拓扑结构数据(如图像、声音)的深度学习模型。CNN的核心组件是卷积层和池化层,它们能够有效地从图像中提取特征并实现空间不变性,使得模型能够对图像中的物体进行识别和分类。我们定义一个简单的卷积神经网络模型,包括卷积层、池化层和全连接层。return x# 创建模型实例我们选择交叉熵损失函数作为分类任务的损失函数,并使用随机梯度下降(SGD)作为优化器。

Echo_Wish 4489

PreparedStatement和statement的区别

一、PreparedStatement概述    PreparedStatement是statement的子类,它的实例对象可以通过调用Connection.preparedStatement()方法来获得,相对于Statement对象,PreparedStatement可以防止SQL注入。   另外Statement会使得数据库频繁编译SQL,有可能会造成数据库缓冲区溢出。PreparedSta...

xupt_rl的博客 5696

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PreparedStatement对象

5.PreparedStatement: 执行sql的对象,但是功能更强大 1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 1.输入用户随便,输入密码:a’ or ‘a’ = ‘a 2.sql: select * from user where username = ‘sadfgds’ and password = ‘a’ or ‘a’ = ‘a’ 2.解决sql注入问题:使用PreparedStatement对象来解决 3.预编译的SQL:参数

qq_44336097的博客 765

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

PreparedStatement的解释和优势,PreparedStatement和Statement的比较

PreparedStatement的解释:   PreparedStatement是java.sql包下的一个接口,用来执行sql语句查询,通过调用conn.prepareStatement(sql)方法可以获得PreparedStatement对象。   从上图可知PreparedStatement继承于Statement,但PreparedStatement与Statement有很大不同。 ...

qq_37020594的博客 2296

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

sql语句中PreparedStatement的用法

一.PreparedStatement 概述 在数据库的操作过程中,PreparedStatement 对象是一个很不起眼但是记为重要的接口对象,它继承 于Statement,并与之在两方面有所不同: 1)PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。I

即使没有翅膀,心也要飞翔! 7194

mysql preparedstatement_关于PreparedStatement你知道多少

序言 对应PreparedStatement相信大家都很熟悉,那么为什么要用PreparedStatement呢?也许你会回答PreparedStatement为预处理语句,可以提高数据库执行效率。也许还会回答用PreparedStatement可以防止SQL注入。那么再问下,你觉得你对PreparedStatement有足够序言对应PreparedStatement相信大家都很熟悉,那么为什么要...

weixin_32955207的博客 510

preparedStatement和Statement区别

原文:https://blog.csdn.net/xuebing1995/article/details/72235380    一、概念 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, Prep...

minose的博客 2万+

PreparedStatement使用

1. PreparedStatement插入数据SQL完成 @Test public void testInsert() { User user = new User(10, "逗比匿名君", "123456"); Connection connection = null; PreparedStatement preparedStatement = null; try { //...

weixin_42297061的博客 579

PreparedStatement实现原理

使用PreparedStatement实现CRUD操作 3.1 操作和访问数据库 数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果。其实一个数据库连接就是一个Socket连接。 在 java.sql 包中有 3 个接口分别定义了对数据库的调用的不同方式: Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。 PrepatedStatement:SQL 语句被预编译并存储在此对象中,可以使用此对象多次高效地执行该语句。 CallableStat

杨海吉 917
上一篇: VirtualBox复制虚拟机
下一篇: 文件锁
worldzhy
博客等级 码龄16年 156粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值