iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中ResultSetMetaData元数据的具体使用
  • 149
分享到

Java中ResultSetMetaData元数据的具体使用

ResultSetMetaData元数据JavaResultSetMetaData 2023-05-17 17:05:37 149人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 前言2. 常用方法介绍3. 代码演示4. 结果图(一部分)5. 源码1. 前言 ResultSetMetaData 叫元数据,是数据库 列对象,以列为单位封装为对象。 元数

1. 前言

ResultSetMetaData 叫元数据,是数据库 列对象,以列为单位封装为对象

元数据,指的是其包含列名,列值,列类型,列长度等等有用信息

2. 常用方法介绍

ResultSetMetaData 常用方法:

1).  metaData.getColumnName(i)         获取该列的原始名字
2).  metaData.getColumnLabel(i)        获取该列的别名
3).  metaData.getColumnClassName(i)    获取该列的(在java中的)数据类型
4).  metaData.getColumnType(i)         获取该列的(在数据库中的)数据类型对应的序号
5).  metaData.getColumnTypeName(i)     获取该列的(在数据库中的)数据类型
6).  metaData.getScale(i)              获取该列中小数点右边的位数
7).  metaData.getColumnDisplaySize(i)  获取该列的长度
8).  metaData.isAutoIncrement(i)       判断该列的值是否自动递增
9).  metaData.isNullable(i)            判断该列的值是否为null
10).  metaData.getTableName(i)          获取表名

3. 代码演示

先准备好一张表,如下图:

代码:

public class Test {

    private static final String URL = "jdbc:Mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8";
    private static final String USERNAME = "root";
    private static final String PASSWord = "root";

    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        // sql 语句 是使用了 别名的
        PreparedStatement preparedStatement = connection.prepareStatement("select id as ID, username as USERNAME, birthday as BIRTHDAY, sex as SEX, address as ADDRESS, money as MONEY  from user ");
        ResultSet resultSet = preparedStatement.executeQuery();
        // 获取元数据对象
        ResultSetMetaData metaData = resultSet.getMetaData();
        // 获取一共有多少列
        int columnCount = metaData.getColumnCount();
        // 将数据封装为Map
        List<Map<String, Object>> list = new ArrayList<>();
        while (resultSet.next()) {
            Map<String, Object> columnMap = new HashMap<>();
            // 注:列名的索引 起始是 1 不是 0
            for (int i = 1; i <= columnCount; i++) {
                System.out.println("getColumnName(i): " + metaData.getColumnName(i));
                System.out.println("getColumnLabel(i): " + metaData.getColumnLabel(i));
                System.out.println("getColumnClassName(i): " + metaData.getColumnClassName(i));
                System.out.println("getColumnType(i): " + metaData.getColumnType(i));
                System.out.println("getColumnTypeName(i): " + metaData.getColumnTypeName(i));
                System.out.println("getScale(i): " + metaData.getScale(i));
                System.out.println("isNullable(i): " + metaData.isNullable(i));
                System.out.println("isAutoIncrement(i): " + metaData.isAutoIncrement(i));
                System.out.println("getTableName(i): " + metaData.getTableName(i));
                System.out.println();

                String key = metaData.getColumnName(i);
                Object value = resultSet.getObject(key);
                columnMap.put(key, value);
            }
            list.add(columnMap);
        }
        System.out.println();
        System.out.println(list);
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }
}

4. 结果图(一部分)

getColumnName(i): id
getColumnLabel(i): ID
getColumnClassName(i): java.lang.Integer
getColumnType(i): 4
getColumnTypeName(i): INT
getScale(i): 0
isNullable(i): 0
isAutoIncrement(i): true   // id 自增 因此为true
getTableName(i): user

getColumnName(i): username
getColumnLabel(i): USERNAME
getColumnClassName(i): java.lang.String
getColumnType(i): 12
getColumnTypeName(i): VARCHAR
getScale(i): 0
isNullable(i): 0
isAutoIncrement(i): false
getTableName(i): user

