`
volunteer521
  • 浏览: 205873 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】createStatement参数 和 批处理

阅读更多

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语句的影响,所以一定要自己手工进行事务管理。

 

分享到:
评论

相关推荐

    使用JDBC的批处理功能

    1. 适当设置批处理大小:根据数据库和应用需求调整批处理中SQL语句的数量,过大可能导致内存问题,过小则无法充分利用批处理的优势。 2. 错误处理:如果批处理中某个语句失败,可以捕获BatchUpdateException来获取...

    JDBC数据库操作值MySQL批处理操作

    Statement对象支持两种执行模式:同步(默认)和异步(通过addBatch和executeBatch方法实现批处理)。 4. PreparedStatement:是Statement的子类,预编译SQL语句,提供更好的性能和安全性。它允许在SQL语句中使用...

    JDBC高级批处理

    在处理大量数据时,JDBC提供了批处理功能,以提高性能和效率。本文将深入探讨JDBC的高级批处理特性及其优势。 ### 1. 批处理概述 批处理是将多个SQL语句组合在一起,作为一个批次一次性提交给数据库执行,而不是一...

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

    本文将详细讲解如何在Oracle环境中利用批处理文件同时执行多个.sql文件,以及相关的工具和源码应用。 首先,Oracle提供了一种名为SQL*Plus的命令行工具,它是与Oracle数据库交互的主要接口之一,非常适合进行批处理...

    JDBC批处理数据

    使用`PreparedStatement`进行批处理时,可以动态设置参数值,这样既避免了SQL注入的问题,也使得代码更加安全和高效。 ### 四、总结 通过上述示例可以看出,使用JDBC批处理能够显著提高数据处理的速度和效率,特别...

    数据库连接

    示例代码中的StatementTest类展示了如何使用Statement执行SQL查询,而PrepareStatement类则演示了PreparedStatement的用法,包括预编译SQL和设置参数。 总结来说,Statement适用于执行简单的、不重复或少有变化的...

    Java调用SQLServer的存储过程详解[归类].pdf

    总的来说,Java通过JDBC驱动程序与SQL Server的交互非常灵活,不仅可以调用存储过程,还能处理各种参数类型,包括输入、输出和输入/输出参数。理解这些概念对于编写高效、健壮的Java数据库应用程序至关重要。

    java代码中的sql语句处理.rar_JAVA SQL处理

    - **JDBC批处理**:对于批量操作,JDBC提供批处理功能,通过`addBatch()`和`executeBatch()`方法,可以一次性执行多条SQL语句。 - **ORM框架**:如Hibernate或MyBatis,它们简化了SQL处理,通过映射Java对象和...

    j2ee07:jdbc01:Properties对象、四大参数、批量删除、基本的增删改查

    首先,我们需要创建一个Statement对象,然后使用`addBatch()`方法添加多条SQL删除语句到批处理队列,最后调用`executeBatch()`执行所有操作。例如: ```java Statement stmt = conn.createStatement(); stmt....

    MySQL_4_JDBC高级操作和事务1

    在本节“MySQL_4_JDBC高级操作和事务1”中,我们将深入探讨JDBC的批处理操作和...通过理解并熟练运用上述JDBC批处理和事务管理的知识,你可以更有效地处理数据库操作,提高应用性能,并确保数据的准确性和一致性。

    使用 JDBC 的高级数据库操作

    4. 使用预编译和参数化查询,提升查询速度。 5. 适当调整事务隔离级别,平衡并发性和一致性。 九、异常处理 在JDBC操作中,要正确捕获和处理`SQLException`,确保程序的健壮性。 总结,JDBC作为Java与数据库交互...

    java_operation_phoenix-master

    总结来说,Java操作Phoenix涉及到的主要知识点有:使用JDBC连接Phoenix、执行SQL查询和DML操作、批处理、事务管理和性能优化。通过熟练掌握这些技能,开发者可以有效地在Java应用程序中集成和利用Phoenix的强大功能...

    5、批量插入海量数据之Java插入MySql(csdn)————程序.pdf

    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高级教程

    总结,JDBC高级教程涵盖了从基础的数据库连接到复杂的数据操作,包括事务控制、存储过程调用、批处理和性能优化等方面。熟练掌握这些知识点,能帮助Java开发者高效、安全地与各种数据库进行交互。通过阅读《JDBC高级...

    JDBC与Java数据库程序设计_0.rar

    2. **创建Statement对象**:`Connection`对象的`createStatement()`方法用于创建`Statement`对象,用于执行SQL语句。`Statement`适用于简单的、不带参数的SQL查询。 3. **预编译SQL(PreparedStatement)**:对于带...

    ojdbc6.jar驱动.rar

    - 调整JDBC参数,如批处理大小、超时设置,以优化性能。 9. **异常处理** 在处理数据库操作时,需捕获并适当地处理SQLException和其他相关的异常,以确保程序的健壮性。 10. **社区与资源** Oracle官方文档和...

    statement和prepared区别

    在实际应用中,选择使用Statement还是PreparedStatement,主要取决于SQL语句的使用频率和是否存在参数。如果SQL语句只执行一次或者执行频率极低,使用Statement就足够了。但如果我们需要频繁地执行相同的SQL语句,...

    JDBC Jar包

    7. **批处理**:`addBatch()`和`executeBatch()`方法允许一次发送多个SQL语句,提高效率。 **JDBC使用步骤:** 1. 加载驱动:`Class.forName("com.mysql.jdbc.Driver")` 2. 获取连接:`Connection conn = ...

    非常全面JDBC资源

    3. **批处理**: 多个SQL语句可以一起执行,提高效率,如`stmt.addBatch(sql)`和`stmt.executeBatch();` 4. **数据库元数据**: `DatabaseMetaData`对象提供了关于数据库的结构和能力的信息,如获取表信息、列信息等。...

    oracle数据库的java驱动classes12.jar

    5. **游标和批处理**: `CallableStatement`接口可用于执行存储过程。`ResultSet`支持游标移动,允许前后滚动数据。批处理功能可以一次性发送多条SQL语句,提高效率。 6. **连接池**: 在实际应用中,通常使用连接池...

Global site tag (gtag.js) - Google Analytics