日期:2014-05-16  浏览次数:20988 次

java 如何获取 mysql 备注信息
Java code
public void getResultSetMetaData() {
String sqlStr = "SELECT * FROM STUDENTINFO";
ResultSet rs = null;
Statement smt = null;
try {
String[] tp = {"TABLE"};
smt = conn.createStatement();
rs = smt.executeQuery(sqlStr);
ResultSetMetaData rsmd = rs.getMetaData();
/*
获得ResultSetMeataData对象。所有方法的参数都是列的索引号,即第几列,从1开始
*/
System.out.println("下面这些方法是ResultSetMetaData中方法");
System.out.println("获得1列所在的Catalog名字 : " + rsmd.getCatalogName(1));
System.out.println("获得1列对应数据类型的类 " + rsmd.getColumnClassName(1));
System.out.println("获得该ResultSet所有列的数目 " + rsmd.getColumnCount());
System.out.println("1列在数据库中类型的最大字符个数" + rsmd.getColumnDisplaySize(1));
System.out.println("1列的默认的列的标题" + rsmd.getColumnLabel(1));
System.out.println("1列的模式" + rsmd.getSchemaName(1));
System.out.println("1列的类型,返回SqlType中的编号 " + rsmd.getColumnType(1));
System.out.println("1列在数据库中的类型,返回类型全名" + rsmd.getColumnTypeName(1));
System.out.println("1列类型的精确度(类型的长度): " + rsmd.getPrecision(1));
System.out.println("1列小数点后的位数 " + rsmd.getScale(1));
System.out.println("1列对应的模式的名称(应该用于Oracle) " + rsmd.getSchemaName(1));
System.out.println("1列对应的表名 " + rsmd.getTableName(1));
System.out.println("1列是否自动递增" + rsmd.isAutoIncrement(1));
System.out.println("1列在数据库中是否为货币型" + rsmd.isCurrency(1));
System.out.println("1列是否为空" + rsmd.isNullable(1));
System.out.println("1列是否为只读" + rsmd.isReadOnly(1));
System.out.println("1列能否出现在where中" + rsmd.isSearchable(1));
}
catch (SQLException ex) {
ex.printStackTrace();
}
}

?getColumns
ResultSet getColumns(String catalog,
? String schemaPattern,
? String tableNamePattern,
? String columnNamePattern)
? throws SQLException检索可在指定类别中使用的表列的描述。??
仅返回与类别、模式、表和列名称标准匹配的列描述。它们根据 TABLE_SCHEM、TABLE_NAME 和 ORDINAL_POSITION 进行排序。??

每个列描述都有以下列:??

TABLE_CAT String => 表类别(可为 null)??
TABLE_SCHEM String => 表模式(可为 null)??
TABLE_NAME String => 表名称??
COLUMN_NAME String => 列名称??
DATA_TYPE int => 来自 java.sql.Types 的 SQL 类型??
TYPE_NAME String => 数据源依赖的类型名称,对于 UDT,该类型名称是完全限定的??
COLUMN_SIZE int => 列的大小。对于 char 或 date 类型,列的大小是最大字符数,对于 numeric 和 decimal 类型,列的大小就是精度。??
BUFFER_LENGTH 未被使用。??
DECIMAL_DIGITS int => 小数部分的位数??
NUM_PREC_RADIX int => 基数(通常为 10 或 2)??
NULLABLE int => 是否允许使用 NULL。??
columnNoNulls - 可能不允许使用 NULL 值??
columnNullable - 明确允许使用 NULL 值??
columnNullableUnknown - 不知道是否可使用 null??
REMARKS String => 描述列的注释(可为 null)??
COLUMN_DEF String => 默认值(可为 null)??
SQL_DATA_TYPE int => 未使用??
SQL_DATETIME_SUB int => 未使用??