社区
Java EE
帖子详情
jdbc的批量更新我在循环中addBatch("..."),在循环外executeBatch(),但是只添加最后add的那个记录,为什么?
flymanwlq
2004-08-11 08:02:14
dd
...全文
390
7
打赏
收藏
jdbc的批量更新我在循环中addBatch("..."),在循环外executeBatch(),但是只添加最后add的那个记录,为什么?
dd
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flymanwlq
2004-08-12
打赏
举报
回复
aiya,知道了,谢谢大家
wzrlover
2004-08-12
打赏
举报
回复
肯定是你的写法有问题!!!!
litsnake1
2004-08-12
打赏
举报
回复
肯定是代码写错了,好好检查一下是不是同一个statement
woshishui11121113
2004-08-12
打赏
举报
回复
代码?
flymanwlq
2004-08-12
打赏
举报
回复
没人知道么?
flymanwlq
2004-08-11
打赏
举报
回复
不会把?那循环外面的stat.executeBatch(),用的是哪个statement?
lovelymaomao
2004-08-11
打赏
举报
回复
把Stamtent放在循环里面new
servlet制作网站
package com.xr.util; import java.lang.reflect.Method; import java.sql.*; import java.util.*; import org.junit.Test; import com.xr.dto.ManagerDTO; public class DBHelper { private Connection conn = null; { try { Class.forName("com.mysql.
jdbc
.Driver"); } catch (ClassNotFoundException e) { System.out.println("创建驱动失败"); e.printStackTrace(); } try { conn = DriverManager.getConnection( "
jdbc
:mysql://localhost:3306/xc","root", "root"); } catch (SQLException e) { System.out.println("创建连接失败"); e.printStackTrace(); } } // 单表新增,修改,删除 public boolean excuteUpdate(String sql) { if (conn == null) return false; boolean sign = false; try { Statement stat = conn.createStatement(); int i = stat.
execute
Update(sql); if (i > 0) { sign = true; } else { sign = false; } } catch (Exception ex) { ex.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { } return sign; } } // 多表新增,修改,删除 public boolean excuteUpdate(Object... sql) { if (conn == null) return false; boolean sign = false; try { conn.setAutoCommit(false); Statement stat = conn.createStatement(); for (Object o : sql) { stat.
add
Batch
(o.toString()); } stat.
execute
Batch
(); conn.commit(); sign = true; } catch (Exception ex) { conn.rollback(); sign = false; ex.printStackTrace(); } finally { try { conn.setAutoCommit(true); conn.close(); } catch (SQLException e) { } return sign; } } @Test public void tet() throws SQLException{ List list=(List) conn.createStatement().
execute
Query("select name from tbl_manager where B_id='1'"); ManagerDTO m=(ManagerDTO) list.get(0); System.out.println("aaaaaaa"+m.getName()); } // 单表查询 public List excuteQuery(String sql, String objName) { if (conn == null) return null; List list = new ArrayList(); try { Statement stat = conn.createStatement(); ResultSet re = stat.
execute
Query(sql); Class c = Class.forName(objName); Method[] ms = c.getDeclaredMethods(); ResultSetMetaData rsmd=re.getMetaData(); while (re.next()) { Object obj = c.newInstance(); for (int i = 0; i < ms.length; i++) { Method m = ms[i]; if (m.getName().startsWith("set")) { String name = m.getName().substring(3); for(int j=1;j<=rsmd.getColumnCount();j++){ if(name.equalsIgnoreCase(rsmd.getColumnName(j))){ m.invoke(obj, re.getString(name)==null?"":re.getString(name)); break; } } } } list.
add
(obj); } } catch (Exception ex) { list = null; ex.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { } return list; } } /*标量结果*/ public Object
execute
Scare(String sql){ if (conn == null) return null; Object obj = null; try { Statement stat = conn.createStatement(); ResultSet re = stat.
execute
Query(sql); if (re.next()) { obj=re.getString(1); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { } return obj; } } // 单个对象的查询 public Object excuteOneQuery(String sql, String objName) { if (conn == null) return null; Object obj = null; try { Statement stat = conn.createStatement(); ResultSet re = stat.
execute
Query(sql); Class c = Class.forName(objName); Method[] ms = c.getDeclaredMethods(); ResultSetMetaData rsmd = re.getMetaData(); if (re.next()) { obj = c.newInstance(); for (int i = 0; i < ms.length; i++) { Method m = ms[i]; if (m.getName().startsWith("set")) { String name = m.getName().substring(3); for(int j=1;j<=rsmd.getColumnCount();j++){ if(name.equalsIgnoreCase(rsmd.getColumnName(j))){ m.invoke(obj, re.getString(name)==null?"":re.getString(name)); break; } } } } } } catch (Exception ex) { ex.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { } return obj; } } // 多表查询 public List excuteQuery(String sql) { if (conn == null) return null; List list = new ArrayList(); try { Statement stat = conn.createStatement(); ResultSet re = stat.
execute
Query(sql); ResultSetMetaData remd = re.getMetaData(); while (re.next()) { List row = new ArrayList(); for (int i = 1; i < remd.getColumnCount() + 1; i++) { row.
add
(re.getString(i)==null?"":re.getString(i)); } list.
add
(row); } } catch (Exception ex) { ex.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { } return list; } } // 多表查询,单条
记录
返回 public List excuteOneQuery(String sql) { if (conn == null) return null; List row = new ArrayList(); try { Statement stat = conn.createStatement(); ResultSet re = stat.
execute
Query(sql); ResultSetMetaData remd = re.getMetaData(); if (re.next()) { for (int i = 1; i < remd.getColumnCount() + 1; i++) { row.
add
(re.getString(i)); } } } catch (Exception ex) { ex.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { } return row; } } }
JDBC
批量插入数据优化,使用
add
Batch
和
execute
Batch
JDBC
批量插入数据优化,使用
add
Batch
和
execute
Batch
在之前的玩转
JDBC
打造数据库操作万能工具类
JDBC
Util,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入
中
其实忽略了一点,那就是SQL的批量插入的问题,如果来个for
循环
,执行上万次,肯定会很慢,那么,如何去优化呢? 一.用 preparedStatement.
add
Batch
()配合prepa
JDBC
批量插入数据优化, 使用
add
Batch
和
execute
Batch
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53769957 本文出自【DylanAndroid的博客】 #
JDBC
批量插入数据优化,使用
add
Batch
和
execute
Batch
在之前的玩转
JDBC
打造数据库操作万能工具类
JDBC
Util,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入
中
其实忽...
关于
jdbc
批量操作(
add
Batch
,
execute
Batch
)的测试
由于项目上有大批量数据插入和更新的操作,所以使用了
jdbc
的批量操作功能。在此之前参考了很多文章包括
jdbc
的手册(https://www.tutorialspoint.com/
jdbc
/
jdbc
-
batch
-processing.htm),有说需要使用事务的,也有的文章没有使用事务,试了很久,发现代码一直没有按照期望的执行,还是逐条操作数据库。后来在偶然间看到了文章提到需要设置rewriteBa
批量插入数据库发生
add
Batch
错误
向数据库
中
批量插入数据时发生
add
Batch
错误 java.sql.
Batch
UpdateException:
Batch
Update Failed, See next exception for details at org.trafodion.
jdbc
.t4.TrafT4PreparedStatement.
execute
Batch
(TrafT4PreparedStatement....
Java EE
67,512
社区成员
225,881
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章