HSQLDB:Tips and Tricks
The Base FAQ (Frequently Asked Questions)
- See also the Base (FAQ) for additional information on these and other topics.
How to connect to a "normal" (not embedded) HSQL database?
- Connect via JDBC
- as driver class, use org.hsqldb.jdbcDriver
- enter the URL to your HSQL database as described in the HSQLDB documentation, and append
;default_schema=trueto the URL
How to migrate data between embedded and non-embedded HSQLDB?
Starting work for this section see blog entry titled Migrating Base embedded db to HSQL server.
How to know the version of the embedded HSQLDB?
You can determine the version of the embedded HSQLDB engine with the following Basic macro
Option Explicit Sub hsqlVersion Dim databaseURLOrRegisteredName As String databaseURLOrRegisteredName = "hsqldb" ' adjust this string to your needs. It needs to be the name of a registered database, ' or a complete URL Dim databaseContext As Object databaseContext = createUnoService( "com.sun.star.sdb.DatabaseContext" ) Dim databaseDocument As Object databaseDocument = databaseContext.getByName( databaseURLOrRegisteredName ) Dim connection As Object connection = databaseDocument.getConnection( "", "" ) MsgBox "product version: " & connection.getMetaData().getDatabaseProductVersion() connection.close End Sub
Note that this will give you a version number such as "1.8.0", but not "188.8.131.52".
The minor version can be obtained by issueing a SQL statement in the query designer's "Direct SQL" mode:
will give you the full version. Drawbacks:
- This is only available in 184.108.40.206 and later
- in 220.127.116.11, it - wrongly - returns 18.104.22.168 :(
If you replace
getDatabaseFullProductVersion in the above SQL statement with
getDatabaseProductVersion, then you'll get the same result as with the macro above.
If you, for whatever reason, can not connect to embedded HSQL databases anymore, but want to know the version you're using, nonetheless, do the following:
- create a database pointing to some external HSQLDB (new DB of type JDBC, with an URL "jdbc:hsqldb:file:foo" - this will create a HSQL database named "foo" in the processes startup directory (you can also specify a complete path).
- create a new query in SQL view
- press the "Run SQL Direct" button in the toolbar
- execute the query
How to retrieve the definition of a view
In Base once a view has been created there is no obvious way to retrieve the view definition. You can do so however using a query.
If the database had view named View1 you would do the following:
- Open a new Query design window, in SQL view mode.
- Enter the following select statement -
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.SYSTEM_VIEWS WHERE TABLE_NAME = "View1"
You can not alter the definition directly in this system table, however if you select create view in Base you can turn off the designer and copy paste the select statement that you just received, make whatever changes you need and save it as a new view.