diff options
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/com/healthmarketscience/jackcess/Column.java | 10 | ||||
-rw-r--r-- | src/java/com/healthmarketscience/jackcess/Database.java | 9 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/java/com/healthmarketscience/jackcess/Column.java b/src/java/com/healthmarketscience/jackcess/Column.java index 2e61b46..32b0e71 100644 --- a/src/java/com/healthmarketscience/jackcess/Column.java +++ b/src/java/com/healthmarketscience/jackcess/Column.java @@ -79,12 +79,12 @@ public class Column implements Comparable<Column> { */ private static final short LONG_VALUE_TYPE_OTHER_PAGES = (short) 0x0; - private static final Pattern GUID_PATTERN = Pattern.compile("\\s*[{]([\\p{XDigit}]{4})-([\\p{XDigit}]{2})-([\\p{XDigit}]{2})-([\\p{XDigit}]{2})-([\\p{XDigit}]{6})[}]\\s*"); + private static final Pattern GUID_PATTERN = Pattern.compile("\\s*[{]([\\p{XDigit}]{8})-([\\p{XDigit}]{4})-([\\p{XDigit}]{4})-([\\p{XDigit}]{4})-([\\p{XDigit}]{12})[}]\\s*"); /** default precision value for new numeric columns */ public static final byte DEFAULT_PRECISION = 18; /** default scale value for new numeric columns */ - public static final byte DEFAULT_SCALE = 18; + public static final byte DEFAULT_SCALE = 0; /** For text columns, whether or not they are compressed */ private boolean _compressedUnicode = false; @@ -812,8 +812,12 @@ public class Column implements Comparable<Column> { return BigDecimal.ZERO; } else if(value instanceof BigDecimal) { return (BigDecimal)value; - } else { + } else if(value instanceof BigInteger) { + return new BigDecimal((BigInteger)value); + } else if(value instanceof Number) { return new BigDecimal(((Number)value).doubleValue()); + } else { + return new BigDecimal(value.toString()); } } diff --git a/src/java/com/healthmarketscience/jackcess/Database.java b/src/java/com/healthmarketscience/jackcess/Database.java index 93e8a83..5635ed6 100644 --- a/src/java/com/healthmarketscience/jackcess/Database.java +++ b/src/java/com/healthmarketscience/jackcess/Database.java @@ -409,8 +409,13 @@ public class Database { buffer.putShort((short) 0); } buffer.putShort(columnNumber); //Column Number again - buffer.put((byte) 0x09); //Unknown - buffer.put((byte) 0x04); //Unknown + if(col.getType() == DataType.NUMERIC) { + buffer.put((byte) col.getPrecision()); // numeric precision + buffer.put((byte) col.getScale()); // numeric scale + } else { + buffer.put((byte) 0x00); //unused + buffer.put((byte) 0x00); //unused + } buffer.putShort((short) 0); //Unknown if (col.getType().isVariableLength()) { //Variable length buffer.put((byte) 0x2); |