ResultSet 结果集

ResultSet结果集的引入

当我们查询数据库时,返回的是一个二维的结果集,我们需要使用ResultSet来遍历结果集,获取每一行的数据

使用ResultSet遍历查询结果

boolean next()
   方法将光标从当前位置向前移一行。ResultSet光标最初位于第一行之前,第一次调用next()方法使第一行成为当前行;第二次调用使第二行称为当前行;

ResultSet 结果集

  • String getString(int columnIndex) 以 Java 编程语言中 String 的形式获取此
    ResultSet 对象的当前行中指定列的值。(开发一般不建议使用)
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.cn.zj.JDBCUtil.DbUtil;

public class demo {
	private static DbUtil dbUtil=new DbUtil();
	/**
	 * 遍历查询结果
	 * @throws Exception
	 */
	private static void listBook() throws Exception{
		Connection con=dbUtil.getCon();		//获取连接
		String sql="select * from t_book";
		PreparedStatement pstmt=con.prepareStatement(sql);
		ResultSet rs=pstmt.executeQuery();		//返回结果集ResultSet
		while(rs.next()){
			int id=rs.getInt(1);		//获取第一个列的值,编号id
			String bookName=rs.getString(2);			//获取第二个列的值,图书名称bookName
			float price=rs.getFloat(3);			//获取第三列的值,图书价格price
			String author=rs.getString(4);		//获取第四列的值,图书作者author
			int bookTypeId=rs.getInt(5);		//获取第五列的值,图书类别id
			System.out.println("图书编号"+id+"图书名称"+bookName+"图书价格"+price+"图书作者"+author+"图书类型id"+bookTypeId);
			System.out.println("==============================");
		}
		
	}
	public static void main(String[] args) throws Exception {
		listBook();
	}
}

- String getString(String columnLabel) 以 Java 编程语言中 String 的形式获取此
ResultSet 对象的当前行中指定列的值。(可读性高)

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.cn.zj.JDBCUtil.DbUtil;

public class demo2 {
	private static DbUtil dbUtil=new DbUtil();
	/**
	 * 遍历查询结果
	 * @throws Exception
	 */
	private static void listBook() throws Exception{
		Connection con=dbUtil.getCon();		//获取连接
		String sql="select * from t_book";
		PreparedStatement pstmt=con.prepareStatement(sql);
		ResultSet rs=pstmt.executeQuery();		//返回结果集ResultSet
		while(rs.next()){
			int id=rs.getInt("id");		//获取第一个列的值,编号id
			String bookName=rs.getString("bookName");			//获取第二个列的值,图书名称bookName
			float price=rs.getFloat("price");			//获取第三列的值,图书价格price
			String author=rs.getString("author");		//获取第四列的值,图书作者author
			int bookTypeId=rs.getInt("bookTypeId");		//获取第五列的值,图书类别id
			System.out.println("图书编号"+id+"图书名称"+bookName+"图书价格"+price+"图书作者"+author+"图书类型id"+bookTypeId);
			System.out.println("==============================");
		}
		
	}
	public static void main(String[] args) throws Exception {
		listBook();
	}
}
  • 返回一个集合,返回一个Book对象的集合

ResultSet 结果集

1.重写toString

@Override
public String toString() {
	return "Book [id=" + id + ", bookName=" + bookName + ", price=" + price + ", author=" + author + ", bookTypeId="
			+ bookTypeId + "]";
}

2.返回集合

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.cn.zj.JDBC.model.Book;
import com.cn.zj.JDBCUtil.DbUtil;

public class demo3 {
	private static DbUtil dbUtil=new DbUtil();
	
	//使用泛型
	private static List<Book> listBook() throws Exception{
		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();		//返回结果集ResultSet
		while(rs.next()){
			int id=rs.getInt("id");		//获取第一个列的值,编号id
			String bookName=rs.getString("bookName");			//获取第二个列的值,图书名称bookName
			float price=rs.getFloat("price");			//获取第三列的值,图书价格price
			String author=rs.getString("author");		//获取第四列的值,图书作者author
			int bookTypeId=rs.getInt("bookTypeId");		//获取第五列的值,图书类别id
			Book book=new Book(id,bookName,price,author,bookTypeId);
			bookList.add(book);
		}
		return bookList;
		
	}
	public static void main(String[] args) throws Exception {
		List<Book> bookList=listBook();
		for(Book book:bookList){
			System.out.println(book);
		}
	}
}

======================================================================

共用model类Book.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.cn.zj.JDBC.model.Book;
import com.cn.zj.JDBCUtil.DbUtil;

public class demo3 {
	private static DbUtil dbUtil=new DbUtil();
	
	//使用泛型
	private static List<Book> listBook() throws Exception{
		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();		//返回结果集ResultSet
		while(rs.next()){
			int id=rs.getInt("id");		//获取第一个列的值,编号id
			String bookName=rs.getString("bookName");			//获取第二个列的值,图书名称bookName
			float price=rs.getFloat("price");			//获取第三列的值,图书价格price
			String author=rs.getString("author");		//获取第四列的值,图书作者author
			int bookTypeId=rs.getInt("bookTypeId");		//获取第五列的值,图书类别id
			Book book=new Book(id,bookName,price,author,bookTypeId);
			bookList.add(book);
		}
		return bookList;
		
	}
	public static void main(String[] args) throws Exception {
		List<Book> bookList=listBook();
		for(Book book:bookList){
			System.out.println(book);
		}
	}
}

工具类DbUtil.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/**
 * 通用方法
 * @author Administrator
 *
 */
public class DbUtil {
	//驱动名称
	private static String jdbcName="com.mysql.jdbc.Driver";
	//mysql数据库地址
	private static String dbUrl="jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=UTF-8";
	//用户名
	private  static String dbUserName="root";
	//密码
	private static String dbPassword="root";
	
	//获取数据库连接的方法
	public Connection getCon() throws Exception{
		Class.forName(jdbcName);	//加载驱动
		Connection con=DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
		return con;
	}
	
	//关闭数据库连接
	public void close(Statement stmt,Connection con)throws Exception{
		if(stmt!=null){
			stmt.close();
			if(con!=null){
				con.close();
			}
		}
	}
}

数据库
ResultSet 结果集