LiteBase is a simplified and low cost database management system for PDAs and smartphones compatible with the SQL language. The product runs jointly with TotalCross virtual machine installed in all supported devices.
· types: SHORT, INT, LONG, DATE, DOUBLE, DATE, DATETIME, NULL, BLOB e VARCHAR
· DML commands: SELECT, INSERT, UPDATE e DELETE
· DDL commands: CREATE TABLE, ALTER TABLE, CREATE INDEX
· aggregation and ordination functions:MAX, MIN, SUM, AVG, GROUP BY, ORDER BY
· miscellaneous functions: ABS, UPPER, LOWER, YEAR, MONTH, DAY, HOUR, MINUTE, MILLIS
· sd card table handling
· join clause support
· compound primary keys and indexes
· multithread support
· The DEMO version will work during 80 hours of continuous use. After this period, you are allowed to hard-reset the device and install it again.
What's New in This Release:
· Corrected a bug with date and datetime using default on JavaSE and Blackberry.
· Corrected a bug of possible composed index corruption when updating or deleting data.
· Corrected a possible crash if the path had more than 255 characters on Windows 32, Windows CE, Palm, Android, iPhone, and iPad.
· Corrected the fact that a field used in a function can't be fetched using only the name of the field unless it is also in the select field list.
· Corrected a bug when using a default value of type string which could become messed up on Windows 32, Windows CE, Palm, Android, iPhone, and iPad.
· Corrected a possible bug when using ResultSetMetaData in tables with more than 128 columns on Windows 32, Windows CE, Palm, Android, iPhone, and iPad.
What's New in 2.51:
· Removed a possible exception when recovering an ascii table with indices on JavaSE and Blackberry.
· Removed a possible NPE when using indices with null on JavaSE and Blackberry.
What's New in 2.27:
· Solved a problem with selecting all the columns of a 128-column table on Windows 32, Windows CE, Linux, Palm, Android, and iPhone.
· Added methods to indicate if a column of a result set is not null or has default values.
· Improved table files flush dealing.
· The connection where the result set was created can't be closed while using it.
· The new application id of SQLConsole must be 4 characters long.
· Drop index * on table_name wold make the index reappear after closing the driver and reusing table_name.
· Solved a bug on delete when trying to delete a key from a column which has index and there are deleted rows with the same key.
· Solved a bug on select prepared statement with like not returning the correct result on Windows 32, Windows CE, Linux, Palm, Android, and iPhone.
· Corrected a possible crash if the number of columns of the insert were greater than the one of table definition on Windows 32, Windows CE, Linux, Palm, Android, and iPhone.
· Corrected a bug of a delete with no where clause not taking the already deleted rows into consideration when returning the number of deleted rows.
· Corrected a bug of an exception being thrown when trying to delete a row with a null in column which has an index.
· Corrected a possible bug with MAX() and MIN() with strings on Windows 32, Windows CE, Linux, Palm, Android, and iPhone.
· Corrected a DriverException not being thrown when issuing ResultSet.getChars() for a column that is not of CHARS, CHARS NOCASE, VARCHAR, or VARCHAR NOCASE.
· Corrected a DriverException not being thrown when fetching in some cases when trying to fetch data from an invalid result set column.
· Corrected a possible NullPointerException when creating an index in a column with null values on Java SE and BlackBerry.
· Purge must truncate the .db file and flush .dbo file in order to ensure that a future recoverTable() won't corrupt the table on Windows 32, Windows CE, Linux, Palm, Android, and iPhone.
· Corrected a possible crash if one tries to update more than 128 fields in a table on Windows 32, Windows CE, Linux, Palm, Android, and iPhone,
· Corrected a possible insertion of a negative short column being recovered in the select as positive on Windows 32, Windows CE, Linux, Palm, Android, and iPhone.
· Corrected a bug in convert() and recoverTable() which could not find the table .db file.
· Corrected order by or group by with strings being too slow.
· Corrected a bug of recover table not working correctly if the table has indices.
· RowIterator.close() now flushes the setSynced() calls.
· Solved possible crashes when using a table recovered which was being used with setRowInc() before not being closed properly on JavaSE, Windows 32, Windows CE and Palm
What's New in 2.26a:
· Corrected a possible bug when comparing null strings on Windows 32, Windows CE, Palm, iPhone, and Android.
· Corrected possible path problems on Windows CE and Palm.
· Improved index application so that it may be applied to more parts of a where clause. Now it is no longer necessary to use parentheses in a special way in order to make the indices be applied when the where clause is of the form A and B and C ... and Z, or A or B or C ... or Z.
· Now a table won't be marked as not closed properly if the application stops suddenly and the table was not modified since its last opening. That is, if a table is just opened for a select, for instance, even if the application crashes during it, no recoverTable() is needed.
· The aggregation functions MAX() and MIN() now work for CHAR, VARCHAR, CHAR NOCASE, and VARCHAR NOCASE column types.
· Added LitebaseConnection.isOpen(), which indicates if a table is open in the current connection.
· Added the application Migration to help the user to migrate tables from a previous table format to the current one.
· A table without metadata (with an empty .db, for instance) can't be recovered: it is corrupted. That is, it can't be used with recoverTable() and a DriverException will be thrown instead of a TableNotClosedException.
· Strings are not loaded anymore in the temporary table when building result sets. This will improve memory usage.
· Added LitebaseConnection.dropDatabase(), a static method to drop all the files from a data base given its creation id, path and slot (used only on Palm).
· Corrected a constant Java String truncation when using it with an insert or update prepared statement and its size were bigger than the column definition on Windows 32, Windows CE, Palm, iPhone, and Android.
· Corrected a bug that could make aggregation function not work properly.
· Corrected a bug where a query of the form "select year(field) as years from table" could be confounded with "select count(*) as years from table".
· Corrected a bug that would make a prepared statement with group by not work correctly after the first execution.
· Corrected a bug that would make a prepared statement with where clause and indices not work correctly after the first execution.
· Prepared statement is now a singleton. But please don't re-prepare the same prepared statement for the same driver instance and table more than once. Remember that useless method calls makes the application slower.
· Now Litebase.prc won't vanish on Palm if the device is reseted by the user after closing a Litebase application.
· Minimum float and double values for POSIX (1.17549435e-38 and 2.2250738585072014e-308, respectively) are different from IEEE values (1.4e-45 and 4.9E-324, respectively). So, when using Litebase on iPhone, the POSIX ranges must be respected.
· Corrected short range limit too small for default values on Windows 32, Windows CE, Palm, iPhone, and Android
What's New in 2.25:
· on iPhone 2+, manual installation of Litebase (using dpkg) should now automatically create the symbolic links required to allow the Litebase to be loaded by the TotalCrossVM.
· Corrected an IndexOutOFBoundsException when an insert or update prepared statement had 128 parameters on Java SE and BlackBerry.
· Corrected a possible index corruption when updating each node children on Windows 32, Windows CE, Palm, Android, and iPhone.
· Corrected a possible "An attempt was made to move the file pointer before the beginning of the file." on some Windows CE devices when doing a purge.
· Corrected a bug that could not build the index correctly if there was the value 0 inserted in the index on Windows 32, Windows CE, Palm, Android, and iPhone.
· Corrected a possible crash when the table has 128 columns on Windows 32, Windows CE, Palm, Android, and iPhone.
· A quote was not being correctly inserted in a string when not using prepared statements.
· A PrimaryKeyViolation was not being thrown when two strings with the same prefix were inserted and the field definition had the size of the prefix and a primary key.
· It was possible to create a composed index with duplicated column names.
· Removed a possible ClassCastException when passing an insert / update / delete to a PreparedStatement.executeQuery() on JavaSE and BlackBerry. The correct exception is a DriverException.
· Corrected a possible crash when using the default logger on Windows 32, Windows CE, Palm, Android, and iPhone.
· Corrected possible memory leaks and crashes when LitebaseConnection.convert() fails on Windows 32, Windows CE, Palm, Android, and iPhone.
· A numeric constant in a boolean clause must have its type considered to be double.
· Join now behaves well with functions in columns with an index.
· RowIterator must throw an exception if its driver is closed.
· When using short values, if it is out of range an exception must be thrown on Windows 32, Windows CE, Palm, Android, and iPhone.
What's New in 2.24
· Corrected an inconsistency between java and native versions that would raise an IndexOutOfBoundsException when using a table created on Windows 32, Windows CE, Palm, Android, Linux, or iPhone on Java or BlackBerry.
· Improved memory usage on BlackBerry.
· Corrected a bug that would make Litebase not use the correct rowid after a recoverTable().
· Implemented a workaround for a bug in the BlackBerry 9000 file system. This bug may cause a drop table operation to fail.
· Corrected a bug that would throw an exception when re-creating an erased index file on Windows 32, Windows CE, Palm, Android, Linux, or iPhone on Java or BlackBerry.