2012-10-10 14 views
7

Używam programu SQL Server. Moja tabela ma kolumnę z typem danych datetime2.Uzyskiwanie typu danych kolumny zestawu wynikowego

Uzyskuję dostęp do danych tabeli za pomocą ResultSet. Potrzebuję uzyskać typ danych kolumny. Metoda rs.getColumnTypeName() zwraca dla danych bazy danych typ .

Czy istnieje sposób uzyskania datetime2 lub Timestamp dla tego samego?

+0

przyjrzeć http://stackoverflow.com/a/220226/579580 – aviad

+0

Witam, problem doświadczasz jest najprawdopodobniej związany ze sterownikiem JDBC SQL Server, którego używasz. Pobierz najnowszą wersję 6.0, jeśli to możliwe, typ 4.2. W tej wersji sterownika SQL Server można uzyskać: (a) metaData.getColumnType = 93 - w wersji 2.0 użytkownik -9 (b) metaData.getColumnClassName (...)/java.sql.Timestamp. W skrócie, datetime2 nie są poprawnie obsługiwane przez sterownik w wersji 2.0. Więc nie powinieneś używać datetime2 z tą starszą wersją sterownika. Spróbuj przeprowadzić aktualizację, aby uzyskać prawidłowe metadane i wyniki. – 99Sono

Odpowiedz

10

Jeśli robisz to w Javie, istnieje klasa ResultSetMetaData.

Możesz użyć ResultSetMetaData.getColumnClassName(), aby uzyskać pełną nazwę klasy.

Na przykład, jeśli typem danych w bazie danych jest VARCHAR, zwróconą wartością jest java.lang.String.

Spróbuj również użyć ResultSetMetaData.getColumnLabel() - sprawdź, czy ma zastosowanie w twoim przypadku.

Java Documentation for ResultSetMetaData

+0

Możesz również uzyskać wartość całkowitą z 'ResultSetMetaData.getColumnType()' i porównać ją z jedną ze stałych w 'java.sql.Types', aby sprawdzić, czy jest to określony typ. Jest to bliższe samemu schematowi bazy danych, ponieważ można rozróżnić różne typy baz danych (np. 'NVARCHAR',' VARCHAR', 'INTEGER',' NUMERIC'), które wszystkie dotyczą tego samego typu Java (np. 'String',' int '). – ADTC

+0

Jego problem Wierzę, że metadane nie ma sensu dla rzeczywistej kolumny DB. Kolumna sqlserver Microsft to DATETIME2. Mimo to zwracany typ przez zestaw wyników jest "ciągiem", a typ kolumny jest nvarchar. Najprawdopodobniej błąd związany z wersją sterownika JDBC (np. Sterownik JDBC, wersja 2) – 99Sono

Powiązane problemy