这篇文章主要介绍了sqlserver和java如何将resultSet中的记录转换为学生对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
要将结果转化为对象,所以第一步要创建一个对象:
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; } }
创建返回结果集的方法
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; } /* * 将rs结果转换成对象列表 */ 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; } }
得到结果集并输出
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(); } } }
感谢你能够认真阅读完这篇文章,希望小编分享的“sqlserver和java如何将resultSet中的记录转换为学生对象”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。