getColumnName(i): birthday
getColumnLabel(i): BIRTHDAY
getColumnClassName(i): java.time.LocalDateTime
getColumnType(i): 93
getColumnTypeName(i): DATETIME
getScale(i): 0
isNullable(i): 1
isAutoIncrement(i): false
getTableName(i): user

getColumnName(i): sex
getColumnLabel(i): SEX
getColumnClassName(i): java.lang.String
getColumnType(i): 1
getColumnTypeName(i): CHAR
getScale(i): 0
isNullable(i): 1
isAutoIncrement(i): false
getTableName(i): user

getColumnName(i): address
getColumnLabel(i): ADDRESS
getColumnClassName(i): java.lang.String
getColumnType(i): 12
getColumnTypeName(i): VARCHAR
getScale(i): 0
isNullable(i): 1
isAutoIncrement(i): false
getTableName(i): user

getColumnName(i): money
getColumnLabel(i): MONEY
getColumnClassName(i): java.math.BigDecimal
getColumnType(i): 3
getColumnTypeName(i): DECIMAL
getScale(i): 3     // 在数据库中该列值是 decimal 且是3位小数 因此得出 3
isNullable(i): 1
isAutoIncrement(i): false
getTableName(i): user

list:结果:
[
{birthday=2021-02-27T17:47:08, address=北京, money=10.580, sex=男, id=41, username=老王}, 
{birthday=2021-03-02T15:09:37, address=北京, money=10.580, sex=女, id=42, username=小二王}, 
{birthday=2021-03-04T11:34:34, address=北京, money=10.580, sex=女, id=43, username=小二王}, 
{birthday=2021-03-04T12:04:06, address=北京, money=10.580, sex=男, id=45, username=大王}, 
{birthday=2021-03-07T17:37:26, address=北京, money=10.580, sex=男, id=46, username=老王}, 
{birthday=2021-03-08T11:44, address=北京, money=10.580, sex=女, id=48, username=小马}, 
{birthday=null, address=null, money=null, sex=男, id=50, username=kkooop}
]

5. 源码

https://gitee.com/LGold/learning/tree/df1887c456aa4a140839104de0408f9dedb67ca4/src/main/java/com/king/learning/ResultSetMetaData

到此这篇关于Java中ResultSetMetaData 元数据的具体使用的文章就介绍到这了,更多相关ResultSetMetaData 元数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java中ResultSetMetaData元数据的具体使用

