JDBC(九)DatabaseMetaData 数据库元数据

通过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();}}
}复制代码

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

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

相关文章

C++多线程(一)

C多线程&#xff08;一&#xff09; WIN 多线程API一 简单实例比较简单的代码&#xff0c;创建10个线程&#xff0c;其中使第4个线程在一创建就挂起&#xff0c;等到其他的线程执行的差不多的时候再使第4个线程恢复执行。#include <stdio.h>#include <stdlib.h>#i…

HALCON示例程序measure_ball_bond.hdev电路板焊点位置测量

HALCON示例程序measure_ball_bond.hdev电路板焊点位置测量 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () FileName : ‘bonds/ball_bond_ccd_’ read_image (Image, FileName 1$‘02’) dev_open_window_fit_imag…

rank()over 函数的使用

1. over()是分析函数&#xff0c;可以和rank()函数配合使用&#xff0c;也可以和其他函数配合使用。取每个学科排名前三的分数&#xff0c;sql语句如下&#xff1a; select * from (select rank() over(partition by subject order by mark desc) rk,S.* from S) T where T.rk&…

天梯赛2016-L2

L2-001. 紧急救援 作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xff0c;你…

伺服系统控制网络的重要性! 现场总线的重要性! SSCNET运动控制系统与发展趋势

引言&#xff1a;在2010年的时候&#xff0c;在北京的一个数控公司工作。产品采用的是通过运动控制卡发脉冲的方式&#xff0c;控制机床的X、Y、Z轴进行加工。 机床在加工产品的时候&#xff0c;一直存在着精度的问题&#xff0c;例如DMG的机床可以达到0.01的加工精度&#x…

apache配置

wamp环境安装需要VC运行库的支持 apache如果需要外网访问&#xff0c;在其配置文件中寻找127.0.0.1然后替换为all 外网访问需要关闭防火墙&#xff1f;转载于:https://www.cnblogs.com/gremlin/p/5581486.html

TCP/IP 通信示例

TCP/IP 通信示例 Global String ReadData_P_All$, ReadData_P$(10), data$ Global Preserve Double x Global Integer foundnumber_PFunction TCPServerSetNet #201, "192.168.0.1", 4000, CRLF, NONE, 0OpenNet #201 As ClientWaitNet #201Print "TCP Connect…

MySQL分库分表总结参考

单库单表 单库单表是最常见的数据库设计&#xff0c;例如&#xff0c;有一张用户(user)表放在数据库db中&#xff0c;所有的用户都可以在db库中的user表中查到。 单库多表 随着用户数量的增加&#xff0c;user表的数据量会越来越大&#xff0c;当数据量达到一定程度的时候对u…

小兔伴伴家庭动物园AR智能早教产品上市

2016年6月&#xff0c;经过乐卓大家庭所有人的共同努力&#xff0c;公司旗下首款新品——小兔伴伴之《家庭动物园》3D智能学习卡正式面世。 每个孩子都应该在合适的时间去体验丰富的声音、色彩和动作&#xff0c;《家庭动物园》&#xff0c;专为2-6岁儿童贴心设计&#xff0c;是…

EPSON 自带CCD图像处理包使用举例

EPSON 机器人可以购买CCD图像处理包选项&#xff0c;CCD图像处理包与SPEL语言高度结合&#xff0c;可以非常快的将项目投入应用&#xff0c;举例说明CCD图像处理包与SPEL的联合使用。 EPSON 以视觉序列定义图像处理的一个项目&#xff0c;视觉序列是一组按照特定顺序排列的视觉…

索引使用原则

前两篇文章我总结了一些SQL数据库索引的问题&#xff0c;这篇主要来分析下索引的优缼点&#xff0c;以及如何正确使用索引。 索引的优点&#xff1a;这个显而易见&#xff0c;正确的索引会大大提高数据查询&#xff0c;对结果进行排序、分组的操作效率。 索引的缺点…

根据时间变换页面背景

1.概述 有些时侯为了丰富页面的显示效果&#xff0c;将页面制作成根据时间变换页面背景的样式&#xff0c;这样会使浏览者对此网站不会感觉厌倦&#xff0c;同时也会觉得网站制作的非常新颖。本实例通过Date对象的getHours()方法获得当前系统时间的小时&#xff0c;然后根据不同…

EPSON 自带CCD图像处理包的典型应用框架

EPSON 自带CCD图像处理包的典型应用框架 Function main ******************************************** Very important statement below: Use the * //非常重要的是在实际运行时&#xff0c;用合适的Z数值代替预定义的 ZHeight 。Z height which you wrote down earlier in *…

EPSON 利用CCD图像处理包标定工具坐标系

EPSON 利用CCD图像处理包标定工具坐标系 仰视式安装的相机可以用来计算工具偏移&#xff0c;下例使用仰视式相机来计算工具偏移。该功能首先运行一个序列来定位工具的尖端。然后计算出工具偏移&#xff08;前提是CCD已标定&#xff09;。 Function CalcTool Boolean foundReal…

挂马方式研究、挂马检测技术研究

1. 挂马定义 所谓的挂马&#xff0c;就是黑客通过各种手段&#xff0c;包括SQL注入&#xff0c;网站敏感文件扫描&#xff0c;服务器漏洞&#xff0c;网站程序0day, 等各种方法获得网站管理员账号&#xff0c;然后登陆网站后台&#xff0c;通过数据库"备份/恢复"或者…

大幅面多相机高精度定位及测量解决方案

随着机器视觉应用的日益广泛&#xff0c;大幅面多相机视觉系统的需求越来越多&#xff0c;主要应用方向为大幅面高精度的定位与测量和场景拼接等。多相机视觉系统的难点在于多相机坐标系的统一&#xff0c;可以分为两类&#xff0c;一是相机视野间无重叠部分&#xff0c;二是相…

Hadoop 使用FileSystem API 读取数据

代码&#xff1a; package com.hadoop;import java.io.IOException; import java.io.InputStream; import java.net.URI;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.…

EPSON 机器人多任务下的互锁处理

在很多时候&#xff0c;有多个任务具有动作命令指令。为了防止多个任务运行动作命令时&#xff0c;对仅有的一个机器人产生的控制冲突&#xff0c;有必要进行连锁处理。一个任务进行机器人控制时&#xff0c;另一个任务则会等待控制权。这样&#xff0c;各任务就可以完全按照预…

mysql高可用方案MHA介绍

mysql高可用方案MHA介绍概述MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案&#xff0c;来保证数据库系统的高可用.在宕机的时间内&#xff08;通常10—30秒内&#xff09;&#xff0c;完成故障切换&#xff0c;部署MHA&#xff0c;可避免主从一致性问题&#xff0c;节…