首先是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` 是Java中的一个接口,它提供了关于JDBC驱动程序和连接数据库的信息。通过调用`Connection`对象的`getMetaData()`方法,我们可以获取到`DatabaseMetaData`实例,从而获取到关于数据库的各种元...
DatabaseMetaData 接口DatabaseMetaData 接口作为整体提供有关数据库的综合信息。 其中某些方法采用“字符串”自变量作为目录和模式名称。DB2 Everyplace 忽略这些自变量。 此处的某些方法以 ResultSet 对象的...
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
总结起来,`DatabaseMetaData`提供了丰富的接口,允许开发者在Java应用程序中获取Oracle数据库的元数据,包括表信息、列信息、主键和外键等,这对于数据库的设计、维护和查询优化都非常有价值。在使用时,需要注意...
DatabaseMetaData 接口作为整体提供有关数据库的综合信息。
### Java判断数据库表是否存在 ...在实际开发过程中,这种方法可以帮助我们更好地管理和维护数据库结构,避免因表不存在而引发的各种错误。同时,掌握这些基础知识对于深入理解Java数据库编程也是非常有帮助的。
以及获取和修改数据使用JDBC加载驱动程序、连接数据库、执行SQL语句和处理结果集使用处理预编译语句的接口PreparedStatement执行带参数的动态SQL语句利用CallableStatement接口执行SQL的存储过程使用Database...
22. 使用JSP可以实现数据备份和恢复,例如备份数据库结构和数据,恢复数据库。 23. 使用JSP可以实现数据库迁移,例如从一个数据库迁移到另一个数据库。 24. 使用JSP可以实现数据同步,例如同步两个数据库之间的...
本文将详细介绍如何使用Eclipse和JDBC API来获取MySQL数据库中的表结构以及主外键信息。 #### 一、准备工作 在开始之前,请确保你的开发环境已经安装了Eclipse IDE,并且项目中已经配置好了MySQL的JDBC驱动。此外...
calibre-web 数据库文件metadata.db 下载
Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了关于整个数据库的信息,包括表名、表的...
9.数据库元数据:了解如何使用DatabaseMetaData接口获取数据库的元信息,如表结构、列信息等。 10.数据库设计和范式理论:可能涉及关系数据库设计的基本原则,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)...
本篇文章将详细探讨"经典用户管理数据库结构"的设计原理和关键要素,尤其适用于那些需要全面功能的开发项目。 首先,我们要理解用户管理数据库的核心目标:确保数据的安全性、完整性和易用性。一个良好的用户管理...
数据库结构清晰、规范,能极大地提高数据管理和使用的效率。本话题主要关注如何通过代码自动化地将数据库结构导出并生成文档,这在数据库设计、维护、共享和版本控制等方面具有重要意义。 首先,我们需要理解...
总结来说,使用JDBC查看数据库的详细信息主要涉及加载驱动、建立连接、获取`DatabaseMetaData`对象并调用其方法,以及正确处理结果集和关闭资源。这对于任何需要与数据库交互的Java应用都是至关重要的。通过阅读博文...
1. 数据库结构:“metadata.db”是一个SQLite数据库,SQLite是一种轻量级的关系型数据库管理系统,适用于单机环境或者小型网络,无需专门的服务器进程,直接嵌入到应用程序中。在Calibre中,每个电子书的条目对应...
Java程序设计:Chapter14主要探讨的是JDBC(Java Database Connectivity)技术和如何使用它进行数据库开发应用。JDBC是Java语言中用于与各种数据库交互的一组API,它为程序员提供了在Java应用程序中连接和访问数据库...
这篇资料着重关注了两个关键知识点:`requestWindowFeature()`函数和数据库分析,特别是通过`DatabaseMetaData`接口进行的JDBC操作。 首先,`requestWindowFeature()`是Android应用开发中的一个重要方法,它属于`...
数据库元数据是关于数据库结构和内容的信息,包括但不限于表、列、索引、视图、存储过程等的详细描述。在Oracle数据库中,这些信息存储在数据字典中,可以通过数据库元数据API来访问和查询。 在Java编程中,我们...