一、ResultSet结果集的简介
查询数据库时,返回的是一个二维的结果集,我们需要用到ResultSet来遍历结果集,获取每一行的数据。
二、使用ResultSet遍历查询结果
boolean next() 将光标从当前位置向前移一行。
String getString(int columnIndex) 以java编程语言中String的形式获取此ResultSet对象的当前行中指定列的值
String getString(String columnLabel) 以java编程语言中String的形式获取此ResultSet对象的当前行中指定列的值
String getString(String columnLabel) 以java编程语言中String的形式获取此ResultSet对象的当前行中指定列的值
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import model.Book; import util.DbUtil; public class demo2 { /** * getString(int columnIndex)使用 * @throws Exception */ private static void listBook() throws Exception{ DbUtil dbUtil = new DbUtil(); Connection con = dbUtil.getcon(); String sql = "select * from t_book"; PreparedStatement psta = con.prepareStatement(sql); ResultSet rs = psta.executeQuery();//返回结果集ResultSet while(rs.next()){ int id = rs.getInt(1);// 获取第一个列的值 编号id String bookName = rs.getString(2);// 获取第二个列的值 图书名称 bookName String author = rs.getString(3);// 获取第三列的值 图书作者 author float price = rs.getFloat(4);// 获取第四列的值 图书价格 price System.out.println("id="+id+" bookName="+bookName +" author="+author+" price="+price); System.out.println("................................................"); } } /** * getString(String columnLabel)使用 * @throws Exception */ private static void listBook2() throws Exception{ DbUtil dbUtil = new DbUtil(); Connection con = dbUtil.getcon(); String sql = "select * from t_book"; PreparedStatement psta = con.prepareStatement(sql); ResultSet rs = psta.executeQuery(); while(rs.next()){ int id = rs.getInt("id");// 获取第一个列的值 编号id String bookName = rs.getString("bookName"); // 获取第二个列的值 图书名称 bookName String author = rs.getString("author");// 获取第三列的值 图书作者 author float price = rs.getFloat("price");// 获取第四列的值 图书价格 price System.out.println("id="+id+" bookName="+bookName +" author="+author+" price="+price); System.out.println("................................................"); } } /** * 使用list集合 * @return * @throws Exception */ private static List<Book> listBook3()throws Exception{ DbUtil dbUtil = new DbUtil(); List<Book> bookList=new ArrayList<Book>(); Connection con = dbUtil.getcon(); String sql = "select * from t_book"; PreparedStatement pstmt = con.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); // 获取第一个列的值 编号id String bookName = rs.getString("bookName"); // 获取第二个列的值 图书名称 bookName String author = rs.getString("author"); // 获取第三列的值 图书作者 author float price = rs.getFloat("price"); // 获取第四列的值 图书价格 price Book book=new Book(id, bookName, author,price);//book对象实例化 bookList.add(book);//添加进集合 } return bookList; } public static void main(String[] args) throws Exception { //遍历集合 List<Book> bookList=listBook3(); for (Book book : bookList) { System.out.println(book); } //listBook3(); } }打印的结果:
所以要在Book内重写toString方法:
@Override public String toString() { return "[id=" + id + ", bookName=" + bookName + ", author=" + author + ", price=" + price + "]"; }重写后的效果图: