JDBC------之结果集元数据的操作01

在结果集中,有修饰于结果集的数据,举个例子:

String name ="迎风少年";

在上面的一行语句中我们可以理解为String 和 name是"迎风少年"的元数据,因为他们的存在是为了修饰"迎风少年"而存在的。

 

那么我们看一下结果集(查询结果):

 

 所以第一行的列名其实是属于结果集元数据的。

Resultset结果集可以使用方法getMetaData();来获得元数据对象,接下来我们通过编写查询student表的通用方法对元数据进行讲解:

代码如下:

 

package com.itheima.hui;
import com.itheima.hui.beans.Student;
import com.itheima.hui.utils.JDBCUtils;
import java.lang.reflect.Field;
import java.sql.*;

public class JDBCSelectTheSame {
    public static void main(String[] args) {
        String sql="select * from student where id=?";
        Object o = JDBCSelectTheSame.JDBCSelect(sql, 4);
        System.out.println(o);

    }
    //创建JDBC查询功能的通用方法

    public static Object JDBCSelect(String sql, Object... args) {
        Connection connect = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        Student student = null;
        //获取连接对象
        try {
            connect = JDBCUtils.getConnect();
            preparedStatement = connect.prepareStatement(sql);
            for (int i = 0; i < args.length; i++) {
                preparedStatement.setObject(i + 1, args[i]);
            }
            resultSet = preparedStatement.executeQuery();
            //获取结果元数据
            ResultSetMetaData metaData = resultSet.getMetaData();
            //根据结果元数据获得列数
            int columnCount = metaData.getColumnCount();
            if (resultSet.next()) {
                student = new Student();
                for (int i = 0; i < columnCount; i++) {
                    Object object = resultSet.getObject(i + 1);
                    //根据元数据获得当前列的列名
                    String columnName = metaData.getColumnName(i + 1);
                    //通过反射为student类的对应属性赋值
                    Class<Student> clazz = Student.class;
                    Field field = clazz.getDeclaredField(columnName);
                    field.setAccessible(true);
                    field.set(student, object);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(connect, preparedStatement, resultSet);
        }
        return student;

    }


}

 

我们可以通过元数据对象获得结果集中的数据的每一列的列名,一共有多少列等。

其中获得列名的方法是:String columnName = metaData.getColumnName(int index); 根据列的索引获得列名,索引起始值是1.

获得列的总数的方法是:int columnCount = metaData.getColumnCount();

 

posted @ 2020-10-19 14:51  Joker-0927  阅读(209)  评论(0编辑  收藏  举报
// 侧边栏目录