大一狗刚刚接触到jdbc
来说一下基本的分页查询(虽然我花了好一会儿才实现)
使用的MySQL数据库,里面装着学生信息
1 Class.forName("com.mysql.cj.jdbc.Driver"); 2 3 4 //嗯~ o(* ̄▽ ̄*)o这里的驱动类写法改了,在mysql-connector-java 6后 5 6 7 String url = "jdbc:mysql:://127.0.0.1:3306"; 8 String user = "root"; 9 String password = "123456789"; 10 Connection connection =DriverManager.getConnection(url, user, password); 11 12 //一如既往的常规操作,建立链接。。。
接下来啊,就有两种思路了。
1.使用MySQL的limit语句进行查询
2.对Resultset进行操作
先来第一种(用其他数据库的小伙伴们自己去找找其他数据库的语句哦(>—<))
1 String sql01 = "SELECT COUNT(*) FROM sudent"; 2 Statement sta = connection.createStatement(); 3 ResultSet re01 = sta.executeQuery(sql01); 4 int page = re01.getInt("id");//先找了一下总行数方便分页 5 int id = 0; 6 while (id < page/10) { 7 String sql = "SELECT * FROM student LIMIT ?,?"; 8 PreparedStatement pre = connection.prepareStatement(sql); 9 pre.setInt(1, id); 10 pre.setInt(2, 10); 11 pre.executeQuery(); 12 ResultSet re02 = pre.executeQuery();//每十行作为一页 13 System.out.println(re02.getInt("id")+"\t"+re02.getString("name")+"\t"+re02.getString("sex")+"\t"+re02.getInt("password")); 14 System.out.println("**********************");//为了方便看效果就直接打印了(大家不要学我这么懒(⊙o⊙)) 15 id = id+10; 16 re02.close(); 17 pre.close(); 18 } 19 System.out.println(page/10); 20 re01.close(); 21 sta.close(); 22 connection.close();//操作完一定记得关闭
接下来是第二种,对Resultset的操作,这种方法适合少量数据的分页。毕竟一次数据太多,那啥。。。会炸的
String sql = "SELECT * FROM student"; Connection conn =DriverManager.getConnection(url, user, password); Statement sta = conn.createStatement(); ResultSet re = sta.executeQuery(sql); while(re.next()) { for (int i = 0; i < 10; i++) { System.out.println(re.getInt("id")+"\t"+re.getString("name")+" \t"+re.getString("name")+re.getInt("password")); re.next();
} System.out.println("*****************************"); }
这里还是先取得连接,创建Statement对象然后获取Resultset对象
紧接着用next()方法进行操作,可以理解为有一个光标,每使用一次next()光标就向下移动并返回一个布朗类型的值,刚被光标扫过的那一行数据可以被紧接着的getXxx()方法获取,每十个为一组进行输出。