【问题】
JDBC读取Product数据表,将数据存入Product对象中,并将对象存储到集合中
【代码】
JDBC工具类
package cn.itcast.jdbcutil;
/*
* 实现JDBC的工具类
* 定义方法,直接返回数据库的连接对象
*
* 写关闭方法
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
private JDBCUtils(){}
private static Connection con ;
static{
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/day07";
String username = "root";
String password = "root";
con = DriverManager.getConnection(url, username, password);
}catch(Exception ex){
throw new RuntimeException(ex+"数据库连接失败");
}
}
/*
* 定义静态方法,返回数据库的连接对象
*/
public static Connection getConnection(){
return con;
}
public static void close(Connection con,Statement stat){
if(stat!=null){
try{
stat.close();
}catch(SQLException ex){}
}
if(con!=null){
try{
con.close();
}catch(SQLException ex){}
}
}
public static void close(Connection con,Statement stat , ResultSet rs){
if(rs!=null){
try{
rs.close();
}catch(SQLException ex){}
}
if(stat!=null){
try{
stat.close();
}catch(SQLException ex){}
}
if(con!=null){
try{
con.close();
}catch(SQLException ex){}
}
}
}
Product对象
package it.cast.domain;
public class Product {
private int pid;
private String pname;
private double price;
private int cno;
public Product() {}
public Product(int pid, String pname, double price, int cno) {
super();
this.pid = pid;
this.pname = pname;
this.price = price;
this.cno = cno;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getCno() {
return cno;
}
public void setCno(int cno) {
this.cno = cno;
}
@Override
public String toString() {
return "Product [pid=" + pid + ", pname=" + pname + ", price=" + price + ", cno=" + cno + "]";
}
}
执行代码
package cn.itcast.demo;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.mysql.jdbc.PreparedStatement;
import cn.itcast.jdbcutil.JDBCUtils;
import it.cast.domain.Product;
public class JDBCDemo {
public static void main(String[] args) throws Exception {
//获取数据库连接对象
Connection con = JDBCUtils.getConnection();
//获取sql执行语句
String sql = "SELECT * FROM product;";
//获取sql语句执行者对象
PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql);
//调用查询方法获得结果集
ResultSet rs = pst.executeQuery();
//创建集合对象
List<Product> list = new ArrayList<Product>();
while (rs.next()) {
//获取每个列的数据,封装到Product对象中
Product product = new Product(rs.getInt("pid"),rs.getString("pname"),rs.getDouble("price"),rs.getInt("cno"));
//把封装好的Product对象存储到list中
list.add(product);
}
//遍历list集合
for (Product product:list) {
System.out.println(product);
}
JDBCUtils.close(con, pst, rs);
}
}
【结果截图】