createStatement参数简要说明
源自:http://riddickbryant.iteye.com/blog/445921
ConnectionName.createStatement(int type,int concurrency)
参数:Type-----决定了返回的语句在执行查询后的结果记录集,其记录指针移动方式有以下三种值:
ResultSet.TYPE_FORWORD_ONLY:结果集记录指针只能向下移动
ResultSet.Type_SCROLL_INSENSITIVE:结果集记录指针可以上下移动,但数据库内容变化时结果集不变
ResultSet.Type_SCROLL_SENSITIVE:结果集记录指针可以上下移动,当数据库内容发生变化后结果集内容同步改变
Concurrency—决定是否可以用结果记录集更新数据库中的表,有以下两种值:
ResultSet._CONCUR_READ_ONLY:结果记录集为只读,不能更新数据库表中的数据;
ResultSet.CONCUR_UPDATABLE:用结果记录集可以更新数据库表中的数据
ResultSet就是结果集,相当于把数据库中的数据存取到本地机器的缓存中。
==============================================================
createStatement参数 和 批处理
源自:http://blog.csdn.net/xxxx1243/archive/2009/02/16/3894901.aspx
【用法:】
1、createStatement();
2、createStatement(int resultSetType, int resultSetConcurrency)
3、createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
【其中,resultSetType可选值是: 】
1、ResultSet.TYPE_FORWARD_ONLY :
在ResultSet中只能先前移动游标,只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响.
2、ResultSet.TYPE_SCROLL_INSENSITIVE :
在ResultSet中可以随心所欲的先前向后移动游标,不会受到其他用户对该数据库所作更改的影响
3、ResultSet.TYPE_SCROLL_SENSITIVE :
在ResultSet中可以随心所欲的先前向后移动游标,这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。
同时ResultSet的值有所改变的时候,它可以得到改变后的最新的值。
【其中,resultSetConcurrency】
(第二个参数默认为CONCUR_READ_ONLY:指定不可以更新 ResultSet
CONCUR_UPDATABLE:指定可以更新 ResultSet)
可选值是:
1、ResultSet.CONCUR_READ_ONLY 在ResultSet中的数据记录是只读的,可以修改
2、ResultSet.CONCUR_UPDATABLE 在ResultSet中的数据记录可以任意修改,然后更新会数据库
【其中,resultSetHoldability可选值是: 】
1、ResultSet.HOLD_CURSORS_OVER_COMMIT 表示修改提交时,不关闭ResultSet的游标
2、ResultSet.CLOSE_CURSORS_AT_COMMIT 表示修改提交时,关闭ResultSet的游标
【demo】
Statement stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs2 = stmt.executeQuery("SELECT * FROM user");
rs2.next();
rs2.updateDate("lastdatetime", new Date(Calendar.getInstance().getTimeInMillis())); rs2.updateRow();
rs2.afterLast();
while(rs2.previous())
{ /**....*/ } rs.beforeFirst();
while(rs2.next())
{ /**....*/ } rs.last();
rs.first();
rs.absolute(5); //游标移动到第5条
rs.absolute(-1); //游标移动到最后一条
rs.relative(-5); //游标向上移动5条
rs.relative(2); //游标向下移动2条
rs.deleteRow(); //删除当前行
rs.last(); //游标移动到最后
rs.updateString("summary", "This is ...");//设置更新的字段值
rs.cancelRowUpdates();//取消刚才输入的更新
rs.getRow();//得到当前行号
rs.moveToInsertRow(); //游标移动到要新增的那条记录上
rs.updateInt("id", 1);
rs.updateString(2, "my name");
rs.insertRow(); //插入新记录
JDBC2.0提供的还有一个功能就是数据库的批量操作:
con.setAutoCommit(false);
Statement stmt3 = con.createStatement();
stmt3.addBatch("insert ....."); //push
stmt3.addBatch("insert ....."); //push
int[] rows = stmt3.executeBatch();
con.commit();
但是有一点要注意,stmt3.executeBatch()他不会自动给你回滚数据操作,当你有5条update语句的时候,如果第三条发生错误,那么将无法自动回滚前两条update语句的影响,所以一定要自己手工进行事务管理。
分享到:
相关推荐
1. 适当设置批处理大小:根据数据库和应用需求调整批处理中SQL语句的数量,过大可能导致内存问题,过小则无法充分利用批处理的优势。 2. 错误处理:如果批处理中某个语句失败,可以捕获BatchUpdateException来获取...
Statement对象支持两种执行模式:同步(默认)和异步(通过addBatch和executeBatch方法实现批处理)。 4. PreparedStatement:是Statement的子类,预编译SQL语句,提供更好的性能和安全性。它允许在SQL语句中使用...
在处理大量数据时,JDBC提供了批处理功能,以提高性能和效率。本文将深入探讨JDBC的高级批处理特性及其优势。 ### 1. 批处理概述 批处理是将多个SQL语句组合在一起,作为一个批次一次性提交给数据库执行,而不是一...
本文将详细讲解如何在Oracle环境中利用批处理文件同时执行多个.sql文件,以及相关的工具和源码应用。 首先,Oracle提供了一种名为SQL*Plus的命令行工具,它是与Oracle数据库交互的主要接口之一,非常适合进行批处理...
使用`PreparedStatement`进行批处理时,可以动态设置参数值,这样既避免了SQL注入的问题,也使得代码更加安全和高效。 ### 四、总结 通过上述示例可以看出,使用JDBC批处理能够显著提高数据处理的速度和效率,特别...
示例代码中的StatementTest类展示了如何使用Statement执行SQL查询,而PrepareStatement类则演示了PreparedStatement的用法,包括预编译SQL和设置参数。 总结来说,Statement适用于执行简单的、不重复或少有变化的...
总的来说,Java通过JDBC驱动程序与SQL Server的交互非常灵活,不仅可以调用存储过程,还能处理各种参数类型,包括输入、输出和输入/输出参数。理解这些概念对于编写高效、健壮的Java数据库应用程序至关重要。
- **JDBC批处理**:对于批量操作,JDBC提供批处理功能,通过`addBatch()`和`executeBatch()`方法,可以一次性执行多条SQL语句。 - **ORM框架**:如Hibernate或MyBatis,它们简化了SQL处理,通过映射Java对象和...
首先,我们需要创建一个Statement对象,然后使用`addBatch()`方法添加多条SQL删除语句到批处理队列,最后调用`executeBatch()`执行所有操作。例如: ```java Statement stmt = conn.createStatement(); stmt....
在本节“MySQL_4_JDBC高级操作和事务1”中,我们将深入探讨JDBC的批处理操作和...通过理解并熟练运用上述JDBC批处理和事务管理的知识,你可以更有效地处理数据库操作,提高应用性能,并确保数据的准确性和一致性。
4. 使用预编译和参数化查询,提升查询速度。 5. 适当调整事务隔离级别,平衡并发性和一致性。 九、异常处理 在JDBC操作中,要正确捕获和处理`SQLException`,确保程序的健壮性。 总结,JDBC作为Java与数据库交互...
总结来说,Java操作Phoenix涉及到的主要知识点有:使用JDBC连接Phoenix、执行SQL查询和DML操作、批处理、事务管理和性能优化。通过熟练掌握这些技能,开发者可以有效地在Java应用程序中集成和利用Phoenix的强大功能...
Statement stmt = conn.createStatement(); for (int i = 0; i ; i++) { String sql = "INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')"; stmt.addBatch(sql); } stmt.executeBatch(); ...
总结,JDBC高级教程涵盖了从基础的数据库连接到复杂的数据操作,包括事务控制、存储过程调用、批处理和性能优化等方面。熟练掌握这些知识点,能帮助Java开发者高效、安全地与各种数据库进行交互。通过阅读《JDBC高级...
2. **创建Statement对象**:`Connection`对象的`createStatement()`方法用于创建`Statement`对象,用于执行SQL语句。`Statement`适用于简单的、不带参数的SQL查询。 3. **预编译SQL(PreparedStatement)**:对于带...
- 调整JDBC参数,如批处理大小、超时设置,以优化性能。 9. **异常处理** 在处理数据库操作时,需捕获并适当地处理SQLException和其他相关的异常,以确保程序的健壮性。 10. **社区与资源** Oracle官方文档和...
在实际应用中,选择使用Statement还是PreparedStatement,主要取决于SQL语句的使用频率和是否存在参数。如果SQL语句只执行一次或者执行频率极低,使用Statement就足够了。但如果我们需要频繁地执行相同的SQL语句,...
7. **批处理**:`addBatch()`和`executeBatch()`方法允许一次发送多个SQL语句,提高效率。 **JDBC使用步骤:** 1. 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` 2. 获取连接:`Connection conn = ...
3. **批处理**: 多个SQL语句可以一起执行,提高效率,如`stmt.addBatch(sql)`和`stmt.executeBatch();` 4. **数据库元数据**: `DatabaseMetaData`对象提供了关于数据库的结构和能力的信息,如获取表信息、列信息等。...
5. **游标和批处理**: `CallableStatement`接口可用于执行存储过程。`ResultSet`支持游标移动,允许前后滚动数据。批处理功能可以一次性发送多条SQL语句,提高效率。 6. **连接池**: 在实际应用中,通常使用连接池...