- 浏览: 1307631 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1720//按天统计,createtime为数据库的date类型,格 ... -
oracle case when 复杂统计SQL
2015-10-21 10:18 2814select substr(unitcode,0,6),c ... -
oracle 取树形结构的数据,一条sql
2013-05-16 15:47 1807例子:select * from tb_cod_ ... -
SQL中in和exists的区别
2013-03-12 11:53 1452in和existsin 是把外表和内表作hash 连接,而e ... -
A表字段更新为B表的字段值
2013-03-12 11:34 2093T1表 结构 id name sc ... -
db2 备份表的sql
2013-03-07 18:09 15941)创建一个备份表create table t_public ... -
sql 添加修改删除字段 语句
2013-02-26 10:32 8571.增加字段 alter table docdsp ... -
Oracle一列的多行数据拼成一行显示字符
2013-01-23 11:16 8409Oracle一列的多行数据拼成一行显示字符 oracle ... -
从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。
2012-12-05 14:28 1382com.microsoft.sqlserver.jdbc.SQ ... -
db2采用移除而非删除,补救彻底删除数据库方法
2012-11-07 15:51 1435db2采用自带的客户端,删除数据库不小心点了 “移除”而非“删 ... -
DB2错误信息 查看命令
2012-11-07 15:49 861本机如果安装了DB2数据库,可以直接使用命令查看错误代码对应的 ... -
DB2错误信息(按sqlcode排序)
2012-10-22 13:21 10843DB2错误信息(按sqlcode排序) sqlcode sq ... -
数据库取表的前n条记录
2012-08-17 16:22 1355关于row_number() over()的用法 介绍 ... -
DB2 TOP N问题解决方法
2012-08-08 14:48 1145在sql server中的如下sql语句是正确的select ... -
SQL SERVER 2005 导出包含(INSERT INTO)数据的SQL脚本 (使用存储过程)
2012-05-08 19:08 1400通常情况下,SQL Server里面的生成SQL脚本,只 ... -
正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一..
2012-04-11 10:43 18238在win7 下安装oracle_11gR1_databa ... -
java备份mysql数据库
2011-06-13 16:45 938package com.zjx.dbbackup; /* ... -
MySQL 创建用户,授权,撤销,删除
2011-03-30 21:31 2134一, 创建用户: 命令:CREATE USER ... -
mysql left join 多个表
2011-03-16 17:09 37778SQL: select * from t_a a left ... -
Oracle数据库遍历树形结构表[转]
2011-03-01 13:31 16901、从根结点开始找子节 ...
相关推荐
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....
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.setString(1, tel.substring(0, 7)); rs = pstmt.executeQuery(); if (rs.next()) { result=new String(rs.getBytes("PCity"),"gbk");//访问数据库中文乱码问题 //result = rs.getString(1); } else { ...
我们可以使用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 防止下载的文件版本不一样,仍抛出异常
pstmt.setType(index,value); index从1开始 3.提供预编译的功能,某种程度上可以避免sql注入的问题 4.提前做语法检查,在给?赋值的过程中要求数据类型一定要匹配,这样在某种程度上可以避免因为数据类型...
result=pstmt. executeUpdate(); result类型为整型,返回一个整数,小于零操作没成功 7.关闭不再使用的 如:rs.close(); stmt.close(); con.close(); JDBC编程步骤总结: 1. Load the Driver:Class.forName(); ...
pstmt_item.addBatch(); } pstmt_item.executeBatch(); dbUtil.getCon().commit(); } catch (SQLException e) { e.printStackTrace(); try { dbUtil.getCon().rollback(); } catch ...
pstmt.close(); pstmt=null; } catch (SQLException e) { e.printStackTrace(); } } public static ResultSet getRs(Statement stmt,String sql){ ResultSet rs=null; try { rs=stmt.executeQuery(sql); ...
java和mysql日期的问题。通过java向mysql中插入datetime类型的数据: String sql = "INSERT INTO wp_posts ( post_date )VALUES(?)"; PreparedStatement pstmt = connection.... pstmt.setTimestamp(1, time);
pstmt.setObject(i+1, args[i]); } } rs = pstmt.executeQuery(); while(rs.next()){ User user = new User(); user.setUserno(rs.getInt("USERNO")); user.setUsername(rs.getString...
import com.jdbc.DB; import com.window.Main; public class Login extends JFrame { private JPanel contentPane; private Point pressedPoint; /*private final class LoginActionListener implements ...
conn = DriverManager.getConnection("jdbc:mysql://localhost/shopping?user=root&password=root"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e....
;charset=gb2312"%> <%@ page import = "java.sql.*"%> <title>JDBC+JSP 留言管理程序 使用JDBC连接ORACLE数据库 ...PreparedStatement pstmt = null; ResultSet rs = null; int flag = 0; %> <%
如何在用java代码修改数据库数据: Java写数据库数据的前提: 首先要Java与数据库相连接。如有不懂得可以看我的之前的博文。 用Java代码修改数据 如一个方法(根据id 修改年龄大小):void xg...PreparedStatement pstmt
List all = new ArrayList() ; String sql = "SELECT id,name,idguangpan,idgeshou FROM gequ WHERE ... PreparedStatement pstmt = null ; DataBaseConnection dbc = null ; dbc = new DataBaseConnection() ;