首先是DatabaseMetaData接口:
public static void main(String[] args) {
//这里没有指定数据库
String url = "jdbc:mysql://127.0.0.1:3306/";
String user = "root";
String pass = "";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url, user, pass);
DatabaseMetaData metadata = conn.getMetaData();
System.out.println("数据库已知的用户: "+ metadata.getUserName());
System.out.println("数据库的系统函数的逗号分隔列表: "+ metadata.getSystemFunctions());
System.out.println("数据库的时间和日期函数的逗号分隔列表: "+ metadata.getTimeDateFunctions());
System.out.println("数据库的字符串函数的逗号分隔列表: "+ metadata.getStringFunctions());
System.out.println("数据库供应商用于 'schema' 的首选术语: "+ metadata.getSchemaTerm());
System.out.println("数据库URL: " + metadata.getURL());
System.out.println("是否允许只读:" + metadata.isReadOnly());
System.out.println("数据库的产品名称:" + metadata.getDatabaseProductName());
System.out.println("数据库的版本:" + metadata.getDatabaseProductVersion());
System.out.println("驱动程序的名称:" + metadata.getDriverName());
System.out.println("驱动程序的版本:" + metadata.getDriverVersion());
System.out.println();
System.out.println("数据库中使用的表类型");
ResultSet rs = metadata.getTableTypes();
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
System.out.println();
/**
* 获取指定的数据库的所有表的类型,getTables()的第一个参数就是数据库名
* 因为与MySQL连接时没有指定,这里加上,剩下的参数就可以为null了
* 第二个参数是模式名称的模式,但是输出也是什么都没有。谁知道告诉我一声
*/
System.out.println("获取指定的数据库的所有表的类型");
ResultSet rs1 = metadata.getTables("ssi2bbs", null, null, null);
while (rs1.next()) {
System.out.println();
System.out.println("数据库名:"+ rs1.getString(1));
System.out.println("表名: "+rs1.getString(3));
System.out.println("类型: "+rs1.getString(4));
}
rs1.close();
System.out.println();
System.out.println("获取指定的数据库的表的主键");
//获取指定的数据库的表的主键,第二个参数也是模式名称的模式,使用null了
ResultSet rs2 = metadata.getPrimaryKeys("mysql", null, "db");
while (rs2.next()) {
System.out.println("主键名称: "+ rs2.getString(4));
}
rs2.close();
System.out.println();
System.out.println("DatabaseMetaData.getIndexInfo()方法返回信息:");
ResultSet rs3 = metadata.getIndexInfo("ssi2bbs", null, "user", false, true);
while (rs3.next()) {
System.out.println("数据库名: "+ rs3.getString(1));
System.out.println("表模式: "+ rs3.getString(2));
System.out.println("表名称: "+ rs3.getString(3));
System.out.println("索引值是否可以不唯一: "+ rs3.getString(4));
System.out.println("索引类别: "+ rs3.getString(5));
System.out.println("索引名称: "+ rs3.getString(6));
System.out.println("索引类型: "+ rs3.getString(7));
System.out.println("索引中的列序列号: "+ rs3.getString(8));
System.out.println("列名称: "+ rs3.getString(9));
System.out.println("列排序序列: "+ rs3.getString(10));
System.out.println("TYPE为 tableIndexStatistic时它是表中的行数否则它是索引中唯一值的数量: "+ rs3.getString(11));
System.out.println("TYPE为 tableIndexStatisic时它是用于表的页数否则它是用于当前索引的页数: "+ rs3.getString(12));
System.out.println("过滤器条件: "+ rs3.getString(13));
}
rs3.close();
} catch (Exception e) {
e.printStackTrace();
}
}
ResultSetMetaData接口, 用于获取关于ResultSet
对象中列的类型和属性信息的对象。下面的代码是把一个表的列信息打印了出来。当然了,这只是一部分。详细的参考JAVA JDK。
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ssi2bbs","root","");
PreparedStatement ps = conn.prepareStatement("select * from bbs");
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsme = rs.getMetaData();
int columnCount = rsme.getColumnCount();
System.out.println("ResultSet对象中的列数"+ columnCount);
for (int i = 1; i < columnCount ; i++) {
System.out.println();
System.out.println("列名称: "+ rsme.getColumnName(i));
System.out.println("列类型(DB): " + rsme.getColumnTypeName(i));
System.out.println("长度: "+ rsme.getPrecision(i) );
System.out.println("是否自动编号: "+ rsme.isAutoIncrement(i));
System.out.println("是否可以为空: "+ rsme.isNullable(i));
System.out.println("是否可以写入: "+ rsme.isReadOnly(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
呵呵,希望对大家工作有帮助。
分享到:
相关推荐
DatabaseMetaData生成数据库DLL
DatabaseMetaData 接口DatabaseMetaData 接口作为整体提供有关数据库的综合信息。 其中某些方法采用“字符串”自变量作为目录和模式名称。DB2 Everyplace 忽略这些自变量。 此处的某些方法以 ResultSet 对象的...
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
下面小编就为大家带来一篇java 查询oracle数据库所有表DatabaseMetaData的用法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
DatabaseMetaData 接口作为整体提供有关数据库的综合信息。
calibre-web 数据库文件metadata.db 下载
JDBC由一组用Java语言编写的接口和类组成,是对数据库操作的对象封装,可以实现与数据库的无关性。它以成为一种供数据库开发者使用的标准API。 6.1.1 JDBC的基本功能 a.建立与数据库的连接。 b.发送SQL语言。 ...
JDBC由一组用Java语言编写的接口和类组成,是对数据库操作的对象封装,可以实现与数据库的无关性。它以成为一种供数据库开发者使用的标准API。 6.1.1 JDBC的基本功能 a.建立与数据库的连接。 b.发送SQL语言。 ...
第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...
第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...
第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...
第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...
Java连接数据库和断开数据库讲解 代码,研究JDBC连接SQLServer数据库,很简单但很实用的例子,从建立驱动连接到打开数据库的过程,欢迎学习参考。主要代码如下: Class.forName(...
Java使用JDBC创建和关闭数据库连接的方法附代码,学习和熟悉一下JDBC的用法,创建一个数据库连接,并关闭或断开这个连接,面向java初学者。Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //加载...
calibre 数据库,放在挂载的目录下面; 解决问题:DB location is not valid, please enter correct path
在公司做项目,特别是业务系统的时候,大量的表单和增删改查,而且后台Ui经常用一些easyui等...jdbc DatabaseMetaData(连接数据库 读取表结构) freemarker (根据订制的模版生成 文件) 美化swing界面 substance 皮肤包
Java获取数据库属性信息,使用DatabaseMetaData对象获取数据源相关信息。还可获取索引名、获取存储过程信息、获取存储过程列信息、输出存储过程列信息等。
JTDS完全与JDBC 3.0兼容,支持只向前的,和可滚动/可更新的结果集(ResultSets)中并行(完全独立)语句,并且可实施所有databasemetadata和resultsetmetadata方法。 文件有说明spring+hibernate+c3p0+jtds的配置
DatabaseMetaData metaData=conn.getMetaData(); int dataCount=metaData.getMaxConnections(); //writerLog("数据库最大连接数为:"+dataCount); if(dataCount>0&&maxCount>dataCount){ ...
C语言实现的,提供语言和(基于SQL的)数据库进行交互的“一致性”的接口 JDBC:java版本的ODBC JDBC连接数据库的步骤: 1.注册驱动(加载驱动): 注册的方式: 1.使用类加载器(使用反射的方式) Class.for...