diff options
author | James Ahlborn <jtahlborn@yahoo.com> | 2006-07-25 20:29:03 +0000 |
---|---|---|
committer | James Ahlborn <jtahlborn@yahoo.com> | 2006-07-25 20:29:03 +0000 |
commit | 0bca2b8a4d32eabc215c66c7d7507275675b29c5 (patch) | |
tree | c989fd280b2ea94a502e2cf3eb36aaaa3fca59e1 /src/java | |
parent | 78739630bdbdd5ae5021c981c10fffff773fa3b0 (diff) | |
download | jackcess-0bca2b8a4d32eabc215c66c7d7507275675b29c5.tar.gz jackcess-0bca2b8a4d32eabc215c66c7d7507275675b29c5.zip |
add write support for numeric/guid
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@69 f203690c-595d-4dc9-a70b-905162fa7fd2
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); |