批量处理JDBC语句提高处理速度
发布时间:2020-12-12 08:16:02 所属栏目:MsSql教程 来源:网络整理
导读:有时候JDBC运行得不够快,这使得有些程序员使用数据库相关的存储过程。作为一个替代方案,可以试试使用Statement的批量处理特性看看能否同时执行所有的SQL以提高速度。 存储过程的最简单的形式就是包含一系列SQL语句的过程,将这些语句放在一起便于在同一个
有时候JDBC运行得不够快,这使得有些程序员使用数据库相关的存储过程。作为一个替代方案,可以试试使用Statement 的批量处理特性看看能否同时执行所有的SQL以提高速度。 存储过程的最简单的形式就是包含一系列SQL语句的过程,将这些语句放在一起便于在同一个地方管理也可以提高速度。Statement 类可以包含一系列SQL语句,因此允许在同一个数据库事务执行所有的那些语句而不是执行对数据库的一系列调用。 使用批量处理功能涉及下面的两个方法: ? addBatch(String) 方法 ? executeBatch方法 如果你正在使用Statement 那么addBatch 方法可以接受一个通常的SQL语句,或者如果你在使用PreparedStatement ,那么也可以什么都不向它增加。executeBatch 方法执行那些SQL语句并返回一个int值的数组,这个数组包含每个语句影响的数据的行数。如果将一个SELECT语句或者其他返回一个ResultSet的SQL语句放入批量处理中就会导致一个SQLException异常。 关于java.sql.Statement 的简单范例可以是: Statement stmt = conn.createStatement(); stmt.insert("DELETE FROM Users"); stmt.insert("INSERT INTO Users VALUES("rod", 37, "circle")"); stmt.insert("INSERT INTO Users VALUES("jane", 33, "triangle")"); stmt.insert("INSERT INTO Users VALUES("freddy", 29, "square")"); int[] counts = stmt.executeBatch(); PreparedStatement 有些不同,它只能处理一部分SQL语法,但是可以有很多参数,因此重写上面的范例的一部分就可以得到下面的结果: // 注意这里没有DELETE语句 PreparedStatement stmt = conn.prepareStatement( "INSERT INTO Users VALUES(?,?,?)" ); User[ ] users = ...; for(int i=0; i<users.length; i++) { stmt.setInt(1, users[i].getName()); stmt.setInt(2, users[i].getAge()); stmt.setInt(3, users[i].getShape()); stmt.addBatch( ); } int[ ] counts = stmt.executeBatch(); 如果你不知道你的语句要运行多少次,那么这是一个很好的处理SQL代码的方法。在不使用批量处理的情况下,如果添加50个用户,那么性能就有影响,如果某个人写了一个脚本添加一万个用户,程序可能变得很糟糕。添加批处理功能就可以帮助提高性能,而且在后面的那种情况下代码的可读性也更好。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- JDBC SQL语法
- SQL Server中的sql-server-2008 – UNIX_TIMESTAMP
- sql server 查询表内重复字段的简单示例
- 如何检查表是否存在以及它是否不存在在sql server 2008中创
- sql-server – 现有的DAO代码是否适用于SQL Server?
- sql – 必须有一个更好的方法来做本地化的数据库字段
- 存储过程EXEC vs sp_executesql的区别?
- sql – Liquibase:将列数据复制到同一个表中的新列中
- T-SQL – 左外连接 – where子句与on子句中的过滤器
- CentOS6.5下RPM方式安装mysql5.6.33的详细教程
推荐文章
站长推荐
热点阅读