in example/src/main/java/Pagination.java [40:92]
public static void main(String[] args) throws SQLException {
if (args.length < 3) {
System.out.println("Usage: Pagination connection_string sql record_per_page");
System.out.println(
" eg. Pagination 'jdbc:odps:http://service.odps.aliyun.com/api?project=odpsdemo?accessId=...&accessKey=...&charset=UTF-8' 'select * from dual' 10");
System.exit(1);
}
String connectionString = args[0];
String sql = args[1];
int recordPerPage = Integer.parseInt(args[2]);
try {
String driverName = "com.aliyun.odps.jdbc.OdpsDriver";
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
}
System.out.println("Connection: " + connectionString);
Connection conn = DriverManager.getConnection(connectionString);
ResultSet res;
// SQL 只需运行一次,不要每显式一页都运行一个全新的 SQL
System.out.println("Running : " + sql);
if (sql.trim().equalsIgnoreCase("show tables")) {
res = conn.getMetaData().getTables(null, null, null, null);
} else {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
res = stmt.executeQuery(sql);
}
// 获得 ResultSet 的记录数
res.last();
int recordCount = res.getRow();
// 计算页数
int pageCount = (int) Math.ceil(1.0 * recordCount / recordPerPage);
while (true) {
System.out.print("Page Count " + pageCount + ", please input page number (0 to exit): ");
Scanner scanner = new Scanner(System.in);
int p = scanner.nextInt();
if (p == 0) {
break;
}
// 根据输入的页号 p 显式页
printPage(res, (p - 1) * recordPerPage + 1, recordPerPage);
}
// 退出分页时关闭 ResultSet 和 Connection
res.close();
conn.close();
}