2011-08-15 30 views
1

众所周知,如果我们执行一个用于查询的sql,我们可以使用rs.getMetaData()来获取结果元数据。我们用它来获得结果集列。如何在jdbc中获取可调用的列名称

但是,如果我使用可调用,我想要获得OUT模式列名称的列。我怎么才能得到它?

+0

您是否使用'registerOutParameter'方法检索结果? – Destroyica

回答

1

可以使用此方法:

java.sql.DatabaseMetaData.getColumns(字符串目录,字符串 schemaPattern,字符串tableNamePattern,字符串columnNamePattern)

每一列说明具有以下的列: 每一列说明具有以下的列:

1. TABLE_CAT String => table catalog (may be null) 
    2. TABLE_SCHEM String => table schema (may be null) 
    3. TABLE_NAME String => table name 
    4. COLUMN_NAME String => column name 
    5. DATA_TYPE int => SQL type from java.sql.Types 
    6. TYPE_NAME String => Data source dependent type name, for a UDT the type name is fully qualified 
    7. COLUMN_SIZE int => column size. 
    8. BUFFER_LENGTH is not used. 
    9. DECIMAL_DIGITS int => the number of fractional digits. Null is returned for data types where DECIMAL_DIGITS is not applicable. 
    10. NUM_PREC_RADIX int => Radix (typically either 10 or 2) 
    11. NULLABLE int => is NULL allowed. 
      * columnNoNulls - might not allow NULL values 
      * columnNullable - definitely allows NULL values 
      * columnNullableUnknown - nullability unknown 
    12. REMARKS String => comment describing column (may be null) 
    13. COLUMN_DEF String => default value for the column, which should be interpreted as a string when the value is enclosed in single quotes (may be null) 
    14. SQL_DATA_TYPE int => unused 
    15. SQL_DATETIME_SUB int => unused 
    16. CHAR_OCTET_LENGTH int => for char types the maximum number of bytes in the column 
    17. ORDINAL_POSITION int => index of column in table (starting at 1) 
    18. IS_NULLABLE String => ISO rules are used to determine the nullability for a column. 
      * YES --- if the parameter can include NULLs 
      * NO --- if the parameter cannot include NULLs 
      * empty string --- if the nullability for the parameter is unknown 
    19. SCOPE_CATLOG String => catalog of table that is the scope of a reference attribute (null if DATA_TYPE isn't REF) 
    20. SCOPE_SCHEMA String => schema of table that is the scope of a reference attribute (null if the DATA_TYPE isn't REF) 
    21. SCOPE_TABLE String => table name that this the scope of a reference attribure (null if the DATA_TYPE isn't REF) 
    22. SOURCE_DATA_TYPE short => source type of a distinct type or user-generated Ref type, SQL type from java.sql.Types (null if DATA_TYPE isn't DISTINCT or user-generated REF) 
    23. IS_AUTOINCREMENT String => Indicates whether this column is auto incremented 
      * YES --- if the column is auto incremented 
      * NO --- if the column is not auto incremented 
      * empty string --- if it cannot be determined whether the column is auto incremented parameter is unknown 

一个简单的实现:

ResultSet columns = dbmd.getColumns(null, null, tableName, null); 
final List<String> columnList = new ArrayList<String>(); 
while (columns.next()) 
{ 
    columnList.add(columns.getString(4)); 
} 
0

你确定它的tableName而不是存储过程名吗?

相关问题