mysql 元数据

1.概述

数据库元数据(DatabaseMetaData):是由Connection对象通过getMetaData方法获取而来,主要封装了是对
数据库本身的一些整体综合信息,例如数据库的产品名称,数据库的版本号,数据库的URL,是否支持事务等等。
以下有一些关于DatabaseMetaData的常用方法:

  • getDatabaseProductName:获取数据库的产品名称
  • getDatabaseProductName:获取数据库的版本号
  • getUserName:获取数据库的用户名
  • getURL:获取数据库连接的URL
  • getDriverName:获取数据库的驱动名称
  • driverVersion:获取数据库的驱动版本号
  • isReadOnly:查看数据库是否只允许读操作
  • supportsTransactions:查看数据库是否支持事务

2.入门案例

(1)构建环境

 		<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency>

(2)获取数据库综合信息

public class DataBaseMetaDataTest {private Connection conn;@Beforepublic void init() throws Exception {Class.forName("com.mysql.jdbc.Driver");Properties props =new Properties();//设置连接属性,使得可获取到表的REMARK(备注)props.put("remarksReporting","true");props.put("user", "root");props.put("password", "111111");conn = java.sql.DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/?useUnicode=true&amp;characterEncoding=UTF8", props);}@Testpublic void testDatabaseMetaData() throws SQLException {//获取数据库元数据DatabaseMetaData dbMetaData =  conn.getMetaData();//获取数据库产品名称String productName = dbMetaData.getDatabaseProductName();System.out.println(productName);//获取数据库版本号String productVersion = dbMetaData.getDatabaseProductVersion();System.out.println(productVersion);//获取数据库用户名String userName = dbMetaData.getUserName();System.out.println(userName);//获取数据库连接URLString userUrl = dbMetaData.getURL();System.out.println(userUrl);//获取数据库驱动String driverName = dbMetaData.getDriverName();System.out.println(driverName);//获取数据库驱动版本号String driverVersion = dbMetaData.getDriverVersion();System.out.println(driverVersion);//查看数据库是否允许读操作boolean isReadOnly = dbMetaData.isReadOnly();System.out.println(isReadOnly);//查看数据库是否支持事务操作boolean supportsTransactions = dbMetaData.supportsTransactions();System.out.println(supportsTransactions);}
}

(3) 获取数据库列表

