Когда я пытаюсь получить тип столбца из 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;
}