一:将查询的结果生成对象,储存在数组中。
package day31; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; public class java_obj {
public static void main(String[] args)throws SQLException{
Connection con=jdbcutils.getCon();
PreparedStatement pst=con.prepareStatement("select * from system_user");
ResultSet res=pst.executeQuery();
/*
将查询的结果用泛型数组储存。
*/
ArrayList<System_user> sys_list=new ArrayList<>();
while (res.next()){
System_user sys_u=new System_user(res.getString("username"),res.getString("password"));
sys_list.add(sys_u);
}
System.out.print(sys_list);
jdbcutils.cls_re(con,pst,res);
}
} class System_user{
private String user;
private String pwd;
public System_user(String user, String pwd){
this.user=user;
this.pwd=pwd;
} @Override
public String toString() {
return this.user+" "+this.pwd;
}
}
工具类:
package day31; import java.sql.*; public class jdbcutils {
/*
创建jdbc工具类。
1:方便别人调用
2:避免代码重复。
*/
private jdbcutils(){}//工具类不需要实例化,所以方法进行私有化。
private static Connection con;//需要静态变量 /*
静态代码块在加载类的时候就执行该部分的代码。
*/
static {
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://192.168.147.146:3306/homework_day13";
String username="test";
String password="";
con= DriverManager.getConnection(url,username,password);
}catch (Exception ex){
throw new RuntimeException(ex+"数据库连接失败!");//如果出现异常的话 需要种子程序 所以要抛出异常。需要创建运行异常的错误。
}
} public static Connection getCon(){
return con;
}
/*
关闭资源。
通过方法的重载来判断用户执行的是查询和更新操作。
*/
public static void cls_re (Connection con, Statement pst, ResultSet rs)throws SQLException{
/*
注意:这里需要判断需要关闭的对象是否存在以及该对象如果抛出异常不能影响下面的关闭。
这里是Statement 是prepareStament的父类。
*/
if(con!=null){
try {
con.close();
}catch (Exception ex){}
}
if(pst!=null){
try {
pst.close();
}catch (Exception ex){}
}
if(rs!=null){
try {
rs.close();
}catch (Exception ex){}
} }
public static void cls_re(Connection con,Statement pst){
if(pst!=null){
try {
pst.close();
}catch (Exception ex){}
}
if(pst!=null){
try {
pst.close();
}catch (Exception ex){}
}
}
}