利用元数据编写查询的通用方法

本文介绍了如何利用JDBC的元数据和反射技术编写一个通用的查询方法,以查询任何类的对象。通过获取ResultSetMetaData对象,可以获取结果集的列信息,然后使用反射将查询结果映射到对应的Java对象上,实现了对未知数据库的通用查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、获取JDBC元数据
     现在在本地数据库中有一个表如下图所示
     现在我们想要查询该表中的某一元组,则查询到的元组可以当作是一个对象,所以有以下Student类对象以及提供数据库相应操作的类JDBCTools:
JDBCTools中有静态的方法release()用来释放数据库连接,以及getConnection()方法用来建立数据库的连接,相应的Student类中除了属性与构造方法之外还有get与set方法以及toString()方法,由于代码有点多,此处就省略了。
public class Student {
       public int FlowID;//流水号
       public String Type;//考试类型
       public String IDcard;//身份证号
       public String Examcard;//准考证号码
       public String StudentName;//学生姓名
       public String Location;//区域
       public int Grade;//成绩
       public Student(int flowID, String type, String iDcard, String examcard, String studentName, String location,
                    int grade) {
             super();
             FlowID = flowID;
             Type = type;
             IDcard = iDcard;
             Examcard = examcard;
             StudentName = studentName;
             Location = location;
             Grade = grade;
       }
//这里省略其余的方法。。。
}
则想要获取表中的某一元组,原始的方法如下:
public Student getStudent(String sql,Object ... args){//返回学生对象
             Student stu = null;
             Connection con = null;
             PreparedStatement ps = null;
             ResultSet rs = null;
             try {
                    con = jdbcTools.getConnection();
                    ps = con.prepareStatement(sql);
                    for(int i = 0 ; i < args.length ; ++i){
                           ps.setObject(i + 1,args[i]);
                    }
                    rs = ps.executeQuery();
                    if(rs.next()){
                           stu = new Student();
                                        stu.setFlowID(rs.getInt(1));
                                        stu.setTy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值