`
desert3
  • 浏览: 2159084 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Statements & PreparedStatement & sql注入 & batch批处理

    博客分类:
  • Java
 
阅读更多
Statement是PreparedStatement的父接口,不进行预编译操作。
PreparedStatement可以实现Statement的所有功能,但是之所以叫它预编译指令,是因为在创建它的一个对象时可以给定具有一定格式的SQL字符串,然后用它的setXXX方法给指定的SQL语句以填空的方式赋值,具有这样的特性后,它在多次执行一条固定格式的字符串时就很方便,也更效率.不像Statement那样每次执行都要先编译字符串在执行SQL了.

PreparedStatement能防止sql注入、Statements不能的原因:它们实现机制不同
Statement是程序中的sql和外部传入的数据拼接成一个完整的sql语句,然后发给数据库执行
PreparedStatement是把程序中的sql语句进行预编译,然后在执行过程中,外部传入的值只是作为数据进行处理,不会再对sql语句进行解析,因此避免了sql注入问题.

批处理:
1,多个sql语句一起执行
String delSql = "Begin DELETE tbl1 WHERE id=?;DELETE tbl2 WHERE id=?;End;"
pstmt = connection.prepareStatement(sql);
param = 1;
pstmt.setLong(param++, id);
pstmt.setLong(param++, id);

2,同一sql,多条数据同时插入
String insertSql = "insert into tbl1 (id, name) values (?, ?)";
pstmt = connection.prepareStatement(insertSql );
pstmt.setLong(1, id);
pstmt.setLong(2, name);
pstmt.addBatch();

pstmt.setLong(1, id1);
pstmt.setLong(2, name1);
pstmt.addBatch();

pstmt.setLong(1, id2);
pstmt.setLong(2, name2);
pstmt.addBatch();

// 最后使用executeBatch一把提交id,name ; id1,name1; id2,name2的数据
pstmt.executeBatch();
分享到:
评论

相关推荐

    oracle 中使用批处理文件,同时执行,多个.sql文件。

    在Oracle数据库管理中,批处理是一项重要的操作,它允许管理员或开发者一次性执行多个SQL脚本,从而提高工作效率。本文将详细讲解如何在Oracle环境中利用批处理文件同时执行多个.sql文件,以及相关的工具和源码应用...

    SQL 数据库 注入攻击的种类和防范手段

    1. **使用预编译语句(Prepared Statements)**:预编译语句能够有效防止SQL注入,因为它们将SQL语句和参数分开处理,确保了输入数据不会被解释为SQL代码的一部分。例如,在Java中使用JDBC API的`PreparedStatement`...

    SQL注入攻击与防御

    SQL注入攻击是一种针对数据库的攻击技术,其目的在于通过在应用程序的输入界面插入恶意的SQL代码,以获取数据库的敏感信息、控制数据库操作甚至对整个系统造成破坏。SQL注入攻击的危害极大,可以轻松突破传统的身份...

    SQL注入源码

    1. 参数化查询/预编译语句:使用预编译的SQL语句,如PHP的PDO或MySQLi的 prepared statements,可以防止SQL注入。 2. 输入验证:对用户输入进行严格的检查,确保其符合预期格式。 3. 最小权限原则:数据库连接应使用...

    php防SQL注入的一个类.zip

    在IT行业中,SQL注入是一种常见的安全威胁,攻击者通过输入恶意的SQL代码,欺骗数据库执行非预期的操作,从而获取敏感信息或破坏数据。为了解决这个问题,PHP开发者通常会使用各种方法来防止SQL注入,其中之一就是...

    SQL注入分析与防范策略.pdf

    2.prepared statements:使用prepared statements,可以防止SQL注入攻击。 3. 数据加密:对敏感信息进行加密,防止攻击者获取敏感信息。 4. 访问控制:对数据库的访问权限进行严格的控制,防止攻击者访问敏感信息。 ...

    PHP中全面阻止SQL注入式攻击

    SQL注入是指攻击者通过将恶意SQL代码插入到应用程序的输入字段中,从而控制数据库的行为。本文将详细介绍如何在PHP中有效地预防和阻止SQL注入攻击。 #### SQL注入的基础概念 SQL注入是一种通过插入恶意SQL语句来...

    SQL注入Bypass安全狗4.0.pdf

    1. 使用prepared statements:使用prepared statements可以防止SQL注入攻击,因为攻击者无法修改SQL语句。 2. 输入验证:对用户输入进行验证,可以防止攻击者输入恶意数据。 3. 输出编码:对输出结果进行编码,可以...

    三步堵死SQL注入漏洞

    ### 三步堵死SQL注入漏洞:深度解析与防范策略 在互联网技术飞速发展的今天,网站和应用程序的安全性成为了不容忽视的关键问题。其中,SQL注入(SQL Injection)作为最常见的安全漏洞之一,对数据安全构成了巨大...

    预加载防止sql注入

    为了防止这种情况发生,开发者通常会采用预加载(Prepared Statements)技术,这就是“预加载防止SQL注入”的核心概念。本文将深入探讨预加载的工作原理、优势以及如何在实际应用中使用。 预加载,也称为参数化查询...

    SQL注入 SQL Injection

    SQL注入是一种常见的网络攻击技术,攻击者通过在Web应用的SQL命令中插入恶意SQL代码,让其在数据库中执行,从而达到获取数据库信息、篡改数据库数据、控制服务器的目的。由于SQL注入攻击的隐蔽性强,危害巨大,因此...

    SQLInner防止SQL注入式攻击源码

    1. **预编译语句(Prepared Statements)**:在大多数数据库系统中,如MySQL、PostgreSQL和SQL Server,预编译语句允许开发者将动态参数与SQL语句分离。这样,即使用户输入了恶意SQL代码,也只会被视为参数,而不会...

    PHP网站设计中SQL注入的安全防御.pdf

    3. PHP 网站设计中的 SQL 注入防御:讨论在 PHP 网站设计中如何防御 SQL 注入,包括使用prepared statements、参数化查询、输入验证等。 通过本文的讨论,我们可以了解 SQL 注入的原理和危害,并掌握防御 SQL 注入...

    SQL注入漏洞演示源代码

    - 使用预编译的SQL语句(如PHP的PDO或MySQLi的 prepared statements),将参数与SQL语句分离,减少注入风险。 - 对用户输入进行严格的验证和过滤,避免特殊字符。 - 使用存储过程,限制直接SQL执行。 - 最小权限...

    HANA SQLStatements ALL

    标题 "HANA SQLStatements ALL" 指的是 SAP HANA 数据库系统中的 SQL 语句大全,这通常涵盖了用于各种报告的 SQL 查询和操作。在 SAP HANA 中,SQL(结构化查询语言)是用于管理和处理数据库的标准语言,它允许用户...

    sql注入是一种代码注入技术.docx

    ### SQL注入概述 SQL注入(SQL Injection)是一种常见的网络安全攻击方式,主要针对使用结构化查询语言(Structured Query Language,简称SQL)的数据库管理系统。通过在Web应用或其他软件系统的输入框中插入恶意...

    第十九节 宽字节SQL注入-01

    宽字节SQL注入基础知识点总结 宽字节SQL注入是一种...为了避免这种攻击,我们需要对数据库的安全机制进行加强,例如使用prepared statements来防止SQL注入攻击,并且需要严格地验证用户输入,避免恶意代码的inject。

Global site tag (gtag.js) - Google Analytics