- DatabaseMetaData 有关整个数据库的信息:表名、表的索引、数据库产品的名称和版本、数据库支持的操作。
- ResultSet 关于某个表的信息或一个查询的结果。您必须逐行访问数据行,但是您可以任何顺序访问列。
- ResultSetMetaData 有关 ResultSet 中列的名称和类型的信息。
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs= ps.executeQuery();
ResultSetMetaData data=rs.getMetaData();
for (int i = 1; i <= data.getColumnCount(); i++) {
System.out.println(data.getColumnCount());
//获得所有列的数目及实际列数
int?columnCount=data.getColumnCount();
//获得指定列的列名
String?columnName?=?data.getColumnName(i);
//获得指定列的列值
String?columnValue?=?rs.getString(i);
//获得指定列的数据类型
int?columnType=data.getColumnType(i);
//获得指定列的数据类型名
String?columnTypeName=data.getColumnTypeName(i);
//所在的Catalog名字
String?catalogName=data.getCatalogName(i);
//对应数据类型的类
String?columnClassName=data.getColumnClassName(i);
//在数据库中类型的最大字符个数
int?columnDisplaySize=data.getColumnDisplaySize(i);
//默认的列的标题
String?columnLabel=data.getColumnLabel(i);
//获得列的模式
String?schemaName=data.getSchemaName(i);
//某列类型的精确度(类型的长度)
int?precision=?data.getPrecision(i);
//小数点后的位数
int?scale=data.getScale(i);
//获取某列对应的表名
String?tableName=data.getTableName(i);
//?是否自动递增
boolean?isAutoInctement=data.isAutoIncrement(i);
//在数据库中是否为货币型
boolean?isCurrency=data.isCurrency(i);
//是否为空
int?isNullable=data.isNullable(i);
//是否为只读
boolean?isReadOnly=data.isReadOnly(i);
//能否出现在where中
boolean?isSearchable=data.isSearchable(i);?
}