一、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();//返回结果集ResultSetwhile(rs.next()){int id = rs.getInt(1);// 获取第一个列的值 编号idString bookName = rs.getString(2);// 获取第二个列的值 图书名称 bookNameString author = rs.getString(3);// 获取第三列的值 图书作者 authorfloat price = rs.getFloat(4);// 获取第四列的值 图书价格 priceSystem.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");// 获取第一个列的值 编号idString bookName = rs.getString("bookName"); // 获取第二个列的值 图书名称 bookNameString author = rs.getString("author");// 获取第三列的值 图书作者 authorfloat price = rs.getFloat("price");// 获取第四列的值 图书价格 priceSystem.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"); // 获取第一个列的值 编号idString bookName = rs.getString("bookName"); // 获取第二个列的值 图书名称 bookNameString author = rs.getString("author"); // 获取第三列的值 图书作者 authorfloat price = rs.getFloat("price"); // 获取第四列的值 图书价格 priceBook 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方法:
@Overridepublic String toString() {return "[id=" + id + ", bookName=" + bookName + ", author=" + author +", price=" + price + "]";}
重写后的效果图: