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();
分享到:
相关推荐
10. **PreparedStatements**: 使用PreparedStatement可以防止SQL注入,同时通过预编译提高性能。Spring-JDBC自动处理PreparedStatement的参数绑定和结果集处理。 通过以上特性,Spring-JDBC降低了JDBC编程的复杂性...
在实际开发中,还需要考虑性能优化,如批处理(batch processing)和预编译语句(prepared statements),以提高数据库操作的效率。 总结来说,这个Java项目的核心是通过Oracle数据库的添加、更新操作以及使用游标...
MySQL JDBC驱动还支持多种特性,如批处理(Batch Processing)、事务控制(Transactions)、预编译的SQL语句(Prepared Statements)、存储过程(Stored Procedures)以及数据库元数据(Metadata)的获取。...
5. Batch 处理:批量处理任务可以通过 Java 运行批处理 SQL 脚本,Connector/J 提供了相应的支持。 通过研究 MySQL Connector/J 的源代码,开发者可以了解其工作原理,优化性能,甚至自定义功能以满足特定需求。...
在实际应用中,为了优化性能,开发者还可以利用Oracle JDBC驱动的特性,如批处理(batch processing)、预编译的SQL语句(prepared statements)和连接池(connection pooling),以提高数据处理效率和减少数据库...
6. **性能优化**:jConnect-5_5可能包含了一些性能优化特性,如批处理(batch processing)、预编译的语句(prepared statements)以及连接池(connection pooling),这些都可以提高应用程序的效率。 7. **错误...
MySQL Connector/J 5.1.28还包含了一些高级特性,如支持prepared statements(预编译SQL语句),batch updates(批量更新),以及连接池集成。此外,它还具备错误处理和异常抛出机制,以帮助开发者更好地调试和处理...
Oracle JDBC驱动提供了许多性能优化选项,如批处理(batch processing)、预编译的语句(prepared statements)和连接池(connection pooling)。通过合理利用这些特性,可以显著提升应用的性能和可伸缩性。 总之,...
#hibernate.c3p0.max_statements 100 #hibernate.c3p0.idle_test_period 3000 #hibernate.c3p0.acquire_increment 2 #hibernate.c3p0.validate false ############################## ### Proxool Connection ...