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

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

  • 相关阅读:
    UVa
    UVa 1630
    P3891 [GDOI2014]采集资源
    一个非常naive的小学数学魔术证明题
    P2831 [NOIP2016 提高组] 愤怒的小鸟
    P4211 [LNOI2014]LCA
    P4137 Rmq Problem / mex 强制在线做法
    P2272 [ZJOI2007]最大半连通子图
    P5664 [CSP-S2019] Emiya 家今天的饭
    盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优
  • 原文地址:https://www.cnblogs.com/glorey/p/3072673.html
Copyright © 2011-2022 走看看