jdbc查询大量数据内存溢出的解决方法
2013-05-11 13:27
274 查看
当使用jdbc从mysql中查询大量数据时,有可能会导致内存溢出。为了避免这种情况的发生可以对数据库进行分页查询。
public static void main(String[] args){
String url = "jdbc:mysql://localhost:3306/test";
String username = "username";
String password = "password";
int data_num = 0;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, username,
password);
String sql = "SELECT ID,NAME FROM table_name limit ?,?";
PreparedStatement pst = con.prepareStatement(sql);
int pageSize = 10000;
int pageId = 0;
do {
pst.setInt(1, pageId * pageSize);
pst.setInt(2, pageSize);
ResultSet rs = pst.executeQuery();
boolean isEmpty = true;
while (rs.next()) {
isEmpty = false;
id = rs.getLong(1);
name = rs.getString(2);
data_num++;
}
if (isEmpty) {
break;
}
pageId++;
} while (true);
con.close();
} catch (SQLException se) {
se.printStackTrace();
}
利用上述的代码可以对数据库表进行遍历处理。
public static void main(String[] args){
String url = "jdbc:mysql://localhost:3306/test";
String username = "username";
String password = "password";
int data_num = 0;
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, username,
password);
String sql = "SELECT ID,NAME FROM table_name limit ?,?";
PreparedStatement pst = con.prepareStatement(sql);
int pageSize = 10000;
int pageId = 0;
do {
pst.setInt(1, pageId * pageSize);
pst.setInt(2, pageSize);
ResultSet rs = pst.executeQuery();
boolean isEmpty = true;
while (rs.next()) {
isEmpty = false;
id = rs.getLong(1);
name = rs.getString(2);
data_num++;
}
if (isEmpty) {
break;
}
pageId++;
} while (true);
con.close();
} catch (SQLException se) {
se.printStackTrace();
}
利用上述的代码可以对数据库表进行遍历处理。
相关文章推荐
- jdbc查询大量数据内存溢出的解决方法
- Mysql遍历大表(蓝阳:JDBC Mysql大量数据读取内存溢出的解决方法)
- php查询mysql大量数据造成内存不足的解决方法
- php查询大量sql语句时内存溢出的解决方法
- php查询mysql大量数据造成内存不足的解决方法
- PHP查询大量数据内存耗尽问题的解决方法
- php查询mysql大量数据造成内存不足的解决方法
- hbase 查询大量数据异常并解决方法
- plsql查询数据显示为乱码解决方法
- JDBC:利用反射及JDBC元数据编写通用的查询方法
- Oracle客户端与plsql查询数据乱码修改成中文的快速解决方法
- C++操作MySQL大量数据插入效率低下的解决方法
- 如何解决PHP查询大量数据内存耗尽的问题
- hadoop超时解决办法context.progress()的作用 假设在map()方法中,你有一个从数据库读取大量数据的操作,是用一个循环来完成的,并且,在读完全部的数据之前,你不会有任何的数据输出
- PreparedStatement 查询大容量数据内存溢出解决
- 解决mysqldb查询大量数据导致内存使用过高的问题
- PL/SQL Developer 使用中文条件查询时无数据的解决方法(转)
- plsql查询数据显示为乱码解决方法
- 解决PHP里大量数据循环时内存耗尽的方法
- 加载大量的xml数据 使用压缩方法解决(当然较小时也可以压缩)