UltraLite and UltraLite Java edition database limitations

The following table illustrates hard limits that apply to UltraLite and UltraLite Java edition databases. In many cases, the limits are beyond the maximum capabilities of mobile devices. Performance considerations and device capabilities impose stricter limitations.

Item UltraLite database limitations UltraLite Java edition database limitations
Database and file size 1 file per database. The file size is limited by the operating system and file system. 1 file per database. The file size is limited by the operating system and file system.
Temporary file size Limited by the operating system. Limited by the operating system.
Cache size Limited by the available memory on the device. Limited by the available memory on the device.
Dynamic cache sizing

UltraLite allows you to set an initial, minimum, and/or maximum cache size for a database. The size of the cache is optimized by UltraLite on an ongoing basis, up to the maximum size (if specified). See:

UltraLite Java edition databases support fixed cache sizes only.
Maximum number of concurrent open connections supported by a database Up to 14. No limit.
Maximum number of concurrent open connections to all databases Up to 16 on a mobile device, and up to 64 on a desktop. No limit.
Maximum number of databases that can run concurrently The UltraLite engine supports up to 8 on a mobile device, and up to 32 on a desktop. No limit.
Direct device connections to a Windows Mobile device from the desktop. You prefix the connection string with WCE:\ before allowing desktop connections to the database that you deploy on a Windows Mobile device. See Windows Mobile. Not applicable.
SQL communication areas (SQLCA) Up to 63. Not applicable.
File-based persistent store (database size) 2 GB file or operating system limit on file size. Limited by the operating system.
Rows per table

Up to 16 million.

Sometimes changes to the row (deletes and updates) and other state information are maintained with the row data. This information allows those changes to be synchronized. So, the actual row limit can be smaller than 16 million, depending on the number of transactions on a table between synchronization, or whether the table is synchronized at all. See UltraLite transaction processing.

Up to 16 million.

Sometimes changes to the row (deletes and updates) and other state information are maintained with the row data. This information allows those changes to be synchronized. So, the actual row limit can be smaller than 16 million, depending on the number of transactions on a table between synchronization, or whether the table is synchronized at all. See UltraLite transaction processing.

Row Size

The length of each packed row must not exceed the page size. See Row packing and table definitions.

Character strings are stored without padding when they are shorter than the column size. This restriction excludes columns declared as LONG BINARY and LONG VARCHAR as these are stored separately.

Row contents (after possible compression) must not exceed the database page size.
Rows per database Limited by the persistent store. Limited by the persistent store.
Table size Limited by the database size. Limited by the database size.
Tables per database Limited by the database size. Up to 32000.
Columns per table Row size is limited by page size, so the practical limit on the number of columns per table is derived from this size. Typically, this practical limit is much less than 4000. Row size is limited by page size, so the practical limit on the number of columns per table is derived from this size. Typically, this practical limit is much less than 4000.
Indexes per table Limited by the database size. Limited by the database size.
Tables referenced per transaction No limit. No limit.
Stored procedure length Not applicable. Not applicable.
Stored procedures per database Not applicable. Not applicable.
Triggers per database Not applicable. Not applicable.
Nesting Not applicable. Not applicable.
Number of publications Up to 63. Up to 63.
Number of database pages Limited by file size. Up to 216.
Database page size 16 KB. Minimum 256 bytes; up to 16 KB.
Cursors per connection The number of maximum allowable cursors on a given connection to an UltraLite database is 64 (all platforms). The number of maximum allowable cursors on a given connection to an UltraLite database is 64 (all platforms).
Strings The row must fit on a page. The row must fit on a page.
Binary data types The row must fit on a page. The row must fit on a page.
Long binary/long varchar size Limited only by database size. Limited only by database size.
Blob size Limited by file size. Up to 224 bytes.
Available Isolation levels 0 (read uncommitted) or 1 (read committed). 0 (read uncommitted).
Cascading updates and deletes Declarative referential integrity, where deletes and updates are cascaded, is a feature that is not supported in UltraLite databases, except during synchronization when deletes are cascaded for this purpose. Not supported.
Event scheduling and handling An UltraLite event model differs from SQL Anywhere. Not supported.
UltraLite Java edition database compatibility

UltraLite databases are not interchangeable with UltraLite Java edition databases. An UltraLite database can be converted into an UltraLite Java edition database and vice versa using the respective load and unload utilities. See:

UltraLite databases are not interchangeable with UltraLite Java edition databases. An UltraLite database can be converted into an UltraLite Java edition database and vice versa using the respective load and unload utilities. See:

 Object store limitations for BlackBerry
 See also