一、ResultSet结果集的简介
查询数据库时,返回的是一个二维的结果集,我们需要用到ResultSet来遍历结果集,获取每一行的数据。
二、使用ResultSet遍历查询结果
boolean next() 将光标从当前位置向前移一行。
String getString(int columnIndex) 以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 + "]";
}
重写后的效果图:
原文链接:https://blog.csdn.net/Above_my_point/article/details/78934163