Awake SQL - Remote JDBC access over HTTP
Access remote SQL Databases securely from Android and Java Desktop applications using JDBC
Awake SQL combines a virtual JDBC Driver and a framework to enable remote JDBC access over HTTP. Android
and Java Desktop application developers can access remote SQL databases in the cloud by simply including standard JDBC calls in
their code, just like they would for a local database. This greatly eases the development of Android, Swing and JavaFX applications that
need to access remote data.
Awake SQL comes with a complete set of features: main data types are implemented, including BLOBs/CLOBs, and transactions are supported.
Security has been taken into account starting with the design stage:
server-side configuration lets admins specify strong authentication and security rules in order to ensure database security.
Awake SQL is licensed through the GNU General Public License (GPLv3). A commercial license is also available.
Awake SQL Schema - Click to enlarge
Supported SQL Databases and JDBC Drivers / Main Features
- Compatible with Servlets 2.5+ containers, JDBC 4+ drivers and main SQL compliant databases.
- Works across all major platforms:
- Supports Android, Windows, Unix/Linux and MacOS X on client side.
- Supports Windows, Unix/Linux and MacOS X on server side.
- Intensively tested with major SQL databases and JDBC Drivers:
- Allows standard JDBC syntax for all operations.
- Client/Server communications and exchanges entirely performed over HTTP or HTTPS on standard ports.
- Supports JDBC Connections through client side proxy.
- No firewall configuration required for Swing, JavaFX and SWT applications in order to access the remote SQL databases.
- Optimized and designed to manage heavy traffic with JDBC connection pooling, data streaming, stateless sessions, etc.
- Full default configuration included for easy and rapid deployment.
- Configuration-neutral. Configuration is done through getters in Java classes using Dependency injection.
This allows you to easily define your configuration strategy and implementation (.ini file, XML, etc.) A small set of configuration methods can be used as-is or overloaded with your own code.
(To learn more, see the User Guide.)
- Supports multi databases configuration per installation.
- Supports simultaneous JDBC Connections from client side.
- Supports JDBC calls from Java threads.
- Entirely coded in Java.
- Also packaged as a real JDBC Driver for use with third party programs and/or explorer tools like SquirreL.
- Developed by and for Android, Swing and JavaFX developers.
Data Management / JDBC data types
- Supports SQL Commit & Rollback, including Savepoints.
- Supports main JDBC data types for columns: Boolean, Integer, Short, Double, Float, BigDecimal, Long, String, Date, Time, Timestamp.
- Supports URL & Arrays.
- Supports RowId.
- Supports Blobs and Clobs with no size limits.
- Supports queries returning ResultSet with no size limits.
- Support setting limits on the size of requests.
- Uses input stream and output stream I/O for BLOB/CLOB updates and reads.
- Uses input stream and output stream I/O for ResultSet transfer.
- Includes built-in and easy to use helper classes for GUI Progress Bar implementations.
- Fully supports database catalog queries (DatabaseMetaData
- Supports stored procedures.
Limitations in v2.0
The following JDBC features are not supported or implemented in version 2.0:
- Advanced JDBC data types: Struct, NClob, SQLXML and Typemaps (planned).
- Some Statement methods: getWarnings, isPoolable/setPoolable, getMoreResults, setCursorName (planned).
- Updatable ResultSet.
- RowSet Objects.