查询数据库结构信息
JDBC是各大数据库供应商共同制定并遵循的标准,数据库的结构信息对于JDBC来说是完全透明的。JDBC通过元数据DatebaseMetadata、ResultSetMetaData、ParameterMetadatal来描述有关结构信息。JadePool在给定数据库连接的前提下,通过使用元数据获取相关的结构信息,使用DbCenter、Table、Field等Db族类实现数据库结构的面向对象的编程。DbCenter通过实现有限多例模式中的某一个实例来管理数据库的结构信息,通过该实例的Map<String, Table> tableMap变量管理该数据库下所有表的结构信息,每一个Table对象通过Map<String, Field> fieldMap变量管理该表下的所有字段的结构信息。由此,在DbCenter的某一个实例中完整地记录了数据库的全部相关结构信息。Db族类的建立给JDBC编程带了一场革命性的变化,成为HashMap关系数据映射技术最重要的基础,这样我们就可以在更高更深的层次考虑怎样实现数据库的CRUD操作。
在JadePool中,怎样实现数据库结构信息的查询?
ProcessVO类中提供了两个方法:String queryDbInfo()和String queryTableInfo(String tableName), 这两个方法可以帮助我们在编程的过程中、或在调试的过程中查看详细的数据库的结构信息或者某一个表的结构信息。下面演示一下这两个方法的效果。
以下是调用queryDbInfo()的输出结果
public static void queryDb() throws SQLException { ProcessVO pvo = new ProcessVO(); try { String s0 = pvo.queryDbInfo();//查询完整的数据库结构信息 System.out.println(s0); String s1 = pvo.queryTableInfo("news");//查询资讯表news的结构信息 System.out.println(s1); Db db=pvo.getDb(); String[] tableNames=db.getTableNames();//查询数据库中包含的所有的表的名称 Table table=db.getTable("news");//查询表的名称为"news"的Table对象 Map<String,Field> fileds=table.getFieldMap();//查询一个表中包含的字段的集合 Field field=fileds.get("title");//查询字段名是"title"的Field字段对象 } finally { pvo.closeCon(); } }