Ошибка JDBC — JTDS? Для столбцов типа дата и время (x)

#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