JDBC - ошибка JTDS? Для столбцов типа дата и время (х) - PullRequest
2 голосов
/ 25 октября 2011

Когда я пытаюсь получить тип столбца из ResultSetMetaData с методом getColumnTypeName для типов date и time(x), я получаю nvarchar.Для других типов, кажется, работает нормально.Это ошибка?С ResultSet getString("TYPE_NAME") все в порядке.Я работаю на MSSQL2008

@ a_horse_with_no_name

ResultSetMetaData Я получаю при выполнении запроса.В этом случае у меня нет никаких таблиц.Вот фрагмент кода

if (resultType == ResultMappingType.QUERY){ // For Query
    Statement statement = con.createStatement();
    ResultSet rs = executeAndValidateQuery(statement, resultName);
    ResultSetMetaData rsMeta = rs.getMetaData();
    for( int i = 1 ; i < rsMeta.getColumnCount()+1 ; i ++ ){
        columnInfo.put( rsMeta.getColumnName(i), rsMeta.getColumnTypeName(i));
    }

}else { //For View & Table
    ResultSet rsColumns = meta.getColumns(catalog, schemaPattern, resultName, null);
    while (rsColumns.next()){
        columnInfo.put(rsColumns.getString("COLUMN_NAME"), rsColumns.getString("TYPE_NAME"));
    }
}
....
private ResultSet executeAndValidateQuery(Statement statement, String query) throws KbValidationException{
    ResultSet rs = null;
    try{
        rs = statement.executeQuery(query);
    }
    catch(SQLException ex){
        throw new KbValidationException(ex.getMessage());
    }
    return rs;
}

1 Ответ

0 голосов
/ 30 июня 2014

Это известная ошибка JTDS, см. sourceforge.net / p / jtds / bugs / 679

...