当使用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(); }
利用上述的代码可以对数据库表进行遍历处理。 |