2012-10-10 21 views
7

Estoy usando SQL Server. Mi tabla tiene una columna con el tipo de datos datetime2.Obtener el tipo de datos de una columna ResultSet

Estoy accediendo a los datos de la tabla usando ResultSet. Necesito obtener el tipo de datos de una columna. El método rs.getColumnTypeName() devuelve nvarchar para el tipo de datos de base de datos datetime2.

¿Hay alguna forma de obtener datetime2 o Timestamp para lo mismo?

+0

echar un vistazo a http://stackoverflow.com/a/220226/579580 – aviad

+0

Hola, el problema que está experimentando es más probable relacionado con el controlador JDBC de SQL Server que está utilizando. Descargue la última versión 6.0 tipo 4.2, si puede. En esta versión del controlador de SQL Server podrá obtener: (a) metaData.getColumnType = 93 - en 2.0 usted -9 (b) metaData.getColumnClassName (...)/java.sql.Timestamp. En resumen, datetime2 no es soportado adecuadamente por el controlador versión 2.0. Por lo tanto, no debe usar datetime2 con esa versión de controlador anterior. Intente actualizar para obtener metadatos y resultados correctos. – 99Sono

Respuesta

10

Si lo está haciendo en Java, hay una clase ResultSetMetaData.

Puede usar ResultSetMetaData.getColumnClassName() para obtener el nombre completo de la clase.

Por ejemplo, si el tipo de datos en la base de datos es VARCHAR, el valor devuelto es java.lang.String.

También intente utilizar ResultSetMetaData.getColumnLabel() - vea si es aplicable en su caso.

Java Documentation for ResultSetMetaData

+0

También puede obtener el valor entero de 'ResultSetMetaData.getColumnType()' y compararlo con una de las constantes en 'java.sql.Types' para comprobar si se trata de un tipo particular. Esto se acerca más al esquema de la base de datos ya que se puede distinguir entre varios tipos de bases de datos (por ejemplo, 'NVARCHAR',' VARCHAR', 'INTEGER',' NUMERIC') que se resuelven con el mismo tipo de Java (por ejemplo, 'String',' int '). – ADTC

+0

Su problema, creo, es que los metadatos no tienen sentido para la columna DB real. La columna sqlserver de Microsft es DATETIME2. Pero a pesar de eso, el tipo devuelto por el conjunto de resultados es una "cadena" y el tipo para la columna es nvarchar. Lo más probable es que haya un error con la versión del controlador JDBC (por ejemplo, el controlador JDBC versión 2) – 99Sono

Cuestiones relacionadas