通过java.sql.DatabaseMetaData 接口,我们能获取到数据库的列表、列等信息。

DatabaseMetaData 接口包含了许多方法,这里值介绍常用的。

获取 DatabaseMetaData 实例对象

DatabaseMetaData databaseMetaData = connection.getMetaData();

获取数据库名和版本

int majorVersion = databaseMetaData.getDatabaseMajorVersion();

int minorVersion = databaseMetaData.getDatabaseMinorVersion();

String productName = databaseMetaData.getDatabaseProductName();

String productVersion = databaseMetaData.getDatabaseProductVersion();

数据库属性信息:5 6 MySQL 5.6.24

获取数据库驱动版本

int driverMajorVersion = databaseMetaData.getDriverMajorVersion();

int driverMinorVersion = databaseMetaData.getDriverMinorVersion();

获取数据库列表

String catalog = null;

String schemaPattern = null;

String tableNamePattern = null;

String[] types = null;

ResultSet result = databaseMetaData.getTables(

catalog, schemaPattern, tableNamePattern, types );

while(result.next()) {

String tableName = result.getString(3);

}

getTables()方法源码:

ResultSet getTables(String catalog, String schemaPattern,

String tableNamePattern, String types[]) throws SQLException;

我在这里给四个参数都赋值null,则它会把所有数据库中的表信息 返回。

此ResultSet包含10列,每列包含有关给定表的信息。 索引3指的是表名称。

user

在表中列出列

String catalog = null;

String schemaPattern = null;

String tableNamePattern = "user";

String columnNamePattern = null;

ResultSet result = databaseMetaData.getColumns(

catalog, schemaPattern, tableNamePattern, columnNamePattern);

while(result.next()){

String columnName = result.getString(4);

int columnType = result.getInt(5);

}

getColumns()方法返回的ResultSet包含给定表的列的列表。 索引为4的列包含列名称,索引为5的列包含列类型。 列类型是一个与java.sql.Types中的类型常量匹配的整数。

id 4

username 12

birthday 91

sex 1

address 12

表的主键

String catalog = null;

String schema = null;

String tableName = "user";

ResultSet result = databaseMetaData.getPrimaryKeys(

catalog, schema, tableName);

while(result.next()){

String columnName = result.getString(4);

}

调用getPrimaryKeys()方法,向其传递3个参数。 在这个例子中,只有tableName是非空的。

getPrimaryKeys()方法返回的ResultSet包含组成给定表主键的列表。 索引4指的是的列名称。

主键可以由多个列组成。 这样的密钥被称为复合密钥。 如果表包含复合键,则ResultSet将包含多行。 复合键中的每一列都有一行。

id

全部代码

package com.jdbc;

import java.sql.*;

/**

* Created by Fant.J.

* 2018/3/5 21:38

*/

