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