本文链接: https://www.lsjlt.com/news/211393.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中ResultSetMetaData元数据的具体使用
    目录1. 前言2. 常用方法介绍3. 代码演示4. 结果图(一部分)5. 源码1. 前言 ResultSetMetaData 叫元数据,是数据库 列对象,以列为单位封装为对象。 元数...
    99+
    2023-05-17
    ResultSetMetaData 元数据 Java ResultSetMetaData
  • java中Thread.sleep()的具体使用
    目录sleep功能介绍:sleep Thread.sleep()被用来暂停当前线程的执行,会通知线程调度器把当前线程在指定的时间周期内置为wait状态。当wait时间结束,线程状态重...
    99+
    2023-05-17
    java Thread.sleep
  • python具名元组(namedtuple)的具体使用
    目录具名元组元组操作属性排序与字典比较数据类dataclass修饰继承NamedTuplecollections.namedtuple用于构造带字段名的元组。对应类型为typing....
    99+
    2023-03-21
    python具名元组
  • java中的DateTime的具体使用
    目录1.初始化时间2.按格式输出时间(将DateTime格式转换为字符串)3.将字符串转换为DateTime格式4.取得当前时间5.计算两个日期间隔的天数6.增加日期7.减少日期8....
    99+
    2022-11-13
  • Java访问数据库的具体步:
    本篇内容介绍了“Java访问数据库的具体步:”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一:Java访问...
    99+
    2022-10-18
  • python数据类(dataclass)的具体使用
    目录数据类定义装饰器field初始化数据比较后处理dataclasses方法Python3.7引入了dataclass。dataclass装饰器可以声明Python类为数据类;数据类...
    99+
    2023-03-21
    python 数据类
  • 数据结构之堆的具体使用
    目录堆的概念及结构定义堆堆的初始化插入数据判空删除堆顶的数据获取堆顶数据获取元素个数打印销毁堆Topk问题代码总结堆的概念及结构 定义堆 实现堆的功能首先要定义堆的结构体 typ...
    99+
    2022-11-13
  • Java中LocalDateTime的具体用法
    目录一.背景二.简介 三.实战3.1 LocalDate的创建与使用3.2 LocalTime的创建与使用3.3 LocalDateTime的创建与使用一.背景 本文主要介...
    99+
    2023-01-15
    Java LocalDateTime
  • Pandas中describe()函数的具体使用
    先附上官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describ...
    99+
    2023-01-17
    Pandas describe() Pandas describe
  • tensorflow中Dense函数的具体使用
    目录1 作用2 例子3 与torch.nn.Linear的区别4 参考文献1 作用 注意此处Tensorflow版本是2.0+。由于本人是Pytorch用户,对Tensorflow不...
    99+
    2023-03-02
    tensorflow Dense函数
  • python中networkx函数的具体使用
    目录1. 介绍1.1 前言1.2 图的类型(Graph Types)1.3 常用方法2. 代码示例1. 介绍 1.1 前言 NetworkX是复杂网络研究领域中的常用Python包。...
    99+
    2023-02-14
    python networkx使用 python networkx
  • C++中delete函数的具体使用
    在C++中delete函数用于回收new分配的内存空间。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间...
    99+
    2023-03-09
    C++ delete函数 C++ delete
  • Java计时器工具StopWatch的具体使用
    目录前言Spring StopWatch实践例子源码分析lang3 StopWatch总结前言 平常,我们想要统计某一段代码块,或某一个方法的执行时间,最简单的是采用如下的方式。 ...
    99+
    2022-11-13
  • pandas数据类型之Series的具体使用
    目录Series类型Series的三种创建方式通过数组创建Series创建指定索引列的Series使用字典创建标量创建Series对象Series的常见操作Series的值访问访问整...
    99+
    2022-11-11
  • Java的invoke方法的具体使用
    如果读一些Java或者相关框架的源码,实际上一定会经常出现invoke方法的调用,在自己或者团队封装框架时,如果有时候弄得不好经常也会报invoke相关的错。 invoke方法是干什...
    99+
    2022-11-13
  • Java的jmap命令的具体使用
    目录jmap命令简介jmap命令参数-heap-histo[:live]-clstats-finalizerinfo-dump:[live,]format=b,file=-F-h 和...
    99+
    2022-11-13
  • Python中的axis参数的具体使用
    目录一、axis简介二、不一样的axis对于axis=0三、总结补充:python中某些函数axis参数的理解 在我们使用Python中的Numpy和Pandas进行数据分析的时候,...
    99+
    2022-11-12
  • pythonre.match函数的具体使用
    目录1 re.match 说明2 span 的使用3 group 的使用4 匹配不到内容的情况5 使用group 注意点6 flag 的使用1 re.match 说明 re.matc...
    99+
    2023-02-13
    python re.match
  • np.concatenate()函数的具体使用
    目录引言函数调用调用方法各个参数的意义注意事项示例1------一维数组示例2------二维数组示例3------三维数组引言 提到 numpy 的数组操作,我们就不得不说到 np...
    99+
    2023-03-13
    np.concatenate()函数
  • np.newaxis()函数的具体使用
    np.newaxis np.newaxis 的功能是增加新的维度,但是要注意 np.newaxis 放的位置不同,产生的矩阵形状也不同。 通常按照如下规则: np.newaxis 放...
    99+
    2023-03-13
    np.newaxis使用 np.newaxis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作