大家好,又见面了,我是你们的朋友全栈君。
简要概述:
元数据:数据库、表、列的定义信息。
**Connection.getMetaData()
DataBaseMetaData对象**
– getURL():返回一个String类对象,代表数据库的URL
– getDatabaseProductName():返回数据库的产品名称。
– getDatabaseProductVersion():返回数据库的版本号。
– getDriverName():返回驱动驱动程序的名称。
– getDriverVersion():返回驱动程序的版本号。
– isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。
通过java.sql.DatabaseMetaData接口,您可以获得有关您已连接到的数据库的元数据。例如,你可以看到哪些表的数据库,和什么中定义的列的每个表的数量,是否是给定功能支持等。
DatabaseMetaData接口包含很多的方法,和并不是所有将在本教程中覆盖。你应该看看的 JavaDoc。此文本将只是覆盖面不够,给你一种感觉,你可以用它。
获得一个 DatabaseMetaData 实例
您从Connection,这样获得的DatabaseMetaData对象 ︰
DatabaseMetaData databaseMetaData = connection.getMetaData();
一旦你得到此DatabaseMetaData实例,你可以调用方法它获取有关数据库的元数据。
数据库产品名称和版本
您可以获取数据库产品名称和版本,像这样 ︰
int majorVersion = databaseMetaData.getDatabaseMajorVersion();
int minorVersion = databaseMetaData.getDatabaseMinorVersion();
String productName = databaseMetaData.getDatabaseProductName();
String productVersion = databaseMetaData.getDatabaseProductVersion();
如果你已经知道到底什么数据库对运行应用程序,您可能不需要这个。但是,如果你正在开发一种产品,需要能够对许多不同的数据库产品运行,此信息可以很方便地确定哪些特定的数据库功能它支持,它支持 SQL 等。
数据库驱动程序版本
你可以获得使用,像这样的 JDBC 驱动程序的驱动程序版本 ︰
int driverMajorVersion = databaseMetaData.getDriverMajorVersion();
int driverMinorVersion = databaseMetaData.getDriverMinorVersion();
再次,如果针对非常具体的数据库运行您的应用程序,这可能真的无法如此翔实。然而,对于应用程序,需要能够运行对许多不同的数据库产品和版本,知道使用驱动程序的确切版本可能一个优势。例如,某些驱动程序版本可能包含一个错误,应用程序需要变通。或者,驱动程序可能会丢失一项功能,然后,应用程序需要变通。
列出表
您可以在您的数据库中,通过DatabaseMetaData获得的已定义的表的列表。这里是如何做到这一点 ︰
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()方法,传递给它 4 参数是字段均为 null。参数可以帮助限制ResultSet返回的表的数目。但是,因为我想要返回的所有表,我传递 null 在所有这些参数。看到更具体的细节,有关参数的 JavaDoc。
从getTables()方法返回的ResultSet包含匹配 4 给定的参数 (其中全部为 null) 的表名称的列表。此ResultSet包含 10 个栏目,其中每个包含给定表的信息。带有索引 3 列包含表名称本身。检查的 JavaDoc 有关其余的列的详细信息。
列出表中的列
您也可以获得通过DatabaseMetaData表的列。这里是如何 ︰
String catalog = null;
String schemaPattern = null;
String tableNamePattern = "my_table";
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()方法,传递 4 个参数。其中,仅tableNamePattern设置为一个非 null 值。将其设置为您想要获取的列的表的名称。
getColumns()方法返回的ResultSet包含给定表的列的列表。带有索引 4 列包含的列的名称,并带有索引 5 列包含的列类型。列类型是整数匹配在java.sql.Types中找到的类型常量之一
要获取有关获取表的列信息的更多详细信息,请查阅 JavaDoc。
表的主键
它也是可能获得一个表的主键。你这样做,像这样 ︰
String catalog = null;
String schema = null;
String tableName = "my_table";
ResultSet result = databaseMetaData.getPrimaryKeys(
catalog, schema, tableName);
while(result.next()){
String columnName = result.getString(4);
}
第一次调用getPrimaryKeys()方法,将三个参数传递给它。只有tableName为非空在这个例子中。
getPrimaryKeys()方法返回的ResultSet包含组成给定表的主键的列的列表。带有索引 4 列包含列名称。
主键可能由多个列组成。这种被称为复合键。如果您的表包含复合键,ResultSet将包含多个行。复合键中每一列的一行。
支持的功能
DatabaseMetaData对象还包含有关功能的信息,JDBC 驱动程序和数据库支持。其中的许多功能被代表的方法,可以调用,这将返回 true 或 false 根据给定的特征是否受支持。
将不会覆盖所有的功能支持相关的方法在这里。我只是会给你几个例子。功能支持方法和它们的含义的完整列表,请咨询 JavaDoc。
databaseMetaData.supportsGetGeneratedKeys();
databaseMetaData.supportsGroupBy();
databaseMetaData.supportsOuterJoins();
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150970.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...