这篇文章主要介绍了sqlserver和java如何将resultSet中的记录转换为学生对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
要将结果转化为对象,所以第一步要创建一个对象:
1.Student.java
public class Student {//学号、姓名、班级、性别、专业、学院 //类中的属性一定要跟数据库中的一摸一样 包括名称,数据类型 private String 学号; private String 姓名; private String 班级; private String 性别; private String 专业; private String 学院; public String getsno() { return 学号; } public void setsno(String sno) { this.学号 = sno; } public String getsex() { return 性别; } public void setsex(String sex) { this.性别 = sex; } public String getName() { return 姓名; } public void setName(String name) { this.姓名 = name; }}
创建返回结果集的方法
2.DBUtil.java
import java.lang.reflect.Field;import java.sql.*;import java.text.SimpleDateFormat;import java.util.*;import java.util.Date;public class DBUtil{ //连接数据库 static Connection getSQLConnection(String ip, String user, String pwd, String db) { Connection con = null; try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); //con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + ip + ":1433/" + db + ";charset=utf8", user, pwd); //jdbc:jtds:sqlserver://localhost:1433/dbname //解决输出中文乱码 con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + ip + ":1433/" + db , user, pwd); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return con; } public static List populate(ResultSet rs , Class classTemp) throws SQLException, InstantiationException, IllegalAccessException{ //结果集的元素对象 ResultSetMetaData rsmd = rs.getMetaData(); //获取结果集的元素个数 int colCount = rsmd.getColumnCount(); //返回结果的列表集合 List list = new ArrayList(); //业务对象的属性数组 Field[] fields = classTemp.getDeclaredFields(); while(rs.next()){//对每一条记录进行操作 Object obj = classTemp.newInstance();//构造业务对象实体 //将每一个字段取出进行赋值 for(int i = 1;i<=colCount;i++){ Object value = rs.getObject(i);//每一格的值 //System.out.println(value); //寻找该列对应的对象属性 for(int j=0;j<fields.length;j++){ Field f = fields[j];//Student类中属性名 //如果匹配进行赋值 // System.out.println(f.getName()); if(f.getName().equalsIgnoreCase(rsmd.getColumnName(i))){//当类中的属性名和数据库中的列名一致时对该列赋值 boolean flag = f.isAccessible(); f.setAccessible(true); f.set(obj, value); f.setAccessible(flag); } } } list.add(obj); }//以map形式储存结果集// while(rs.next()){// Map rowData = new HashMap();// for (int i = 1; i <= colCount; i++) {// rowData.put(rsmd.getColumnName(i), rs.getObject(i));// }// list.add(rowData);// } return list; }}
得到结果集并输出
3.result.java
import java.sql.*;import java.util.List;public class result { public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, ClassNotFoundException { Connection conn = DBUtil.getSQLConnection("192.168.223.1", "admin", "123123", "TEST");//连接数据库 以个人情况而定 ResultSet rs = null; PreparedStatement psmt = null; try { psmt = conn.prepareStatement("select * from 学生信息表"); rs = psmt.executeQuery(); List list = DBUtil.populate(rs, Student.class); for (int i = 0; i < list.size(); i++) { Student per = (Student) list.get(i); System.out.println("student:sno = " + per.getsno() + " name = " + per.getName() + " sex = " + per.getsex()); //System.out.println(list.get(i));//map结果集 } } catch (SQLException e) { e.printStackTrace(); } }}
4.实现结果
感谢你能够认真阅读完这篇文章,希望小编分享的“sqlserver和java如何将resultSet中的记录转换为学生对象”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!