今天写了个程序往数据库插入100万条记录,代码如下
public static void insertRecords() throws Exception {
Connection conn = null;
try {
conn = DBUtil.getConnection();
conn.setAutoCommit(false);
while (count < TOTALNUM) {
PreparedStatement ps = conn.prepareStatement("select * from custfund limit ?");
ps.setInt(1, COPYNUM);
ResultSet rs2 = ps.executeQuery();
while (rs2.next() && count < TOTALNUM) {
PreparedStatement ps2 = conn
.prepareStatement("sql here...");
ps2.setInt(1, ++maxCustId);
ps2.setFloat(2, rs2.getFloat(2));
ps2.setFloat(3, rs2.getFloat(3));
ps2.setFloat(4, rs2.getFloat(4));
ps2.setFloat(5, rs2.getFloat(5));
ps2.setFloat(6, rs2.getFloat(6));
ps2.setFloat(7, rs2.getFloat(7));
ps2.setInt(8, rs2.getInt(8));
ps2.executeUpdate();
ps2.close();
count++;
if (count % 2000 == 0) {
System.out.println(count);
long curtime = new Date().getTime();
long timeUsed = curtime - time;
int remaincount = TOTALNUM - count;
System.out.println("remaining time:" + (remaincount / 2000) * timeUsed / 1000 + "s");
time = curtime;
conn.commit();
}
}
rs2.close();********
ps.close();********
}
System.out.println("total time:" + (new Date().getTime() - starttime) / 1000 + "S");
} finally {
if (conn != null) {
conn.close();
}
}
}
在****处如果不对rs, ps close,就会有java虚拟机out of memory.
按理说java虚拟机会自动垃圾回收,但为什么这里会这样呢?
原因是rs, ps没有关闭,java虚拟机认为它还在被使用。很多循环以后,就内存满了。
分享到:
相关推荐
SqlHelper.java连接数据库通用类... package org.jdbc.com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql....
JDBC连接所有数据库步骤 1 将数据库的JDBC驱动加载到classpath中,在基于JAVAEE的WEB应用实际开发过程中,通常要把目标...7 依次将ResultSet、Statement、PreparedStatement、Connection对象关闭,释放所占用的资源。
JDBC连接数据库,里面有封装好的Connection、PreparedStatement、ResultSet,连接数据库和关闭这三种连接可以直接调用,简洁化!
7.关闭连接 `ResultSet 、Statement 、Connection` 3.SQL注入问题与解决(Statement 、PreparedStatement) 3.1.模拟SQL注入 3.2.PreparedStatement解决 3.3.Statement 与 PreparedStatement 4.完整源码
1、JDBC(Java Database Connection):java连接数据库统一接口API,底层主要通过直接的JDBC驱动和 JDBC-ODBC桥驱动实现与数据库的连接。 1>.JDBC驱动程序类型: <1>.JDBC-ODBC桥加ODBC驱动程序:需要ODBC驱动,适合...
java.sql.Connection 与特定数据库的连接(会话)。能够通过getMetaData方法获得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。代表了数据库。 java.sql.Driver 每个驱动程序类必需实现的...
JDBC主要接口、类: Connection:封装连接 DriverManager:管理驱动 Statement:封装SQL语句 PreparedStatement:封装SQL语句 ResultSet:封装结果集
掌握JDBC操作数据库的步骤 熟悉JDBC的常用API 了解什么是JDBC DriverManager类、Connection接口、Statement接口 连接mysql数据库方法 PreparedStatement接口 ResultSet接口
Connection接口,ResultSet接口,PreparedStatement接口
我们知道进行编码和转码工作都是集中在JDBC的两个接口PreparedStatement和ResultSet上进行的,主要涉及PreparedStatement的setString方法以及ResultSet的getString方法。前面我们讲过需要加入一个连接封装层来对...
二、JDBC常用的接口和类 2.1 Driver接口 2.2 DriverManager类 2.3 Connection接口 2.4 Statement接口 2.5 PreparedStatement接口 2.6 ResultSet接口 2.7 DataSource接口 三、JDBC操作数据库的步骤 四、编写第一个...
jdbc详细测试用例,包括connection ,statement,preparedstatement,resultset,BeanUtils,DBUtils,数据库连接池dbcp,cp03的单元测试,及dao层的统一封装,适合项目开发人员学习和项目中使用。
所以如果一旦连接关闭那么ResultSet将取不到值 5.处理结果 如果有结果集,处理结果集 ResultSet next(),每执行一次,向下移动一次,如果有值,返回true,如果没值返回false while(rs.next()){ rs.getType...
一次只从数据库中查询最大maxCount条记录 ... PreparedStatement pstat = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //最大查询到第几条记录.........
JDBC访问数据库的步骤 1. 新建java项目:JDBC,新建 class文件:TestJDBC 2. JDBC用到的类库基本都位于java.sql.*包中,程序中引入该包: Import java.sql.*; 3. 添加要用的数据库中的包,找到数据库中的Driver....
Java连接数据库并修改内容,Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动器 Connection con=DriverManager.getConnection(dbURL,user,password); //获取连接 String sqlStr="select * from ...
public static void closeConn(ResultSet rs, Connection conn, PreparedStatement pstm) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { System.out.println("rs关闭异常!"); }...
JDBC/MVC个人笔记: MVC; 了解三个类的作用:Connection,PreparedStatement,ResultSet; 代码:UserDao.java、DBUtil.java
Connection conn= DriverManager.getConnection(url,"root","123456"); //创建语句对象 String sql="select *from good"; PreparedStatement ptmt=conn.prepareStatement(sql); ResultSet rs= ptmt....
//连接mysql数据库,要先把mysql的jdbc驱动放到工程的WEB-INF/lib包里面。 public static Connection createConn() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = ...