aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/healthmarketscience/jackcess/DataType.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/com/healthmarketscience/jackcess/DataType.java b/src/main/java/com/healthmarketscience/jackcess/DataType.java
index e115cdf..ffd5bf4 100644
--- a/src/main/java/com/healthmarketscience/jackcess/DataType.java
+++ b/src/main/java/com/healthmarketscience/jackcess/DataType.java
@@ -200,6 +200,14 @@ public enum DataType {
ALT_SQL_TYPES.put(Types.VARCHAR, MEMO);
ALT_SQL_TYPES.put(Types.VARBINARY, OLE);
ALT_SQL_TYPES.put(Types.BINARY, OLE);
+
+ // add newer sql types if available in this jvm
+ addNewSqlType("NCHAR", TEXT, null);
+ addNewSqlType("NVARCHAR", TEXT, MEMO);
+ addNewSqlType("LONGNVARCHAR", MEMO, null);
+ addNewSqlType("NCLOB", MEMO, null);
+ addNewSqlType("TIME_WITH_TIMEZONE", SHORT_DATE_TIME, null);
+ addNewSqlType("TIMESTAMP_WITH_TIMEZONE", SHORT_DATE_TIME, null);
}
private static Map<Byte, DataType> DATA_TYPES = new HashMap<Byte, DataType>();
@@ -481,4 +489,23 @@ public enum DataType {
return rtn;
}
+ /**
+ * Adds mappings for a sql type which was added after jdk 1.5 (using
+ * reflection).
+ */
+ private static void addNewSqlType(String typeName, DataType type,
+ DataType altType)
+ {
+ try {
+ java.lang.reflect.Field sqlTypeField = Types.class.getField(typeName);
+ Integer value = (Integer)sqlTypeField.get(null);
+ SQL_TYPES.put(value, type);
+ if(altType != null) {
+ ALT_SQL_TYPES.put(value, altType);
+ }
+ } catch(Exception ignored) {
+ // must not be available
+ }
+ }
+
}