`
desert3
  • 浏览: 2175505 次
  • 性别: 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();
分享到:
评论

相关推荐

    Spring-JDBC,带一小例子

    10. **PreparedStatements**: 使用PreparedStatement可以防止SQL注入,同时通过预编译提高性能。Spring-JDBC自动处理PreparedStatement的参数绑定和结果集处理。 通过以上特性,Spring-JDBC降低了JDBC编程的复杂性...

    Oracle数据库添加 更新 游标 过程 Java Project

    在实际开发中,还需要考虑性能优化,如批处理(batch processing)和预编译语句(prepared statements),以提高数据库操作的效率。 总结来说,这个Java项目的核心是通过Oracle数据库的添加、更新操作以及使用游标...

    MySL JDBC驱动

    MySQL JDBC驱动还支持多种特性,如批处理(Batch Processing)、事务控制(Transactions)、预编译的SQL语句(Prepared Statements)、存储过程(Stored Procedures)以及数据库元数据(Metadata)的获取。...

    mysql-connector-java-5.1.12.rar 源代码

    5. Batch 处理:批量处理任务可以通过 Java 运行批处理 SQL 脚本,Connector/J 提供了相应的支持。 通过研究 MySQL Connector/J 的源代码,开发者可以了解其工作原理,优化性能,甚至自定义功能以满足特定需求。...

    Oracle JDBC驱动ojdbc6-11.2.0.2、ojdbc6-11.2.0.4

    在实际应用中,为了优化性能,开发者还可以利用Oracle JDBC驱动的特性,如批处理(batch processing)、预编译的SQL语句(prepared statements)和连接池(connection pooling),以提高数据处理效率和减少数据库...

    sybase_jdbc_驱动

    6. **性能优化**:jConnect-5_5可能包含了一些性能优化特性,如批处理(batch processing)、预编译的语句(prepared statements)以及连接池(connection pooling),这些都可以提高应用程序的效率。 7. **错误...

    mysql-connector-java-5.1.28.zip

    MySQL Connector/J 5.1.28还包含了一些高级特性,如支持prepared statements(预编译SQL语句),batch updates(批量更新),以及连接池集成。此外,它还具备错误处理和异常抛出机制,以帮助开发者更好地调试和处理...

    jdbc8.jar-oracle12

    Oracle JDBC驱动提供了许多性能优化选项,如批处理(batch processing)、预编译的语句(prepared statements)和连接池(connection pooling)。通过合理利用这些特性,可以显著提升应用的性能和可伸缩性。 总之,...

    hibernate.properties

    #hibernate.c3p0.max_statements 100 #hibernate.c3p0.idle_test_period 3000 #hibernate.c3p0.acquire_increment 2 #hibernate.c3p0.validate false ############################## ### Proxool Connection ...

Global site tag (gtag.js) - Google Analytics