zoukankan      html  css  js  c++  java
  • 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();

    迎风少年
  • 相关阅读:
    centos 7安装gitlab及使用
    jenkins配置自动执行sql脚本
    zabbix监控mysql主从同步
    linux服务器通过mailx邮件发送附件到指定邮箱
    监控pos收银机
    elk安装与配置
    zabbix实时监控mysql业务数据
    Build Eclipse plug-in for Hadoop
    io 一不小心 关闭不住的偶
    hdu 1059二进制优化背包问题
  • 原文地址:https://www.cnblogs.com/ZYH-coder0927/p/13840236.html
Copyright © 2011-2022 走看看