- 浏览: 1312427 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kay11:
...
JAVA生成简单的随机字符串(a-zA-Z0-9) -
zhangliguoaccp:
您好关于登录页面的验验证码这块怎么解决的?还有登录成功后,跳转 ...
JAVA,模拟HTTP登录 -
107x:
不错,谢谢!
<c:foreach 循环 map -
wenjin:
不知楼主是不还在想请叫一下我自己开的Tomcat下载一个文件C ...
Android 下载文件及写入SD卡 -
zyywgf:
JSTL c标签,fn标签,fmt标签
JDBC的批处理操作三种方式
SQL批处理是JDBC性能优化的重要武器,经本人研究总结,批处理的用法有三种。
package lavasoft.jdbctest;
import lavasoft.common.DBToolkit;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC的批量操作三种方式
*/
public class BatchExeSQLTest {
public static void main(String[] args) {
exeBatchStaticSQL();
}
/**
* 批量执行预定义模式的SQL
*/
public static void exeBatchParparedSQL() {
Connection conn = null;
try {
conn = DBToolkit.getConnection();
String sql = "insert into testdb.book (kind, name) values (?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "java");
pstmt.setString(2, "jjjj");
pstmt.addBatch(); //添加一次预定义参数
pstmt.setString(1, "ccc");
pstmt.setString(2, "dddd");
pstmt.addBatch(); //再添加一次预定义参数
//批量执行预定义SQL
pstmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
/**
* 批量执行混合模式的SQL、有预定义的,还有静态的
*/
public static void exeBatchMixedSQL() {
Connection conn = null;
try {
conn = DBToolkit.getConnection();
String sql = "insert into testdb.book (kind, name) values (?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "java");
pstmt.setString(2, "jjjj");
pstmt.addBatch(); //添加一次预定义参数
pstmt.setString(1, "ccc");
pstmt.setString(2, "dddd");
pstmt.addBatch(); //再添加一次预定义参数
//添加一次静态SQL
pstmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
//批量执行预定义SQL
pstmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
/**
* 执行批量静态的SQL
*/
public static void exeBatchStaticSQL() {
Connection conn = null;
try {
conn = DBToolkit.getConnection();
Statement stmt = conn.createStatement();
//连续添加多条静态SQL
stmt.addBatch("insert into testdb.book (kind, name) values ('java', 'java in aciton')");
stmt.addBatch("insert into testdb.book (kind, name) values ('c', 'c in aciton')");
stmt.addBatch("delete from testdb.book where kind ='C#'");
stmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
// stmt.addBatch("select count(*) from testdb.book"); //批量执行不支持Select语句
//执行批量执行
stmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
}
import lavasoft.common.DBToolkit;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
/**
* JDBC的批量操作三种方式
*/
public class BatchExeSQLTest {
public static void main(String[] args) {
exeBatchStaticSQL();
}
/**
* 批量执行预定义模式的SQL
*/
public static void exeBatchParparedSQL() {
Connection conn = null;
try {
conn = DBToolkit.getConnection();
String sql = "insert into testdb.book (kind, name) values (?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "java");
pstmt.setString(2, "jjjj");
pstmt.addBatch(); //添加一次预定义参数
pstmt.setString(1, "ccc");
pstmt.setString(2, "dddd");
pstmt.addBatch(); //再添加一次预定义参数
//批量执行预定义SQL
pstmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
/**
* 批量执行混合模式的SQL、有预定义的,还有静态的
*/
public static void exeBatchMixedSQL() {
Connection conn = null;
try {
conn = DBToolkit.getConnection();
String sql = "insert into testdb.book (kind, name) values (?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "java");
pstmt.setString(2, "jjjj");
pstmt.addBatch(); //添加一次预定义参数
pstmt.setString(1, "ccc");
pstmt.setString(2, "dddd");
pstmt.addBatch(); //再添加一次预定义参数
//添加一次静态SQL
pstmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
//批量执行预定义SQL
pstmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
/**
* 执行批量静态的SQL
*/
public static void exeBatchStaticSQL() {
Connection conn = null;
try {
conn = DBToolkit.getConnection();
Statement stmt = conn.createStatement();
//连续添加多条静态SQL
stmt.addBatch("insert into testdb.book (kind, name) values ('java', 'java in aciton')");
stmt.addBatch("insert into testdb.book (kind, name) values ('c', 'c in aciton')");
stmt.addBatch("delete from testdb.book where kind ='C#'");
stmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");
// stmt.addBatch("select count(*) from testdb.book"); //批量执行不支持Select语句
//执行批量执行
stmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBToolkit.closeConnection(conn);
}
}
}
注意:JDBC的批处理不能加入select语句,否则会抛异常:
java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate().
at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1007)
at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1007)
发表评论
-
oracle 按每天、周、月、季度、年统计
2018-07-30 09:27 1727//按天统计,createtime为数据库的date类型,格 ... -
oracle case when 复杂统计SQL
2015-10-21 10:18 2824select substr(unitcode,0,6),c ... -
oracle 取树形结构的数据,一条sql
2013-05-16 15:47 1826例子:select * from tb_cod_ ... -
SQL中in和exists的区别
2013-03-12 11:53 1462in和existsin 是把外表和内表作hash 连接,而e ... -
A表字段更新为B表的字段值
2013-03-12 11:34 2104T1表 结构 id name sc ... -
db2 备份表的sql
2013-03-07 18:09 16121)创建一个备份表create table t_public ... -
sql 添加修改删除字段 语句
2013-02-26 10:32 8641.增加字段 alter table docdsp ... -
Oracle一列的多行数据拼成一行显示字符
2013-01-23 11:16 8419Oracle一列的多行数据拼成一行显示字符 oracle ... -
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
2012-12-05 14:28 1392com.microsoft.sqlserver.jdbc.SQ ... -
db2采用移除而非删除,补救彻底删除数据库方法
2012-11-07 15:51 1445db2采用自带的客户端,删除数据库不小心点了 “移除”而非“删 ... -
DB2错误信息 查看命令
2012-11-07 15:49 872本机如果安装了DB2数据库,可以直接使用命令查看错误代码对应的 ... -
DB2错误信息(按sqlcode排序)
2012-10-22 13:21 10853DB2错误信息(按sqlcode排序) sqlcode sq ... -
数据库取表的前n条记录
2012-08-17 16:22 1368关于row_number() over()的用法 介绍 ... -
DB2 TOP N问题解决方法
2012-08-08 14:48 1155在sql server中的如下sql语句是正确的select ... -
SQL SERVER 2005 导出包含(INSERT INTO)数据的SQL脚本 (使用存储过程)
2012-05-08 19:08 1408通常情况下,SQL Server里面的生成SQL脚本,只 ... -
正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一..
2012-04-11 10:43 18251在win7 下安装oracle_11gR1_databa ... -
java备份mysql数据库
2011-06-13 16:45 945package com.zjx.dbbackup; /* ... -
MySQL 创建用户,授权,撤销,删除
2011-03-30 21:31 2143一, 创建用户: 命令:CREATE USER ... -
mysql left join 多个表
2011-03-16 17:09 37795SQL: select * from t_a a left ... -
Oracle数据库遍历树形结构表[转]
2011-03-01 13:31 17011、从根结点开始找子节 ...
相关推荐
pstmt.setObject(1, id); pstmt.setObject(2, name); pstmt.setObject(3, classname); pstmt.setObject(4, sex); pstmt.setObject(5, age); pstmt.execute(); }catch(Exception e){ ...
pstmt.setString(1, book.getBookName()); pstmt.setString(2, book.getAuthor()); pstmt.setString(3, book.getSex()); pstmt.setFloat(4, book.getPrice()); pstmt.setInt(5, book.getBookTypeId()); pstmt....
pstmt.setString(4, country.getPopulation()); pstmt.setString(5, country.getGdp()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { try { pstmt.close(); conn...
1、JDBC编程六大步: ...1.class.forName(driver) 2.new oracle.jdbc.driver.OracleDriver(); 3.java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver jdbc.drivers=System....pstmt.execute*(); 5)获得并处理结果集
ResultSet rs = pstmt.executeQuery(); Contact c = null; while(rs.next()){ // int id = rs.getInt("id"); String name=rs.getString("name"); String phone=rs.getString("phone"); ...
pstmt.addBatch(); } pstmt.executeBatch(); pstmt.close(); ``` 5. **异常处理和关闭资源** 总是记得在操作完成后关闭数据库连接和文件输入流: ```java try { conn.close(); } catch (SQLException e...
pstmt.setString(1, tel.substring(0, 7)); rs = pstmt.executeQuery(); if (rs.next()) { result=new String(rs.getBytes("PCity"),"gbk");//访问数据库中文乱码问题 //result = rs.getString(1); } else { ...
pstmt.addBatch(); } pstmt.executeBatch(); conn.close(); } } ``` 4. Java 实现 Excel 数据导入到 MySQL 数据库的优点 使用 Java 语言实现 Excel 数据导入到 MySQL 数据库有很多优点,例如: * 高效率:...
pstmt.setString(1, category.getName()); pstmt.executeUpdate(); } public void update(Category category) { String sql = "UPDATE CATEGORY SET NAME = ? WHERE ID = ?"; PreparedStatement pstmt = conn...
我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的...
pstmt.setObject(i+1, param[i]); } num = pstmt.executeUpdate(); } catch (SQLException ex) { throw new Exception("错误提示:请检查SQL语法是否有误"); //throw ex ; } finally{ close(connect,pstmt...
oracle.sql.ArrayDescriptor desc =... pstmt.setArray(1, array); pstmt.executeUpdate(); 将10g版本配套的3个文件集中到一起, orai18n.jar classes12.jar nls_charset12.jar 防止下载的文件版本不一样,仍抛出异常
3. 向数据库发送SQL的接口:`Statement`、`PreparedStatement`和`CallableStatement`是三种可以向数据库发送SQL的接口。`Statement`用于执行静态SQL语句,而`PreparedStatement`则允许预编译SQL语句,支持参数绑定,...
pstmt.setType(index,value); index从1开始 3.提供预编译的功能,某种程度上可以避免sql注入的问题 4.提前做语法检查,在给?赋值的过程中要求数据类型一定要匹配,这样在某种程度上可以避免因为数据类型...
POI 库提供了一个统一的 API,允许开发者以一种统一的方式来访问和操作 Office 文件。 现在,让我们回到正题,如何使用 POI 库来导入 Excel 文件。首先,我们需要引入 POI 库的相关 jar 文件,并在 Java 项目中添加...
pstmt.setBinaryStream(1, photoStream, (int) file.length()); pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main...
result=pstmt. executeUpdate(); result类型为整型,返回一个整数,小于零操作没成功 7.关闭不再使用的 如:rs.close(); stmt.close(); con.close(); JDBC编程步骤总结: 1. Load the Driver:Class.forName(); ...
以下代码展示了这两种方式: ```java try { // 从本地文件创建 Workbook File sourcefile = new File("path_to_your_excel_file.xls"); Workbook rwb = Workbook.getWorkbook(sourcefile); // 或者从输入流...
ResultSet rs = pstmt.executeQuery(); ``` 在上面的代码中,我们使用了参数化查询来防御 SQL 注入攻击。我们将用户名和密码作为参数传递给查询语句,从而防止攻击者构造恶意的 SQL 代码。 此外,开发者还可以使用 ...
pstmt.setBinaryStream(2, fis, fis.available()); pstmt.executeUpdate(); } catch (Exception ex) { System.out.println(ex.getMessage()); } } } ``` 在上面的代码中,我们使用了 JDBC 来连接 MySQL ...