+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project default="jar:jar">
-
- <goal name="sfRelease"
- prereqs="jar:jar, dist, sourceforge:deploy, site:deploy"/>
-
-</project>
--- /dev/null
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.healthmarketscience.jackcess</groupId>
+ <artifactId>jackcess</artifactId>
+ <name>Jackcess</name>
+ <description>A pure Java library for reading from and writing to MS Access databases.</description>
+ <version>1.1.10-SNAPSHOT</version>
+ <url>http://jackcess.sf.net</url>
+ <inceptionYear>2005</inceptionYear>
+ <developers>
+ <developer>
+ <name>Tim McCune</name>
+ <id>javajedi</id>
+ <email>javajedi@users.sf.net</email>
+ <organization>Health Market Science, Inc.</organization>
+ <timezone>-5</timezone>
+ </developer>
+ <developer>
+ <name>James Ahlborn</name>
+ <id>jahlborn</id>
+ <email>jahlborn@users.sf.net</email>
+ <organization>Health Market Science, Inc.</organization>
+ <timezone>-5</timezone>
+ </developer>
+ <developer>
+ <name>Rob Di Marco</name>
+ <id>robdimarco</id>
+ <organization>Health Market Science, Inc.</organization>
+ <timezone>-5</timezone>
+ </developer>
+ </developers>
+ <licenses>
+ <license>
+ <name>GNU Lesser General Public License, 2.1</name>
+ <url>http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt</url>
+ <distribution>manual</distribution>
+ </license>
+ </licenses>
+ <issueManagement>
+ <system>SourceForge</system>
+ <url>http://sourceforge.net/tracker/?group_id=134943&atid=731445</url>
+ </issueManagement>
+ <scm>
+ <connection>scm:cvs:pserver:anonymous@jackcess.cvs.sourceforge.net:/cvsroot/jackcess/:jackcess</connection>
+ <!-- read/write cvs connection -->
+ <developerConnection>scm:cvs:ext:username@jackcess.cvs.sourceforge.net:/cvsroot/jackcess/:jackcess</developerConnection>
+ <url>http://jackcess.cvs.sourceforge.net/jackcess/jackcess/</url>
+ </scm>
+ <organization>
+ <name>Health Market Science</name>
+ <url>http://www.healthmarketscience.com</url>
+ </organization>
+ <build>
+ <defaultGoal>install</defaultGoal>
+ <sourceDirectory>src/java</sourceDirectory>
+ <testSourceDirectory>test/src/java</testSourceDirectory>
+ <resources>
+ <resource>
+ <directory>src/resources</directory>
+ </resource>
+ </resources>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ <compilerArgument>-Xlint:all</compilerArgument>
+ <showWarnings>true</showWarnings>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <forkMode>once</forkMode>
+ <argLine>-Xmx256M -server</argLine>
+ <systemProperties>
+ <property>
+ <name>log4j.configuration</name>
+ <value>com/healthmarketscience/jackcess/log4j.properties</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>cobertura-maven-plugin</artifactId>
+ <version>2.0</version>
+ <configuration>
+ <instrumentation>
+ <excludes>
+ <exclude>com/healthmarketscience/jackcess/scsu/**</exclude>
+ </excludes>
+ </instrumentation>
+ </configuration>
+ <executions>
+ <execution>
+ <id>clean</id>
+ <goals>
+ <goal>clean</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-changes-plugin</artifactId>
+ <configuration>
+ <smtpHost>localhost</smtpHost>
+ <toAddresses>
+ <toAddress>jackcess-users@lists.sourceforge.net</toAddress>
+ </toAddresses>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-release-plugin</artifactId>
+ <configuration>
+<!-- <goals>deploy,changes:announcement-generate,changes:announcement-mail</goals> -->
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.7</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.0</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>dependencies</report>
+ <report>scm</report>
+ <report>summary</report>
+ <report>project-team</report>
+ <report>license</report>
+ <report>issue-tracking</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+ <plugin>
+ <artifactId>maven-changes-plugin</artifactId>
+ <configuration>
+ <issueLinkTemplate>%URL%/index.php?func=detail&aid=%ISSUE%&group_id=134943&atid=731445</issueLinkTemplate>
+ </configuration>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>changes-report</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>changelog-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>cobertura-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <minmemory>128m</minmemory>
+ <maxmemory>512</maxmemory>
+ <links>
+ <list>http://java.sun.com/j2se/1.5.0/docs/api</list>
+ <list>http://java.sun.com/javaee/5/docs/api/</list>
+ </links>
+ <source>1.5</source>
+ <excludePackageNames>com.healthmarketscience.jackcess.scsu</excludePackageNames>
+ <show>public</show>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jxr-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-pmd-plugin</artifactId>
+ <configuration>
+ <aggregate>true</aggregate>
+ <targetJdk>1.5</targetJdk>
+ <!-- Use csv reports because unneeded and xml causes failures (bug in pmd 3.9 with SuppressWarnings in source code) -->
+ <format>csv</format>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>findbugs-maven-plugin</artifactId>
+ <configuration>
+ <threshold>Normal</threshold>
+ <effort>Default</effort>
+ <excludeFilterFile>src/test/resources/findBugsExcludes.xml</excludeFilterFile>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>taglist-maven-plugin</artifactId>
+ <configuration>
+ <tags>
+ <list>TODO</list>
+ <list>todo</list>
+ <list>FIXME</list>
+ <list>fixme</list>
+ </tags>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+ <distributionManagement>
+ <site>
+ <id>jackcess-build-site</id>
+ <url>scp://shell.sourceforge.net/home/groups/j/ja/jackcess/htdocs</url>
+ </site>
+ </distributionManagement>
+</project>
--- /dev/null
+<document>
+ <properties>
+ <title>Release notes</title>
+ <author email="javajedi@users.sf.net">Tim McCune</author>
+ <author email="jahlborn@users.sf.net">James Ahlborn</author>
+ </properties>
+ <body>
+ <release version="1.1.10" date="TBD">
+ </release>
+ <release version="1.1.9" date="2007-07-12">
+ <action dev="jahlborn" type="fix" issue="1675522">
+ Add support for writing large table definitions, bug #1675522.
+ </action>
+ <action dev="jahlborn" type="fix" issue="1748827">
+ Fix handling of usage maps for large tables, bug #1748827.
+ </action>
+ <action dev="jahlborn" type="fix" issue="1672071">
+ Fixed some edge cases for reading numeric columns, bug #1672071.
+ </action>
+ </release>
+ <release version="1.1.8" date="2007-02-13">
+ <action dev="jahlborn" type="update">
+ Additional info in DataType to support better type validation
+ (scale/precision range). Add "unit size" concept.
+ </action>
+ <action dev="jahlborn" type="update">
+ Add CLOB support in JDBC handling. Add general support for large
+ types (BLOB/CLOB).
+ </action>
+ <action dev="jahlborn" type="update">
+ Enhance Database.copyTable/importReader to allow for better control
+ over column definitions and row values through the ImportFilter.
+ Change default type translation to handle large and variable length
+ types better.
+ </action>
+ </release>
+ <release version="1.1.7" date="2006-10-02">
+ <action dev="jahlborn" type="update">
+ Refactored DataType class, cleaned up a lot of "custom" data type code
+ springled throughout the codebase.
+ </action>
+ <action dev="jahlborn" type="update">
+ Added sanity checking on table creation (check column/table properties
+ for validity).
+ </action>
+ <action dev="jahlborn" type="update">
+ Clean up index reading/writing of text columns, add support for more
+ characters
+ </action>
+ <action dev="jahlborn" type="update" issue="1563654">
+ Support reading 'compressed' indexes (fix 1563654)
+ </action>
+ <action dev="jahlborn" type="update">
+ Implement "overflow" row reading.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Allow multi-page long value reading.
+ </action>
+ <action dev="jahlborn" type="update">
+ Implement multi-page long value writing.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Fix decimal data type writing.
+ </action>
+ <action dev="jahlborn" type="update" issue="1545857">
+ Add support for opening files read-only (fix 1545857)
+ </action>
+ </release>
+ <release version="1.1.6" date="2006-08-07">
+ <action dev="jahlborn" type="fix" issue="1530312">
+ Handle more tables with more index slots than actual indexes (fix bug
+ 1530312)
+ </action>
+ <action dev="jahlborn" type="fix" issue="1449812">
+ Clean up reading/writing 3-byte ints; long value length is 3-bytes
+ (fix bug 1449812)
+ </action>
+ <action dev="jahlborn" type="fix">
+ Fix handling of skipped rows
+ </action>
+ <action dev="jahlborn" type="fix" issue="1306970">
+ When reading multi-page table def, flip buffer before parsing (fix bug
+ 1306970)
+ </action>
+ <action dev="jahlborn" type="update">
+ Treat table names as case insensitive; use stored table names when
+ instantiating tables
+ </action>
+ <action dev="jahlborn" type="update">
+ Make Database and Table Iterable
+ </action>
+ <action dev="jahlborn" type="fix">
+ Use uppercase names when adding text columns to indexes, which fixes
+ long standing problem with table names starting with lowercase
+ characters (and other situations where tables could not be opened in
+ Access). Remove hack which forced every table name to have uppercase
+ first character.
+ </action>
+ <action dev="jahlborn" type="update">
+ Clean up compressed text handling.
+ </action>
+ <action dev="jahlborn" type="update">
+ Implement reading multi-page long binary values
+ </action>
+ </release>
+ <release version="1.1.5" date="2006-07-25">
+ <action dev="jahlborn" type="update">
+ Add support for currency columns (thanks to James Schopp).
+ </action>
+ <action dev="jahlborn" type="fix">
+ Handle tables with no variable length columns correctly.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Handle reading with deleted columns.
+ </action>
+ <action dev="jahlborn" type="update">
+ Read information on primary keys and include in Index.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Fix some issues around reading indexes.
+ </action>
+ <action dev="jahlborn" type="update">
+ Add write support for numeric/GUID columns.
+ </action>
+ <action dev="javajedi" type="update">
+ Added getRowCount(), getName(), updated toString() on Table.
+ </action>
+ </release>
+ <release version="1.1.4" date="2006-6-15">
+ <action dev="jahlborn" type="fix">
+ Missing break in switch condition.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Fixes
+ to reading/writing MEMO/OLE columns.
+ </action>
+ <action dev="jahlborn" type="update">
+ Made exceptions thrown when opening empty or nonexistent files more
+ specific.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Apply patch from Jon Iles for handilng variable length columns.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Apply patch from Jon Iles for handling dates.
+ </action>
+ <action dev="jahlborn" type="fix">
+ Apply patch from Jon Iles for reading GUIDs.
+ </action>
+ </release>
+ <release version="1.1.3" date="2006-2-16">
+ <action dev="jahlborn" type="fix">
+ Fix parsing of NUMERIC type.
+ </action>
+ <action dev="javajedi" type="fix">
+ Applied Jon Iles' patch to allow large table definitions to be read.
+ </action>
+ </release>
+ <release version="1.1.2" date="2005-8-26">
+ <action dev="javajedi" type="fix" issue="1273712">
+ Fixed bug where writing null values into fixed-width columns was
+ failing.
+ </action>
+ </release>
+ <release version="1.1.1" date="2005-8-20">
+ <action dev="javajedi" type="fix" issue="1261536">
+ Fixed bug in reading index count from table definition. Skip overflow
+ rows.
+ </action>
+ </release>
+ <release version="1.1" date="2005-8-12">
+ <action dev="javajedi" type="update">
+ JDK 1.5 upgrades
+ </action>
+ <action dev="javajedi" type="update">
+ Applied Mitchell Friedman's patch for support of additional JDBC data
+ types.
+ </action>
+ <action dev="javajedi" type="update">
+ Added support for deleted rows.
+ </action>
+ </release>
+ <release version="1.0" date="2005-4-7">
+ <action dev="javajedi" type="add">
+ Initial release
+ </action>
+ </release>
+ </body>
+</document>
/**
* Checks that this column definition is valid.
*
- * @throw IllegalArgumentException if this column definition is invalid.
+ * @throws IllegalArgumentException if this column definition is invalid.
*/
public void validate(JetFormat format) {
if(_format != format) {
--- /dev/null
+<?xml version="1.0"?>
+
+<faqs title="Frequently Asked Questions">
+
+ <part id="general">
+ <title>General</title>
+
+ <faq id="linux">
+ <question>Does this work on Linux/Unix?</question>
+ <answer>
+ <p>Yep, Jackcess is pure Java. It will work on any
+ Java Virtual Machine (1.4+).</p>
+ </answer>
+ </faq>
+
+ <faq id="formats">
+ <question>What Access formats does it support?</question>
+ <answer>
+ <p>Jackcess currently supports <i>only</i> Access 2000
+ databases. Access 2003 is not supported.</p>
+ </answer>
+ </faq>
+
+ <faq id="passwords">
+ <question>Are password protected databases supported?</question>
+ <answer>
+ <p>Basic password protection is merely software enforced, and Jackcess
+ does not do any password checking at this point. So, a password
+ protected database can be used the same as any other.</p>
+ </answer>
+ </faq>
+
+ <faq id="mdbtools">
+ <question>
+ How is this different from
+ <a href="http://mdbtools.sf.net">mdbtools</a>?
+ </question>
+ <answer>
+ <p>
+ We want to give a lot of credit to mdbtools. They have
+ been around much longer than Jackcess, and, along with
+ <a href="http://poi.apache.org/">POI</a>,
+ inspired us that a project like this could be done.
+ mdbtools is written in C. There is a Java port of it,
+ but if you've ever read or used a Java port of a C
+ library, you can appreciate the difference between such
+ a library and one written from scratch in Java.
+ </p>
+ <p>
+ At the time of this writing, mdbtools could only read
+ Access databases. Jackcess can also write to them.
+ According to their web site, "Write support is currently being
+ worked on and the first cut is expected to be included in the
+ 0.6 release." This status hasn't changed since we first
+ started work on Jackcess.
+ </p>
+ <p>
+ mdbtools supports Access 97 databases, which Jackcess does not.
+ The Java port of mdbtools also includes an implementation of
+ a small subset of the JDBC APIs. Jackcess does not currently,
+ but a pure Java JDBC driver for Access could certainly be written
+ on top of Jackcess.
+ </p>
+ </answer>
+ </faq>
+
+ <faq id="poi">
+ <question>
+ This looks like a logical addition to
+ <a href="http://poi.apache.org/">POI</a>. Why not integrate
+ with that project?
+ </question>
+ <answer>
+ <p>
+ POI is released under
+ <a href="http://www.apache.org/foundation/licence-FAQ.html">The Apache License</a>.
+ Jackcess is released under
+ <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt">The GNU Lesser General Public License</a>.
+ The Apache license allows closed-source and/or commercial forks.
+ The LGPL does not. If you change or enhance Jackcess, you must contribute
+ your changes back to the project.
+ </p>
+ </answer>
+ </faq>
+
+ <faq id="odbc">
+ <question>
+ I'm using the JDBC/ODBC bridge. Why should I try Jackcess?
+ </question>
+ <answer>
+ <p>
+ <ul>
+ <li>
+ Portability - With Jackcess, your app has one less dependency on Windows.
+ </li>
+ <li>
+ Speed - We had an app that used the ODBC bridge to write data to an
+ Access database. When we switched it over to use Jackcess, it was 5 times faster.
+ </li>
+ <li>
+ Stability - With large amounts of data, we found the ODBC brige to be
+ pretty unreliable.
+ </li>
+ <li>
+ Simplicity - With Jackcess, there is no ODBC configuration to set up.
+ </li>
+ </ul>
+ </p>
+ </answer>
+ </faq>
+
+ <faq id="jdk">
+ <question>What version of the JDK does this require?</question>
+ <answer>
+ <p>
+ Version 1.0 requires JDK 1.4 or higher. The version in CVS HEAD and future releases
+ will require JDK 1.5 or higher.
+ </p>
+ <p>
+ However, some users have contributed patches to make later versions
+ compatible with JDK 1.4. Please check the contributions/ directory
+ for any such patches. Note that any code in this directory is
+ untested and unsupported, so please use at your own risk and do not
+ file bugs based on that code.
+ </p>
+ </answer>
+ </faq>
+
+ <faq id="dependencies">
+ <question>Why do I get a NoClassDefFoundError?</question>
+ <answer>
+ <p>
+ Probably because you're missing a jar that Jackcess depends on from your
+ classpath. Take a look at the <a href="dependencies.html">dependencies list</a>. The first 3 are required for both building and running
+ and can be found either at the <a href="http://commons.apache.org/">
+ Jakarta Commons</a> or the <a href="http://www.ibiblio.org/maven">Ibiblio
+ Maven Repository</a>. The others are only required for building, in which
+ case, Maven will find them for you.
+ </p>
+ </answer>
+ </faq>
+
+ <faq id="speed">
+ <question>Why is jackcess so slow for large updates?</question>
+ <answer>
+ <p>
+ While there is much room for improvement in update speed, one factor
+ is whether or not all writes are automatically forced to disk. By
+ default, "autoSync" is enabled, which keeps the database file in a
+ more consistent state, but can be very slow for large updates.
+ Disabling "autoSync" can dramatically increase update speed, but
+ exceptions during update can leave the file in an unusable state.
+ So, modifying this option essentially trades off speed for
+ recoverability.
+ </p>
+ </answer>
+ </faq>
+
+ <faq id="hms">
+ <question>Who is Health Market Science?</question>
+ <answer>
+ <p>
+ HMS is a small company located in suburban Philadelphia.
+ Using proprietary matching and consolidation software,
+ HMS scientifically manufactures the most comprehensive
+ and accurate healthcare data sets in the market today.
+ <a href="http://www.healthmarketscience.com/company/careers.html">We're hiring!</a>
+ HMS is always looking for talented individuals.
+ </p>
+ </answer>
+ </faq>
+
+ <faq id="bugs">
+ <question>It doesn't work!</question>
+ <answer>
+ <p>
+ Ok, that wasn't a question, but we'll try to respond anyway. :)
+ Jackcess is young, and not that robust yet. As you might imagine,
+ it's kind of hard to test, simply by its nature. There are
+ bugs that we are aware of, and certainly many more that we are not.
+ If you find what looks like a bug, please
+ <a href="http://sf.net/tracker/?group_id=134943&atid=731445">report it.</a>
+ Even better, fix it, and
+ <a href="http://sf.net/tracker/?group_id=134943&atid=731447">submit a patch.</a>
+ </p>
+ </answer>
+ </faq>
+
+ </part>
+
+</faqs>
--- /dev/null
+<?xml version="1.0"?>
+
+<project name="Jackcess">
+ <bannerLeft>
+ <name>Health Market Science</name>
+ <src>http://www.healthmarketscience.com/images/HMS_logo.gif</src>
+ <href>http://www.healthmarketscience.com/</href>
+ </bannerLeft>
+ <body>
+ <menu name="Jackcess">
+ <item name="About" href="index.html"/>
+ <item name="OpenHMS" href="http://openhms.sourceforge.net/"/>
+ <item name="Downloads" href="http://sourceforge.net/project/showfiles.php?group_id=134943"/>
+ <item name="SourceForge Project" href="http://sourceforge.net/projects/jackcess/"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+ <poweredBy>
+ <logo name="Works on Linux" img="http://openhms.sourceforge.net/images/worksonlinux.png"
+ href="http://www.linux.org"/>
+ <logo name="Hosted by SourceForge" img="http://sflogo.sourceforge.net/sflogo.php?group_id=185339&type=1" href="http://sourceforge.net"/>
+ <logo name="Built by Maven" img="./images/logos/maven-feather.png"
+ href="http://maven.apache.org/"/>
+ </poweredBy>
+
+</project>
--- /dev/null
+<?xml version="1.0"?>
+
+<document>
+ <properties>
+ <author email="javajedi@users.sf.net">Tim McCune</author>
+ <title>Java Library for MS Access</title>
+ </properties>
+ <body>
+ <section name="Jackcess">
+ <p>
+ Jackcess is a pure Java library for reading from and writing to MS
+ Access databases. It is part of the <a href="http://openhms.sourceforge.net/">OpenHMS</a> project from <a href="http://www.healthmarketscience.com/">Health Market Science, Inc.</a>. It is not an application. There is no GUI. It's a
+ library, intended for other developers to use to build Java
+ applications. Jackcess is licensed under the
+
+ <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt">GNU Lesser General Public License</a>.
+ Take a look
+ at our <a href="faq.html">Frequently Asked Questions</a>
+ for more info.
+ </p>
+ </section>
+ <section name="Sample code">
+ <p>
+ <ul>
+ <li>Displaying the contents of a table:
+ <pre>System.out.println(Database.open(new File("my.mdb")).getTable("MyTable").display());</pre>
+ </li>
+ <li>Creating a new table and writing data into it:
+ <pre>Database db = Database.create(new File("new.mdb"));
+Column a = new Column();
+a.setName("a");
+a.setSQLType(Types.INTEGER);
+Column b = new Column();
+b.setName("b");
+b.setSQLType(Types.VARCHAR);
+db.createTable("NewTable", Arrays.asList(a, b));
+Table newTable = db.getTable("NewTable");
+newTable.addRow(new Object[] {1, "foo"});</pre>
+ </li>
+ <li>Copying the contents of a JDBC ResultSet (e.g. from an
+external database) into a new table:
+ <pre>Database.open(new File("my.mdb")).copyTable("Imported", resultSet);</pre>
+ </li>
+ <li>Copying the contents of a CSV file into a new table:
+ <pre>Database.open(new File("my.mdb")).importFile("Imported2", new File("my.csv"), ",");</pre>
+ </li>
+ </ul>
+ </p>
+ </section>
+ </body>
+</document>
+++ /dev/null
-<document>
- <properties>
- <title>Release notes</title>
- <author email="javajedi@users.sf.net">Tim McCune</author>
- <author email="jahlborn@users.sf.net">James Ahlborn</author>
- </properties>
- <body>
- <release version="1.1.10" date="TBD">
- </release>
- <release version="1.1.9" date="2007-07-12">
- <action dev="jahlborn" type="fix">
- Add support for writing large table definitions, bug #1675522.
- </action>
- <action dev="jahlborn" type="fix">
- Fix handling of usage maps for large tables, bug #1748827.
- </action>
- <action dev="jahlborn" type="fix">
- Fixed some edge cases for reading numeric columns, bug #1672071.
- </action>
- </release>
- <release version="1.1.8" date="2007-02-13">
- <action dev="jahlborn" type="update">
- Additional info in DataType to support better type validation
- (scale/precision range). Add "unit size" concept.
- </action>
- <action dev="jahlborn" type="update">
- Add CLOB support in JDBC handling. Add general support for large
- types (BLOB/CLOB).
- </action>
- <action dev="jahlborn" type="update">
- Enhance Database.copyTable/importReader to allow for better control
- over column definitions and row values through the ImportFilter.
- Change default type translation to handle large and variable length
- types better.
- </action>
- </release>
- <release version="1.1.7" date="2006-10-02">
- <action dev="jahlborn" type="update">
- Refactored DataType class, cleaned up a lot of "custom" data type code
- springled throughout the codebase.
- </action>
- <action dev="jahlborn" type="update">
- Added sanity checking on table creation (check column/table properties
- for validity).
- </action>
- <action dev="jahlborn" type="update">
- Clean up index reading/writing of text columns, add support for more
- characters
- </action>
- <action dev="jahlborn" type="update">
- Support reading 'compressed' indexes (fix 1563654)
- </action>
- <action dev="jahlborn" type="update">
- Implement "overflow" row reading.
- </action>
- <action dev="jahlborn" type="fix">
- Allow multi-page long value reading.
- </action>
- <action dev="jahlborn" type="update">
- Implement multi-page long value writing.
- </action>
- <action dev="jahlborn" type="fix">
- Fix decimal data type writing.
- </action>
- <action dev="jahlborn" type="update">
- Add support for opening files read-only (fix 1545857)
- </action>
- </release>
- <release version="1.1.6" date="2006-08-07">
- <action dev="jahlborn" type="fix">
- Handle more tables with more index slots than actual indexes (fix bug
- 1530312)
- </action>
- <action dev="jahlborn" type="fix">
- Clean up reading/writing 3-byte ints; long value length is 3-bytes
- (fix bug 1449812)
- </action>
- <action dev="jahlborn" type="fix">
- Fix handling of skipped rows
- </action>
- <action dev="jahlborn" type="fix">
- When reading multi-page table def, flip buffer before parsing (fix bug
- 1306970)
- </action>
- <action dev="jahlborn" type="update">
- Treat table names as case insensitive; use stored table names when
- instantiating tables
- </action>
- <action dev="jahlborn" type="update">
- Make Database and Table Iterable
- </action>
- <action dev="jahlborn" type="fix">
- Use uppercase names when adding text columns to indexes, which fixes
- long standing problem with table names starting with lowercase
- characters (and other situations where tables could not be opened in
- Access). Remove hack which forced every table name to have uppercase
- first character.
- </action>
- <action dev="jahlborn" type="update">
- Clean up compressed text handling.
- </action>
- <action dev="jahlborn" type="update">
- Implement reading multi-page long binary values
- </action>
- </release>
- <release version="1.1.5" date="2006-07-25">
- <action dev="jahlborn" type="update">
- Add support for currency columns (thanks to James Schopp).
- </action>
- <action dev="jahlborn" type="fix">
- Handle tables with no variable length columns correctly.
- </action>
- <action dev="jahlborn" type="fix">
- Handle reading with deleted columns.
- </action>
- <action dev="jahlborn" type="update">
- Read information on primary keys and include in Index.
- </action>
- <action dev="jahlborn" type="fix">
- Fix some issues around reading indexes.
- </action>
- <action dev="jahlborn" type="update">
- Add write support for numeric/GUID columns.
- </action>
- <action dev="javajedi" type="update">
- Added getRowCount(), getName(), updated toString() on Table.
- </action>
- </release>
- <release version="1.1.4" date="2006-6-15">
- <action dev="jahlborn" type="fix">
- Missing break in switch condition.
- </action>
- <action dev="jahlborn" type="fix">
- Fixes
- to reading/writing MEMO/OLE columns.
- </action>
- <action dev="jahlborn" type="update">
- Made exceptions thrown when opening empty or nonexistent files more
- specific.
- </action>
- <action dev="jahlborn" type="fix">
- Apply patch from Jon Iles for handilng variable length columns.
- </action>
- <action dev="jahlborn" type="fix">
- Apply patch from Jon Iles for handling dates.
- </action>
- <action dev="jahlborn" type="fix">
- Apply patch from Jon Iles for reading GUIDs.
- </action>
- </release>
- <release version="1.1.3" date="2006-2-16">
- <action dev="jahlborn" type="fix">
- Fix parsing of NUMERIC type.
- </action>
- <action dev="javajedi" type="fix">
- Applied Jon Iles' patch to allow large table definitions to be read.
- </action>
- </release>
- <release version="1.1.2" date="2005-8-26">
- <action dev="javajedi" type="fix" issue="1273712">
- Fixed bug where writing null values into fixed-width columns was
- failing.
- </action>
- </release>
- <release version="1.1.1" date="2005-8-20">
- <action dev="javajedi" type="fix" issue="1261536">
- Fixed bug in reading index count from table definition. Skip overflow
- rows.
- </action>
- </release>
- <release version="1.1" date="2005-8-12">
- <action dev="javajedi" type="update">
- JDK 1.5 upgrades
- </action>
- <action dev="javajedi" type="update">
- Applied Mitchell Friedman's patch for support of additional JDBC data
- types.
- </action>
- <action dev="javajedi" type="update">
- Added support for deleted rows.
- </action>
- </release>
- <release version="1.0" date="2005-4-7">
- <action dev="javajedi" type="add">
- Initial release
- </action>
- </release>
- </body>
-</document>
+++ /dev/null
-<?xml version="1.0"?>
-
-<faqs title="Frequently Asked Questions">
-
- <part id="general">
- <title>General</title>
-
- <faq id="linux">
- <question>Does this work on Linux/Unix?</question>
- <answer>
- <p>Yep, Jackcess is pure Java. It will work on any
- Java Virtual Machine (1.4+).</p>
- </answer>
- </faq>
-
- <faq id="formats">
- <question>What Access formats does it support?</question>
- <answer>
- <p>Jackcess currently supports <i>only</i> Access 2000
- databases. Access 2003 is not supported.</p>
- </answer>
- </faq>
-
- <faq id="passwords">
- <question>Are password protected databases supported?</question>
- <answer>
- <p>Basic password protection is merely software enforced, and Jackcess
- does not do any password checking at this point. So, a password
- protected database can be used the same as any other.</p>
- </answer>
- </faq>
-
- <faq id="mdbtools">
- <question>
- How is this different from
- <a href="http://mdbtools.sf.net">mdbtools</a>?
- </question>
- <answer>
- <p>
- We want to give a lot of credit to mdbtools. They have
- been around much longer than Jackcess, and, along with
- <a href="http://jakarta.apache.org/poi">POI</a>,
- inspired us that a project like this could be done.
- mdbtools is written in C. There is a Java port of it,
- but if you've ever read or used a Java port of a C
- library, you can appreciate the difference between such
- a library and one written from scratch in Java.
- </p>
- <p>
- At the time of this writing, mdbtools could only read
- Access databases. Jackcess can also write to them.
- According to their web site, "Write support is currently being
- worked on and the first cut is expected to be included in the
- 0.6 release." This status hasn't changed since we first
- started work on Jackcess.
- </p>
- <p>
- mdbtools supports Access 97 databases, which Jackcess does not.
- The Java port of mdbtools also includes an implementation of
- a small subset of the JDBC APIs. Jackcess does not currently,
- but a pure Java JDBC driver for Access could certainly be written
- on top of Jackcess.
- </p>
- </answer>
- </faq>
-
- <faq id="poi">
- <question>
- This looks like a logical addition to
- <a href="http://jakarta.apache.org/poi">POI</a>. Why not integrate
- with that project?
- </question>
- <answer>
- <p>
- POI is released under
- <a href="http://www.apache.org/foundation/licence-FAQ.html">The Apache License</a>.
- Jackcess is released under
- <a href="http://www.gnu.org/copyleft/lesser.html">The GNU Lesser General Public License</a>.
- The Apache license allows closed-source and/or commercial forks.
- The LGPL does not. If you change or enhance Jackcess, you must contribute
- your changes back to the project.
- </p>
- </answer>
- </faq>
-
- <faq id="odbc">
- <question>
- I'm using the JDBC/ODBC bridge. Why should I try Jackcess?
- </question>
- <answer>
- <p>
- <ul>
- <li>
- Portability - With Jackcess, your app has one less dependency on Windows.
- </li>
- <li>
- Speed - We had an app that used the ODBC bridge to write data to an
- Access database. When we switched it over to use Jackcess, it was 5 times faster.
- </li>
- <li>
- Stability - With large amounts of data, we found the ODBC brige to be
- pretty unreliable.
- </li>
- <li>
- Simplicity - With Jackcess, there is no ODBC configuration to set up.
- </li>
- </ul>
- </p>
- </answer>
- </faq>
-
- <faq id="jdk">
- <question>What version of the JDK does this require?</question>
- <answer>
- <p>
- Version 1.0 requires JDK 1.4 or higher. The version in CVS HEAD and future releases
- will require JDK 1.5 or higher.
- </p>
- <p>
- However, some users have contributed patches to make later versions
- compatible with JDK 1.4. Please check the contributions/ directory
- for any such patches. Note that any code in this directory is
- untested and unsupported, so please use at your own risk and do not
- file bugs based on that code.
- </p>
- </answer>
- </faq>
-
- <faq id="dependencies">
- <question>Why do I get a NoClassDefFoundError?</question>
- <answer>
- <p>
- Probably because you're missing a jar that Jackcess depends on from your
- classpath. Take a loook at the <a href="http://jackcess.sourceforge.net/dependencies.html">dependencies list</a>. The first 3 are required for both building and running
- and can be found either at the <a href="http://jakarta.apache.org/commons/">
- Jakarta Commons</a> or the <a href="http://www.ibiblio.org/maven">Ibiblio
- Maven Repository</a>. The other 3 are only required for building, in which
- case, Maven will find them for you.
- </p>
- </answer>
- </faq>
-
- <faq id="speed">
- <question>Why is jackcess so slow for large updates?</question>
- <answer>
- <p>
- While there is much room for improvement in update speed, one factor
- is whether or not all writes are automatically forced to disk. By
- default, "autoSync" is enabled, which keeps the database file in a
- more consistent state, but can be very slow for large updates.
- Disabling "autoSync" can dramatically increase update speed, but
- exceptions during update can leave the file in an unusable state.
- So, modifying this option essentially trades off speed for
- recoverability.
- </p>
- </answer>
- </faq>
-
- <faq id="hms">
- <question>Who is Health Market Science?</question>
- <answer>
- <p>
- HMS is a small company located in suburban Philadelphia.
- Using proprietary matching and consolidation software,
- HMS scientifically manufactures the most comprehensive
- and accurate healthcare data sets in the market today.
- <a href="http://www.healthmarketscience.com/company/careers.html">We're hiring!</a>
- HMS is always looking for talented individuals.
- </p>
- </answer>
- </faq>
-
- <faq id="bugs">
- <question>It doesn't work!</question>
- <answer>
- <p>
- Ok, that wasn't a question, but we'll try to respond anyway. :)
- Jackcess is young, and not that robust yet. As you might imagine,
- it's kind of hard to test, simply by its nature. There are
- bugs that we are aware of, and certainly many more that we are not.
- If you find what looks like a bug, please
- <a href="http://sf.net/tracker/?group_id=134943&atid=731445">report it.</a>
- Even better, fix it, and
- <a href="http://sf.net/tracker/?group_id=134943&atid=731447">submit a patch.</a>
- </p>
- </answer>
- </faq>
-
- </part>
-
-</faqs>
+++ /dev/null
-<?xml version="1.0"?>
-
-<document>
- <properties>
- <author email="javajedi@users.sf.net">Tim McCune</author>
- <title>Java Library for MS Access</title>
- </properties>
- <body>
- <section name="Jackcess">
- <p>
- Jackcess is a pure Java library for reading from and writing to MS
- Access databases. It is part of the <a href="http://openhms.sourceforge.net/">OpenHMS</a> project from <a href="http://www.healthmarketscience.com/">Health Market Science, Inc.</a>. It is not an application. There is no GUI. It's a
- library, intended for other developers to use to build Java
- applications. Jackcess is licensed under the
-
- <a href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>.
- Take a look
- at our <a href="faq.html">Frequently Asked Questions</a>
- for more info.
- </p>
- </section>
- <section name="Sample code">
- <p>
- <ul>
- <li>Displaying the contents of a table:
- <pre>System.out.println(Database.open(new File("my.mdb")).getTable("MyTable").display());</pre>
- </li>
- <li>Creating a new table and writing data into it:
- <pre>Database db = Database.create(new File("new.mdb"));
-Column a = new Column();
-a.setName("a");
-a.setSQLType(Types.INTEGER);
-Column b = new Column();
-b.setName("b");
-b.setSQLType(Types.VARCHAR);
-db.createTable("NewTable", Arrays.asList(a, b));
-Table newTable = db.getTable("NewTable");
-newTable.addRow(new Object[] {1, "foo"});</pre>
- </li>
- <li>Copying the contents of a JDBC ResultSet (e.g. from an
-external database) into a new table:
- <pre>Database.open(new File("my.mdb")).copyTable("Imported", resultSet);</pre>
- </li>
- <li>Copying the contents of a CSV file into a new table:
- <pre>Database.open(new File("my.mdb")).importFile("Imported2", new File("my.csv"), ",");</pre>
- </li>
- </ul>
- </p>
- </section>
- </body>
-</document>
+++ /dev/null
-<?xml version="1.0"?>
-
-<project name="Jackcess">
- <title>Jackcess</title>
- <body>
- <menu name="Jackcess">
- <item name="OpenHMS" href="http://openhms.sourceforge.net/"/>
- <item name="Downloads" href="http://sourceforge.net/project/showfiles.php?group_id=134943"/>
- <item name="SourceForge Project" href="http://sourceforge.net/projects/jackcess/"/>
- </menu>
- <menu type="footer">
- <item name="Works on Linux" img="worksonlinux.png" href="http://www.linux.org"/>
- <item name="Hosted by SourceForge" img="http://sflogo.sourceforge.net/sflogo.php?group_id=134943&type=1" href="http://sourceforge.net"/>
- </menu>
- </body>
-</project>