  @Testpublic void testFindAllCatalogs() throws Exception {//获取元数据DatabaseMetaData metaData = conn.getMetaData();//获取数据库列表ResultSet rs = metaData.getCatalogs();//遍历获取所有数据库表while(rs.next()){//打印数据库名称System.out.println(rs.getString(1));}//释放资源rs.close();conn.close();}

(4) 获取某数据库中的所有表信息

 @Testpublic void testFindAllTable() throws Exception{//获取元数据DatabaseMetaData metaData = conn.getMetaData();//获取所有的数据库表信息ResultSet tablers = metaData.getTables("ihrm", "", "bs_user", new String[]
{"TABLE"});//拼装tablewhile(tablers.next()) {//所属数据库System.out.println(tablers.getString(1));//所属schemaSystem.out.println(tablers.getString(2));//表名System.out.println(tablers.getString(3));//数据库表类型System.out.println(tablers.getString(4));//数据库表备注System.out.println(tablers.getString(5));}}

3.参数元数据

参数元数据(ParameterMetaData):是由PreparedStatement对象通过getParameterMetaData方法获取而
来,主要是针对PreparedStatement对象和其预编译的SQL命令语句提供一些信息,ParameterMetaData能提供
占位符参数的个数,获取指定位置占位符的SQL类型等等
以下有一些关于ParameterMetaData的常用方法:

  • getParameterCount:获取预编译SQL语句中占位符参数的个数
 @Testpublic void test() throws Exception {String sql = "select * from bs_user where id=?";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1, "1063705482939731968");//获取ParameterMetaData对象ParameterMetaData paramMetaData = pstmt.getParameterMetaData();//获取参数个数int paramCount = paramMetaData.getParameterCount();System.out.println(paramCount);}

4.结果集元数据

结果集元数据(ResultSetMetaData):是由ResultSet对象通过getMetaData方法获取而来,主要是针对由数据
库执行的SQL脚本命令获取的结果集对象ResultSet中提供的一些信息,比如结果集中的列数、指定列的名称、指定
列的SQL类型等等,可以说这个是对于框架来说非常重要的一个对象。
以下有一些关于ResultSetMetaData的常用方法:

  • getColumnCount:获取结果集中列项目的个数
  • getColumnType:获取指定列的SQL类型对应于Java中Types类的字段
  • getColumnTypeName:获取指定列的SQL类型
  • getClassName:获取指定列SQL类型对应于Java中的类型(包名加类名)
  @Testpublic void test() throws Exception {String sql = "select * from bs_user where id=?";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1, "1063705482939731968");//执行sql语句ResultSet rs = pstmt.executeQuery() ;//获取ResultSetMetaData对象ResultSetMetaData metaData = rs.getMetaData();//获取查询字段数量int columnCount = metaData.getColumnCount() ;for (int i=1;i<=columnCount;i++) {//获取表名称String columnName = metaData.getColumnName(i);//获取java类型String columnClassName = metaData.getColumnClassName(i);//获取sql类型String columnTypeName = metaData.getColumnTypeName(i);System.out.println(columnName);System.out.println(columnClassName);System.out.println(columnTypeName);}System.out.println(columnCount);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用OBS Browser+访问华为云OBS存储【Windows】

背景 项目中使用华为云 S3 存储,java 代码中通过华为云 OBS 提供的esdk-obs-java 来访问文件。 但是,通过 JAVA SDK 方式不太方便运维,所以我们需要一款可视化的客户端软件。 华为云 OBS 自身也提供了一款客户端软件,名为 OBS Browser+。 OBS Browser+简介 OBS Browse…

摩托车商家做展示预约小程序的作用

摩托车与电动车是人们短距离出行的主要工具&#xff0c;而其使用寿命一般是3年左右及以上、一家可能有多个&#xff0c;市场人群庞大且复购属性强&#xff0c;所以其经营商家也非常多。 如今互联网深入&#xff0c;在品牌宣传、客户获取、信息承载、营销等方面需要车辆经营商家…

网络取证-Tomcat-简单

题干&#xff1a; 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况&#xff0c;团队捕获了网络流量进行分析。此 pcap 文件可能包含一系列恶意活动&#xff0c;这些活动已导致 Apache Tomcat Web 服务器遭到破坏。我们需要进一步调查这一…

若依笔记(四):代码生成器

已知使用MyBatisPlus代码生成器可以自动生成Entity、Mapper、Service、Controller代码&#xff0c;前提是数据库中有数据表&#xff0c;生成pojo类以及对于该数据表的增删改查命令的代码&#xff0c;若依更进一步能选择表后生成代码、预览、下载&#xff0c;同时可以生产前端代…

【equals比较方法 和 内部类】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言对象比较equals方法内部类实例内部类静态内部类总结 前言 对象比较equals方法 三种比较相等方法&#xff1a; 第一种&#xff0c;如果两侧是基本数据类型&…

使用 C# 在Word中插入图表

Word中的图表功能将数据可视化地呈现在文档中。这为展示数据和进行数据分析提供了一种方便且易于使用的工具&#xff0c;使作者能够以直观的方式传达信息。要通过C#代码来实现在Word中绘制图表&#xff0c;可以借助 Spire.Doc for .NET 控件&#xff0c;具体操作参考下文。 目录…

关于GLibC

查看使用的编译器依赖glibc库位置&#xff1a; gcc --print-file-namelibc.a gcc --print-file-namelibc.so

Qt扫盲-QFont理论总结

QFont 理论总结 一、概述二、使用三、字体匹配算法 一、概述 QFont类指定用于绘制文本的时候来描述字体的工具类。QFont可以看作是对系统上一个或多个字体的查询。 当我们创建QFont对象时&#xff0c;我们可以指定希望字体具有的各种属性。Qt将使用具有指定属性的字体&#x…

初学Redis简介以及入门

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这…

详解Java经典数据结构——HashMap

Java 的 HashMap 是一个常用的基于哈希表的数据结构&#xff0c;它实现了 Map 接口&#xff0c;可以存储键值对。下面我们进行详细介绍&#xff1a; 基本结构&#xff1a;HashMap 底层是基于哈希表来实现的&#xff0c;每次插入一个键值对时&#xff0c;会先对该键进行 Hash 运…

ARM传输数据以及移位操作

3.2.2 数据传送指令 LDR/STR指令用来在寄存器和内存之间输送数据。如果我们想要在寄存器之间传送数据&#xff0c;则可以使用MOV指令。MOV指令的格式如下。 MOV {cond} {s}Rd, oprand2 MOV {cond} {s}Rd, oprand2 其中&#xff0c;{cond}为条件指令可选项&#xff0c;{s}用来表…

Android Studio创建项目后Gradle(构建)项目很慢问题解决

Android Studio创建项目后Gradle(构建)项目很慢问题解决 在使用Android Studio创建项目时&#xff0c;会自动从网上下载相关依赖。由于是访问国外服务器&#xff0c;会出现构建项目时下载依赖很慢的问题。为了解决该问题&#xff0c;需要在settings.gradle(或者settings.gradl…

Android 交叉编译openssl 、libxml2静态库

openssl: Android下openssl编译和使用&#xff08;一&#xff09;_安卓编译openssl 交叉编译 for arch in armeabi-v7a arm64-v8a-CSDN博客 libxml2: LIBXML2 2.9.11 build for Android_libxml2 android静态库_fredhurui的博客-CSDN博客

EthernetIP主站转EtherCAT协议网关采集电力变压器的 Ethernet IP 数据

怎么通过捷米JM-EIPM-ECT网关把ABB电力变压器的 Ethernet IP 数据&#xff0c;连接到欧姆龙PLC上&#xff0c;通过plc去监控电力设备的数据呢&#xff0c;下面是介绍简单的连接方法&#xff0c;采集Ethernet IP从站数据和EtherCAT协议 1 &#xff0c;捷米JM-EIPM-ECT网关连接Et…

11.3 知识总结(jQuery入门)

一、 jQuery入门 1.1 介绍 jQuery是一个轻量级的、兼容多浏览器的JavaScript库。jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互&#xff0c;能够极大地简化JavaScript编程。它的宗旨就是&#xff1a;“Write less, do more.“ 1.2 优…

C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish

前言 今天给大家推荐一个C#开源且免费的能利用Windows通知栏背单词的软件&#xff0c;可以让你在上班、上课等恶劣环境下安全隐蔽地背单词&#xff08;利用摸鱼时间背单词的软件&#xff09;&#xff1a;ToastFish。 操作系统要求 目前该软件只支持Windows10及以上系统&…

纷享销客荣获最佳制造业数字营销服务商奖

2023年10月26日&#xff0c;第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家&#xff0c;共同探讨如何通过数字化转型赋能企业自身成长&#xff0c;实现信息化向数字化的升级转型。 在本次盛会上&#xff0c;纷享销客以其卓越的基本面、…

EasyFlash移植使用- 关于单片机 BootLoader和APP均使用的情况

目前&#xff0c;我的STM32单片机&#xff0c;需要在BootLoader和APP均移植使用EasyFlash&#xff0c;用于参数管理和IAP升级使用。 但是由于Flash和RAM限制&#xff0c;减少Flash占用&#xff0c;我规划如下&#xff1a; BootLoader中移植EasyFlash使用旧版本&#xff0c;因为…

centos7-lamp

目录 一、安装 1.关闭防火墙关闭selinux 2.安装apache 3.配置主页 二、部署mariadb&#xff08;mysql&#xff09; 1.用yum安装 2.启动数据库 3.看下端口是否listen 4登录mysql 5.修改下密码 三、安装php 1.安装依赖包 2.安装php解释器和php连接mysql驱动 3.配置…

GPT引发智能AI时代潮流

最近GPT概念爆火&#xff0c;许多行业开始竞相发展AI &#xff0c;工作就业也将面临跳转&#xff0c;目前测试就业形势就分为了两大类&#xff0c;一类是测试行业如功能、性能、自动化综合性人才就业技能需求&#xff0c;另一类便是AI测试行业的需求普遍增长&#xff0c;原本由…