ResultSet 结果集

ResultSet结果集的引入

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

使用ResultSet遍历查询结果

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

在这里插入图片描述

  • 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对象的集合

在这里插入图片描述

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();
			}
		}
	}
}

数据库
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值