简单介绍一下 java.sql.DatabaseMetaData 接口,关于数据库的整体综合信息。官方 API 文档已经介绍很详细,我这里简单说一下实际的使用。
它还存在一系列的以 supports 开头的接口也比较实用,例如 supportsBatchUpdates() 获取此数据库是否支持批量更新,还有 supportsTransactions() 获取此数据库是否支持事务等等。
实现的功能很简单,就是根据数据库中的表自动生成相对应的 Java Bean 文件。
主要思路是先得到数据库中所有表,再得到每张表的所有字段,如果是主健字段则特殊标记一下。
主要用到几个接口:
ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
获取可在给定类别中使用的表的描述。
ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
获取可在指定类别中使用的表列的描述。
ResultSet getPrimaryKeys(String catalog, String schema, String table)
获取对给定表的主键列的描述。
ResultSet getExportedKeys(String catalog, String schema, String table)
获取引用给定表的主键列(表导入的外键)的外键列的描述。
// 取得数据库中所有表名称
public List getTables() {
List tables = new ArrayList();
Connection con = null;
ResultSet rs = null;
try {
con = DbUtils.getConnection("jwdt");
rs = con.getMetaData().getTables(null, null, null, new String[] { "TABLE" });
while (rs.next()) { // 注意:结果集中存在表的很多信息,表名称在第 3 列
tables.add(rs.getString(3));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DbUtils.close(con);
}
return tables;
}
// 根据表名称取得表所有字段
public List getColumns(String table) {
List columns = new ArrayList();
Connection con = null;
ResultSet rs = null;
try {
con = DbUtils.getConnection("jwdt");
rs = con.getMetaData().getColumns(null, null, table, null);
while (rs.next()) { // 注意:结果集中存在表的很多信息,字段名称在第 4 列
columns.add(rs.getString(4));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DbUtils.close(con);
}
return columns;
}
// 根据表名称取得表主键字段
// 取得表外键字段的操作使用 getExportedKeys(null, null, table) 方法
public String getPrimaryKeys(String table) {
String keys = "";
Connection con = null;
ResultSet rs = null;
try {
con = DbUtils.getConnection("jwdt");
rs = con.getMetaData().getPrimaryKeys(null, null, table);
while (rs.next()) {// 注意:结果集中存在表的很多信息,字段名称在第 4 列
keys += rs.getString(4) + ",";
}
if (!keys.equals("")) { // 去掉最后面的逗号
keys = keys.substring(0, keys.length() - 1);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DbUtils.close(con);
}
return keys;
}
生成类属性的时候,还要注意数据库表字段的类型与 Java 类型的对应,最好多加一个方法作类型转换。
生成类文件的方式,建议使用类似 FreeMarker 的模板语言,直接写在 Java 类中代码太难看了。
分享到:
相关推荐
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
`DatabaseMetaData` 是Java中的一个接口,它提供了关于JDBC驱动程序和连接数据库的信息。通过调用`Connection`对象的`getMetaData()`方法,我们可以获取到`DatabaseMetaData`实例,从而获取到关于数据库的各种元...
DatabaseMetaData 接口作为整体提供有关数据库的综合信息。
在Java编程中,当我们需要与Oracle数据库交互时,`java.sql.DatabaseMetaData`接口提供了一种方式来获取关于数据库的各种元数据信息。这篇文章将详细介绍如何利用`DatabaseMetaData`查询Oracle数据库的所有表。 ...
8. **DatabaseMetaData**: 提供有关数据库的元数据,如数据库的版本、表名、列名等。 ### JDBC连接数据库步骤 1. 加载驱动:通过Class.forName()方法加载JDBC驱动。 2. 获取连接:使用DriverManager.get...
7. **数据库元数据**:通过`DatabaseMetaData`获取数据库的结构和属性信息。 《Java数据库接口JDBC入门基础讲座》可能是针对初学者的教程,着重于介绍JDBC的基础概念和基本操作,包括如何设置数据库连接参数、执行...
总结来说,使用JDBC查看数据库的详细信息主要涉及加载驱动、建立连接、获取`DatabaseMetaData`对象并调用其方法,以及正确处理结果集和关闭资源。这对于任何需要与数据库交互的Java应用都是至关重要的。通过阅读博文...
- **JDBC批注**:用于元数据查询,如`DatabaseMetaData`接口。 - **结果集元数据**:`ResultSetMetaData`对象提供列的相关信息。 - **JDBC逃逸**:防止SQL注入的编码技术。 ### 10. 示例代码 ```java Class.for...
2. **DatabaseMetaData接口** 3. **getTables方法** 4. **ResultSet处理** ### 实现原理与步骤 #### 1. JDBC简介 JDBC是Java中用于连接和操作关系型数据库的标准API。它提供了一套标准的方法来执行SQL语句,获取...
JDBC元数据是关于数据库结构的信息,如表名、列名、索引等,可以通过DatabaseMetaData接口获取。这些信息对于动态构建SQL语句或自动生成数据库相关的代码非常有用。 通过深入学习JDBC,开发人员不仅可以更好地理解...
JDBC4.0增强了`DatabaseMetaData`接口,添加了一些新方法来获取关于数据库特性的更多信息,如支持的函数、存储过程、触发器等,这有助于开发人员更好地了解所连接的数据库。 **6. 预编译的SQL语句** `...
JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一种接口。在JDBC高级应用中,我们可以利用其提供的功能实现更高效、更灵活的数据操作。以下是一些关键知识点: 1. **元数据获取**...
ResultSet 接口是用来接收 select 语句返回的查寻结果的,DatabaseMetaData 是数据库元数据,ResultSetMetaData 是结果集元数据,Types 是特殊的类,只包含静态的常量,代表 jdbc 类型。 jdbc 的应用步骤包括注册...
在jdbc中,我们可以使用Statement、PreparedStatement和CallableStatement三个接口来执行SQL语句。 jdbc连接数据库 在jdbc中,我们可以使用DriverManager来加载数据库驱动程序,例如mysql的驱动程序...
6. **数据库元数据**:Connection对象还提供了DatabaseMetaData接口,可以获取关于数据库的元数据信息,如数据库版本、表名、列名等。 7. **批处理**:PreparedStatement对象支持批处理,可以一次提交多个SQL语句,...
- **DatabaseMetaData类**:提供了获取数据库元数据的方法,如数据库版本、表信息、列信息等。 **JDBC使用流程** 1. 加载并注册JDBC驱动(通常通过Class.forName())。 2. 通过DriverManager.getConnection()或...
JDBC是Java中用于与各种数据库进行交互的标准接口,它允许开发者使用Java语言编写数据库应用程序。JDBC驱动是连接Java应用程序与数据库之间的桥梁,通常分为四种类型:Type 1(纯Java API,依赖于数据库厂商提供的...
- **DatabaseMetaData接口**:提供有关数据库的信息,如支持的数据类型、系统函数等。 - **ResultSetMetaData接口**:提供关于结果集的元数据信息。 #### 四、JDBC应用步骤详解 1. **注册加载驱动**:使用`Class....
- DatabaseMetaData接口提供了获取数据库信息的方法,如表结构、索引、视图等。 7. **JDBC2的优化策略** - 使用PreparedStatement而非Statement,减少SQL解析次数。 - 通过设置合适的fetchSize优化结果集加载。 ...