public interface ResultSetMetaData可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。以下代码片段创建 ResultSet 对象 rs,创建 ResultSetMetaData 对象 rsmd,并使用 rsmd 查找 rs 有多少列,以及 rs 中的第一列是否可以在 WHERE 子句中使用。 ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); boolean b = rsmd.isSearchable(1);
方法摘要 | |
---|---|
String | getCatalogName(int column) 获取指定列的表目录名称。 |
String | getColumnClassName(int column) 如果调用方法 ResultSet.getObject 从列中检索值,则返回构造其实例的 Java 类的完全限定名称。 |
int | getColumnCount() 返回此 ResultSet 对象中的列数。 |
int | getColumnDisplaySize(int column) 指示指定列的最大标准宽度,以字符为单位。 |
String | getColumnLabel(int column) 获取用于打印输出和显示的指定列的建议标题。 |
String | getColumnName(int column) 获取指定列的名称。 |
int | getColumnType(int column) 检索指定列的 SQL 类型。 |
String | getColumnTypeName(int column) 检索指定列的数据库特定的类型名称。 |
int | getPrecision(int column) 获取指定列的小数位数。 |
int | getScale(int column) 获取指定列的小数点右边的位数。 |
String | getSchemaName(int column) 获取指定列的表模式。 |
String | getTableName(int column) 获取指定列的名称。 |
boolean | isAutoIncrement(int column) 指示是否自动为指定列进行编号,这样这些列仍然是只读的。 |
boolean | isCaseSensitive(int column) 指示列的大小写是否有关系。 |
boolean | isCurrency(int column) 指示指定的列是否是一个哈希代码值。 |
boolean | isDefinitelyWritable(int column) 指示在指定的列上进行写操作是否明确可以获得成功。 |
int | isNullable(int column) 指示指定列中的值是否可以为 null。 |
boolean | isReadOnly(int column) 指示指定的列是否明确不可写入。 |
boolean | isSearchable(int column) 指示是否可以在 where 子句中使用指定的列。 |
boolean | isSigned(int column) 指示指定列中的值是否带正负号。 |
boolean | isWritable(int column) 指示在指定的列上进行写操作是否可以获得成功。 |
可以自己定义一个类或实现接口。
/**
* <p>名称:记录信息类 </p>
* <p>功能:转换需要使用接口ResultSetMetaData的信息 </p>
* <p>备注:没有转化所有的ResultSetMetaData的方法,这里只是处理了字段名称,字段显示长度,字段类型,字段标识等</p>
*/
public class RecordMetaData
{
private int columnCount = 0;
private int[] columnDisplaySizes;
private String[] columnLabels;
private String[] columnNames;
private int[] columnTypes;
private String[] columnTypeNames;
public void setColumnCount(int columnCount) {
this.columnCount = columnCount;
}
public void setColumnDisplaySizes(int[] columnDisplaySizes) {
this.columnDisplaySizes = columnDisplaySizes;
}
public void setColumnLabels(String[] columnLabels) {
this.columnLabels = columnLabels;
}
public void setColumnNames(String[] columnNames) {
this.columnNames = columnNames;
}
public void setColumnTypes(int[] columnTypes) {
this.columnTypes = columnTypes;
}
public void setColumnTypeNames(String[] columnTypeNames) {
this.columnTypeNames = columnTypeNames;
}
public int getColumnCount() {
return this.columnCount;
}
public int[] getColumnDisplaySizes() {
return this.columnDisplaySizes;
}
public String[] getColumnLabels() {
return this.columnLabels;
}
//获得字段名称!
public String[] getColumnNames() {
return this.columnNames;
}
public int[] getColumnTypes() {
return this.columnTypes;
}
public String[] getColumnTypeNames() {
return this.columnTypeNames;
}
public int getColumnDisplaySize(int column) {
return this.columnDisplaySizes[column-1];
}
public String getColumnLabel(int column) {
return this.columnLabels[column-1];
}
public String getColumnName(int column)
{
return this.columnNames[column-1];
}
public int getColumnType(int column) {
return this.columnTypes[column-1];
}
public String getColumnTypeName(int column) {
return this.columnTypeNames[column-1];
}
public String toString()
{
StringBuffer sbOut=new StringBuffer("");
sbOut.append(" the RecordMetaData String is:/n");
for(int i=0;i<columnNames.length;i++)
{
sbOut.append(" colIndex="+(i+1)+",colName="+columnNames+"/n");
}
return sbOut.toString();
}
}