This is a README.txt file for SQLJet v1.0.4.
SQLJet is a pure Java (tm) embedded database management engine with SQLite format support.

1. DESCRIPTION

SQLJet is a pure Java embedded database management engine with SQLite format support.

2. LICENSING

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

For information on how to redistribute this software under 
the terms of a license other than GNU General Public License 
contact TMate Software at support@sqljet.com 

3. FEATURES

* Current version of SQLJet provides API to manipulate B-Tree data structures 
  (tables and indices) stored in the database and database schema. 

* SQLJet database format is compatible with SQLite 3.6, 
  i.e. databases created with SQLJet could be used by SQLite 3.6 (assuming schema is valid) 
  and vice versa, databases created by SQLite 3.6 are understood and could be read and modified 
  by SQLJet.

* SQLJet is pure Java and could be ran on any platform under JVM 1.5 or newer.

* SQLJet implements ACID transactions.    

4. RESOURCES

SQLJet web site: http://sqljet.com/
SQLJet source code: http://svn.sqljet.com/repos/sqljet/
SQLJet API usage tutorial: http://sqljet.com/tutorial.html

SQLite web site: http://sqlite.org/

5. CONTACTS

On all questions related to SQLJet please contact us at support@sqljet.com