summaryrefslogtreecommitdiffstats
path: root/src/java
diff options
context:
space:
mode:
authorJames Ahlborn <jtahlborn@yahoo.com>2006-07-25 20:29:03 +0000
committerJames Ahlborn <jtahlborn@yahoo.com>2006-07-25 20:29:03 +0000
commit0bca2b8a4d32eabc215c66c7d7507275675b29c5 (patch)
treec989fd280b2ea94a502e2cf3eb36aaaa3fca59e1 /src/java
parent78739630bdbdd5ae5021c981c10fffff773fa3b0 (diff)
downloadjackcess-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.java10
-rw-r--r--src/java/com/healthmarketscience/jackcess/Database.java9
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);