zoukankan      html  css  js  c++  java
  • jdbc查询大量数据内存溢出的解决方法

    当使用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();
        }

    利用上述的代码可以对数据库表进行遍历处理。

  • 相关阅读:
    Linux合并iso
    Oracle中使用escape关键字实现like匹配特殊字符,以及&字符的转义
    hash算法-time33算法
    理解JMS规范中消息的传输模式和消息持久化
    Oracle启动
    Weblogic缓存
    shell
    Hibernate 延迟载入
    Android获取cpu使用率,剩余内存和硬盘容量
    TestNG的组測试和组中组測试
  • 原文地址:https://www.cnblogs.com/glorey/p/3072673.html
Copyright © 2011-2022 走看看