AS OF 2.1.something, after creating database SET PASSWORD... SET FILES WRITE DELAY 10 millis; SET DATABASE TRANSACTION CONTROL mvcc; I hereby define "dataset name" to be the root filename of the database files for any database. By root filename, I mean the part of the database filenames before the . + extension (this is the only part of the filename that they all have in common). The exceptional case of a memory-only database has a dataset name of ".", by (my) definition. They only have instructions for Windows users :( Database files, when there are any, reside in the $PWD of where the process was that started the DB (starting the Server or the Tools in the case of Standalone). Filenames consiste of the dataset name plus one of three extensions. Example: test.properties test.data test.script Add $HSQLDB_HOME/lib/hsqldb.jar to your $CLASSPATH You can use DatabaseManager or QueryTool with any server (assuming that you can reach it). (I refer to these items below as "the Tools") java org.hsqldb.util.DatabaseManager \ ['-?'] [-url jdbc:hsqldb:hsql://onella] (don't forget to refresh the tree) IMPORTANT: Choose your Engine type FIRST, because this will change the URL field! java org.hsqldb.util.QueryTool \ ['-?'] [-url jdbc:hsqldb:hsql:] [-database //onella]* [-test false] (Loads up a goofy query by default that in most cases has no relationship to your data) Beware that you need to use "-test false" if you don't want to add test data to your target database. The url arg is actually the URL up-to-and-including the last colon. The database arg is actually just the last part of the URL, which, in the case of Server engines, is not a dataset identifier. (Use the '-?' for syntax message). Note that they run in the foreground, so "> /somewhere 2>&1 &" if you want your shell back. Default data sources (if you don't give an Applet property of "database" not give a command-line argument). QueryTool defaults to the in-memory database ".". DatabaseManager has no default. It gives you a nice chooser. Specify database with Applet param of ".", arg of -database for QueryTool, full -url for DatabaseManager (you can't just give the db). HSQL Engine Modes: (It appears that this is tied to the URL, but not the Driver, which is always org.hsqldb.jdbcDriver) URL: jdbc:hsqldb:. In-Memory. No persistence. An applet, for example, could have his very own database running in his memory. There is no daemon. Database uses no network resources. For some reason, with in-memory database ".", sometimes you get default data and sometimes you don't. This happens with QueryTool on the command-line, and with DatabaseManager from Applet. Otherwise you get an empty database. ($PWD doesn't matter. Web access doesn't matter because you can run them locally with a browser like file:/path/to.file.html) URL: jdbc:hsqldb:DBNAME Standalone. Uses files only. No daemon. Just connect with DatabaseManager and it will start up the DB. Clients/tools just access the data files. Database uses no network resources. Server. URL: jdbc:hsqldb:hsql://HOSTNAME[:port] (port defaults to 9001) STARTUP: java org.hsqldb.Server ['-?'] [-port X] [-database DBNAME]* AND WebServer. URL: jdbc:hsqldb:http://hostname[:port] (port defaults to 80) STARTUP: java org.hsqldb.WebServer ['-?'] [-port X] [-database DBNAME]* Daemon runs in foreground (just like the tools). Listens to port 9001/tcp (80 for Web) by default. (tools and apps connect up to this) Shut down with Interrupt signal, or "shutdown" command with either tool. IMPORTANT: With Web/Server engines, the dataset identifier is only used by the server daemon to name his data files. The clients use a URL ending in a hostname or hostname:port to locate the data daemon. Apparently can not run more than one dataset on one port. WebServer-specific. Lame HTTP/1.0 web server, but for POSTS, instead of posting to a CGI, username + password + statement are passed to DB and executed. Query results are returned. * Note the ambiguity with database arguments between QueryTool and Server. QueryTool url arg always ends with : (which is dumb if you ask me), and the database starts with / for servers. Server database arg is just the most user-friendly portion of the name, like "test".