当前位置: 代码迷 >> Java相关 >> java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]l??????? hstmt
  详细解决方案

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]l??????? hstmt

热度:3817   发布时间:2013-02-25 21:52:22.0
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]l????????????? hstmt
取数据库tableName的字段的名字时出现上面的问题
代码:
 ResultSet columnSet = databaseMetaData.getColumns(null, "%",tableName, "%");


------解决方案--------------------------------------------------------
别用ODBCL了 总出些莫名其妙的毛病 最近的印象是查询的时候 获得结果必须按照查询语句的顺序获得 否则就出错 真不知道什么原因用ODBC。。
------解决方案--------------------------------------------------------
databaseMetaData

这个是什么类的对象 不是ResultSetMetaData么?
------解决方案--------------------------------------------------------
哦 找到该类了 可是参数列表跟你写的不太对阿

Java code
getColumnsResultSet getColumns(String catalog,                     String schemaPattern,                     String tableNamePattern,                     String columnNamePattern)                     throws SQLException    检索可在指定类别中使用的表列的描述。    仅返回与类别、模式、表和列名称标准匹配的列描述。它们根据 TABLE_SCHEM、TABLE_NAME 和 ORDINAL_POSITION 进行排序。    每个列描述都有以下列:       1. TABLE_CAT String => 表类别(可为 null)       2. TABLE_SCHEM String => 表模式(可为 null)       3. TABLE_NAME String => 表名称       4. COLUMN_NAME String => 列名称       5. DATA_TYPE int => 来自 java.sql.Types 的 SQL 类型       6. TYPE_NAME String => 数据源依赖的类型名称,对于 UDT,该类型名称是完全限定的       7. COLUMN_SIZE int => 列的大小。对于 char 或 date 类型,列的大小是最大字符数,对于 numeric 和 decimal 类型,列的大小就是精度。       8. BUFFER_LENGTH 未被使用。       9. DECIMAL_DIGITS int => 小数部分的位数      10. NUM_PREC_RADIX int => 基数(通常为 10 或 2)      11. NULLABLE int => 是否允许使用 NULL。              * columnNoNulls - 可能不允许使用 NULL 值              * columnNullable - 明确允许使用 NULL 值              * columnNullableUnknown - 不知道是否可使用 null       12. REMARKS String => 描述列的注释(可为 null)      13. COLUMN_DEF String => 默认值(可为 null)      14. SQL_DATA_TYPE int => 未使用      15. SQL_DATETIME_SUB int => 未使用      16. CHAR_OCTET_LENGTH int => 对于 char 类型,该长度是列中的最大字节数      17. ORDINAL_POSITION int => 表中的列的索引(从 1 开始)      18. IS_NULLABLE String => "NO" 表示明确不允许列使用 NULL 值,"YES" 表示可能允许列使用 NULL 值。空字符串表示没人知道是否允许使用 null 值。      19. SCOPE_CATLOG String => 表的类别,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)      20. SCOPE_SCHEMA String => 表的模式,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)      21. SCOPE_TABLE String => 表名称,它是引用属性的作用域(如果 DATA_TYPE 不是 REF,则为 null)      22. SOURCE_DATA_TYPE short => 不同类型或用户生成 Ref 类型、来自 java.sql.Types 的 SQL 类型的源类型(如果 DATA_TYPE 不是 DISTINCT 或用户生成的 REF,则为 null)     参数:        catalog - 类别名称,因为存储在数据库中,所以它必须匹配类别名称。该参数为 "" 则检索没有类别的描述,为 null 则表示该类别名称不应用于缩小搜索范围        schemaPattern - 模式名称的模式,因为存储在数据库中,所以它必须匹配模式名称。该参数为 "" 则检索那些没有模式的描述,为 null 则表示该模式名称不应用于缩小搜索范围        tableNamePattern - 表名称模式,因为存储在数据库中,所以它必须匹配表名称        columnNamePattern - 列名称模式,因为存储在数据库中,所以它必须匹配列名称     返回:        ResultSet - 每一行都是一个列描述     抛出:        SQLException - 如果发生数据库访问错误    另请参见:        getSearchStringEscape()
------解决方案--------------------------------------------------------
Properties p = new Properties();
p.setProperty("charSet", "GBK"); 

试试
  相关解决方案