以下是调用queryDbInfo()的输出结果
/* Catalog : qicity Connection driver name : Microsoft SQL Server JDBC Driver 3.0 TABLE[0]: ad---------------------------------- FieldName : ad_id; IsPrimarykey : true; TypeName : bigint; DataType : -5; BufferLength : 8; Position : 1; ThisSize : 19; Decimal : 0; DefaultValue : null; Remark : null; NullAble : false; className : java.lang.Long ... */ 调用queryTableInfo("columns")的输出结果 /* TABLE: columns ------------------------------------------------------ FieldName : columns_id; TypeName : bigint; DataType : -5; BufferLength : 8; Position : 1; ThisSize : 19; Decimal : 0; DefaultValue : null; Remark : null; NullAble : false; className : java.lang.Long FieldName : title; TypeName : varchar; DataType : 12; BufferLength : 100; Position : 4; ThisSize : 100; Decimal : null; DefaultValue : null; Remark : null; NullAble : true; className : java.lang.String ...... FieldName : uptime; TypeName : datetime; DataType : 93; BufferLength : 16; Position : 18; ThisSize : 23; Decimal : 3; DefaultValue : null; Remark : null; NullAble : true; className : java.sql.Timestamp */
ProcessVO类中另外提供了public DbCenter getDb()方法,获取DbCenter对象,以下是DbCenter中有关数据库结构信息的部分方法。
java.lang.String getCatalog() java.sql.Connection getCon() java.lang.String getDriverName() Field getField(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldBufferLength(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldDecimal(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldDefaultValue(java.lang.String tableName, java.lang.String fieldName) java.util.Map<java.lang.String,Field> getFieldMap(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldPosition(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldRegex(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldRemark(java.lang.String tableName, java.lang.String fieldName) java.lang.String[] getFields(java.lang.String tableName) java.lang.String getFieldSize(java.lang.String tableName, java.lang.String fieldName) int getFieldSqlType(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldTypeClassName(java.lang.String tableName, java.lang.String fieldName) java.lang.String getFieldTypeName(java.lang.String tableName, java.lang.String fieldName) java.lang.String[] getKeys(java.lang.String tableName) java.lang.String[] getKeysType(java.lang.String tableName)//主键类型 java.lang.String getSchema() Table getTable(java.lang.String tableName) java.util.Map<java.lang.String,Table> getTableMap() java.lang.String[] getTableNames() static DbCenter instance(java.sql.Connection con, int connectionType) boolean isExistField(java.lang.String tableName, java.lang.String fieldName) boolean isExistKeyField(java.lang.String tableName, java.lang.String fieldName) boolean isExistTable(java.lang.String tableName) boolean isFieldNullable(java.lang.String tableName, java.lang.String fieldName) boolean isFieldPrimarykey(java.lang.String tableName, java.lang.String fieldName)
以下是一个查询数据库结构信息的范例
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(); } }