#java #jdbc #jtds
#java #jdbc #jtds
Вопрос:
Когда я пытаюсь получить тип столбца из 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 amp; 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. Я в замешательстве.
ResultSet.getString()
это нечто совершенно иное, чемResultsSetMetaData.getColumnTypeName()
. Пожалуйста, покажите нам запрос, который вы выполняете, и определение таблицы вашей таблицы.2. @a_horse_with_no_name Я опубликовал фрагмент кода
3. И как выглядит запрос , в котором вы получаете неправильное имя типа?
4. @a_horse_with_no_name Очень просто
Select * FROM DDD
; Вот столбцы таблицыCREATE TABLE [dbo].[DDD]( [Id] [int] NOT NULL, [DayId] [int] NOT NULL, [MonthId] [int] NOT NULL, [YearId] [int] NOT NULL, [D1] [datetime] NOT NULL, [D2] [datetime] NOT NULL, [D3] [date] NOT NULL, [D4] [date] NOT NULL, [D5] [time](7) NOT NULL, [D6] [smalldatetime] NULL, CONSTRAINT [PK_DDD] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
5. Это известная ошибка JTDS, см. sourceforge.net/p/jtds/bugs/679 .
Ответ №1:
Это известная ошибка JTDS, см. sourceforge.net/p/jtds/bugs/679