public class DatabaseMetaDataTest {

public static void main(String[] args) {

String url = "jdbc:mysql://localhost:3306/user";

String user = "root";

String password = "root";

Connection connection =null;

try {

Class.forName("com.mysql.jdbc.Driver");

connection = DriverManager.getConnection(url,user,password);

DatabaseMetaData databaseMetaData = connection.getMetaData();

int majorVersion = databaseMetaData.getDatabaseMajorVersion();

int minorVersion = databaseMetaData.getDatabaseMinorVersion();

String productName = databaseMetaData.getDatabaseProductName();

String productVersion = databaseMetaData.getDatabaseProductVersion();

System.out.println("数据库属性信息:"+majorVersion+" "+minorVersion+" "+productName+" "+productVersion);

int driverMajorVersion = databaseMetaData.getDriverMajorVersion();

int driverMinorVersion = databaseMetaData.getDriverMinorVersion();

System.out.println("驱动信息:"+driverMajorVersion+" "+driverMinorVersion);

/* String catalog = null;

String schemaPattern = null;

String tableNamePattern = null;

String[] types = null;

ResultSet result = databaseMetaData.getTables(

catalog, schemaPattern, tableNamePattern, types );

while(result.next()) {

String tableName = result.getString(3);

System.out.println(tableName);

}*/

/* String catalog = null;

String schemaPattern = null;

String tableNamePattern = "user";

String columnNamePattern = null;

ResultSet result = databaseMetaData.getColumns(

catalog, schemaPattern, tableNamePattern, columnNamePattern);

while(result.next()){

String columnName = result.getString(4);

int columnType = result.getInt(5);

System.out.println(columnName+" "+columnType+" ");

}*/

String catalog = null;

String schema = null;

String tableName = "user";

ResultSet result = databaseMetaData.getPrimaryKeys(

catalog, schema, tableName);

while(result.next()){

String columnName = result.getString(4);

System.out.println(columnName);

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

mysql中jdbc的metadata_JDBC(九)DatabaseMetaData 数据库元数据相关推荐

  1. mysql中jdbc的metadata_JDBC元数据操作——DatabaseMetaData接口详解

    在JDBC技术规范中,提供了Connection,Statement,ResultSet这三个开发过程中经常用到的接口.针对与每个接口,JDBC规范提供了相应的接口描述对象,也就是xxxMetaDat ...

  2. JDBC(九)DatabaseMetaData 数据库元数据

    通过java.sql.DatabaseMetaData 接口,我们能获取到数据库的列表.列等信息. DatabaseMetaData 接口包含了许多方法,这里值介绍常用的. ###获取 Databas ...

  3. mysql驱动maven_IDEA用Maven连接MySQL的jdbc驱动,并操作数据库

    1.在IDEA里创建Maven项目 1.1.点击Create New Project 1.2.选择Maven,JDK这里用的是1.8,点击Next 1.3.填入"组织名".&quo ...

  4. mysql.cj.jdbc.Driver报错或者数据库Nullpointer报错

    有时候数据代码怎么看都是正确的但是往数据库里面插入数据的时候会报错很长很长,那么很有可能就是数据连接驱动版本和你的数据库版本不匹配问题. 问题1 Loading classcom.mysql.jdbc ...

  5. mysql中查询一个字段属于哪一个数据库中的哪一个表的方式

    mysql中查询一个字段具体是属于哪一个数据库的那一张表:用这条语句就能查询出来,其中 table_schema 是所在库, table_name 是所在表 --mysql中查询某一个字段名属于哪一个 ...

  6. mysql中employees的意思_MySQL 示例数据库 employees 详解

    [引子] IT这一行在我看来是比较要求动手能力的,但是人非生而知之:人们身上的技能除了一些本能之外,大多都是通过学习而得到的. 前一段时间一直在整理素材,写一个关于explain 的系列文章:在一开始 ...

  7. Mysql中查询当前用户、当前数据库等基础信息

    文章目录 前言 数据库基础信息查询 查询当前操作的用户 查询当前操作的数据库 查询当前数据库端口 查询当前数据库版本 数据库结构信息查询 查询当前数据库中的所有表 查询创建表的sql语句 查询指定表中 ...

  8. 在MySQL中如何用SQL命令创建数据库及数据表

    HRELLO 大家好! 上期给大家讲解了,MySQL数据库常用的管理命令.现在,给大家讲解,如何用SQL命令在MySQL中创建一个数据库及数据表. 在学习前,我们首先要了解,SQL命令是什么? SQL ...

  9. mysql中的复制(配置主从数据库)

    一般使用MySQL的时候,如果数据量不大,我们都使用一台MySQL服务器,备份的时候使用mysqldump工具就可以了,但是随着业务不断发展,问题出现了: 首先:数据量往往直线上升,单独一台数据库服务 ...

最新文章

  1. 【PC工具】常用USB转串口芯片CH340G,更新驱动安装有可能遇到的问题及解决办法...
  2. 神经网络的输出层有哪些_神经网络算法—总结篇
  3. Python成长笔记 - 基础篇 (六)python模块
  4. ASP.NET Core MVC 配置全局路由前缀
  5. 获取系统信息2——linux中使用随机数
  6. javascript打开模式窗口的用法
  7. ZYNQ 调试遇到的种种问题汇总[转帖]
  8. 小米Android版本不不一致,小米5s卡刷包android版本不一致怎么解决
  9. GitHub创建token
  10. i3处理器_千元英特尔10代I3处理器套装跑分72万?微星差异化赢得市场
  11. 梁冬一席演讲:人生的最高境界是“不二”
  12. flash as3_vinson_01:绘制扇形
  13. 后序线索化二叉树及遍历(图解)
  14. 嵌入式Linux开发-uboot常用命令介绍(上篇)
  15. kodi remote android,使用Android和iOS在Win10系统中设置Kodi Remote方法
  16. docker创建容器相关命令【详细版】
  17. python利用有道翻译做一个实时翻译软件
  18. hue ensure called on an unitialized
  19. 国标28181:接收设备注册
  20. Qt获取本机IP、MAC地址、子网掩码、网卡名等函数设计

热门文章

  1. 转载:逻辑思维提升表达
  2. Matlab 基于svm的图像物体分类
  3. 邵阳学院计算机科学与技术专业分最低,邵阳学院在湖南各专业录取最低分/最低位次...
  4. [云炬创业管理笔记]第二章成为创业者讨论2
  5. 云炬Qtpy5开发与实战笔记 0搭建开发环境(傻瓜式安装)
  6. 云炬Android开发笔记 5-9,10拦截器功能设计与实现
  7. 人类一败涂地电脑版_【游戏资讯】这是PC版塞尔达?终极无敌暴力缝合怪登陆Steam!PS3模拟器更新后可流畅运行美末!...
  8. 混合模型的推荐算法(ACM暑校-案例学习)
  9. go语言中fallthrough与break的使用
  10. 递归函数反向显示单链表