提交 b492f851 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 93c46a61
......@@ -3,50 +3,50 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Advanced Topics
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<h1>Advanced Topics</h1>
<a href="#result_sets">
Result Sets</a><br>
Result Sets</a><br />
<a href="#large_objects">
Large Objects</a><br>
Large Objects</a><br />
<a href="#linked_tables">
Linked Tables</a><br>
Linked Tables</a><br />
<a href="#transaction_isolation">
Transaction Isolation</a><br>
Transaction Isolation</a><br />
<a href="#clustering">
Clustering / High Availability</a><br>
Clustering / High Availability</a><br />
<a href="#two_phase_commit">
Two Phase Commit</a><br>
Two Phase Commit</a><br />
<a href="#compatibility">
Compatibility</a><br>
Compatibility</a><br />
<a href="#windows_service">
Run as Windows Service</a><br>
Run as Windows Service</a><br />
<a href="#odbc_driver">
ODBC Driver</a><br>
ODBC Driver</a><br />
<a href="#acid">
ACID</a><br>
ACID</a><br />
<a href="#using_recover_tool">
Using the Recover Tool</a><br>
Using the Recover Tool</a><br />
<a href="#file_locking_protocols">
File Locking Protocols</a><br>
File Locking Protocols</a><br />
<a href="#sql_injection">
Protection against SQL Injection</a><br>
Protection against SQL Injection</a><br />
<a href="#security_protocols">
Security Protocols</a><br>
Security Protocols</a><br />
<a href="#uuid">
Universally Unique Identifiers (UUID)</a><br>
Universally Unique Identifiers (UUID)</a><br />
<a href="#system_properties">
Settings Read from System Properties</a><br>
Settings Read from System Properties</a><br />
<a href="#glossary_links">
Glossary and Links</a><br>
Glossary and Links</a><br />
<br><a name="result_sets"></a>
<br /><a name="result_sets"></a>
<h2>Result Sets</h2>
<h3>Limiting the Number of Rows</h3>
......@@ -62,7 +62,7 @@ For result set larger than 1000 rows, the result is buffered to disk. If ORDER B
the sorting is done using an external sort algorithm. In this case, each block of rows is sorted using
quick sort, then written to disk; when reading the data, the blocks are merged together.
<br><a name="large_objects"></a>
<br /><a name="large_objects"></a>
<h2>Large Objects</h2>
<h3>Storing and Reading Large Objects</h3>
......@@ -75,7 +75,7 @@ and to read a CLOB, use ResultSet.getCharacterStream.
If the client/server mode is used, the BLOB and CLOB data is fully read into memory when
accessed. In this case, the size of a BLOB or CLOB is limited by the memory.
<br><a name="linked_tables"></a>
<br /><a name="linked_tables"></a>
<h2>Linked Tables</h2>
This database supports linked tables, which means tables that don't exist in the current database but
......@@ -88,22 +88,22 @@ There is a restriction when inserting data to this table: When inserting or upda
NULL and values that are not set in the insert statement are both inserted as NULL.
This may not have the desired effect if a default value in the target table is other than NULL.
<br><a name="transaction_isolation"></a>
<br /><a name="transaction_isolation"></a>
<h2>Transaction Isolation</h2>
This database supports the transaction isolation level 'serializable', in which dirty reads, non-repeatable
reads and phantom reads are prohibited.
<ul>
<li><b>Dirty Reads</b><br>
<li><b>Dirty Reads</b><br />
Means a connection can read uncommitted changes made by another connection.
<li><b>Non-Repeatable Reads</b><br>
</li><li><b>Non-Repeatable Reads</b><br />
A connection reads a row, another connection changes a row and commits,
and the first connection re-reads the same row and gets the new result.
<li><b>Phantom Reads</b><br>
</li><li><b>Phantom Reads</b><br />
A connection reads a set of rows using a condition, another connection
inserts a row that falls in this condition and commits, then the first connection
re-reads using the same condition and gets the new row.
</ul>
</li></ul>
<h3>Table Level Locking</h3>
The database allows multiple concurrent connections to the same database.
......@@ -127,7 +127,7 @@ the other connection does not release the lock for some time, the unsuccessful
connection will get a lock timeout exception. The lock timeout can be set individually
for each connection.
<br><a name="clustering"></a>
<br /><a name="clustering"></a>
<h2>Clustering / High Availability</h2>
<p>
This database supports a simple clustering / high availability mechanism. The architecture is:
......@@ -145,11 +145,11 @@ To initialize the cluster, use the following steps:
</p>
<ul>
<li>Create a database
<li>Use the CreateCluster tool to copy the database to another location and initialize the clustering.
</li><li>Use the CreateCluster tool to copy the database to another location and initialize the clustering.
Afterwards, you have two databases containing the same data.
<li>Start two servers (one for each copy of the database)
<li>You are now ready to connect to the databases with the client application(s)
</ul>
</li><li>Start two servers (one for each copy of the database)
</li><li>You are now ready to connect to the databases with the client application(s)
</li></ul>
<h3>Using the CreateCluster Tool</h3>
To understand how clustering works, please try out the following example.
......@@ -158,9 +158,9 @@ databases will be on different servers.
<ul>
<li>Create two directories: server1 and server2.
Each directory will simulate a directory on a computer.
<li>Start a TCP server pointing to the first directory.
</li><li>Start a TCP server pointing to the first directory.
You can do this using the command line:
<pre>
</li><pre>
java org.h2.tools.Server
-tcp -tcpPort 9101
-baseDir server1
......@@ -168,7 +168,7 @@ java org.h2.tools.Server
<li>Start a second TCP server pointing to the second directory.
This will simulate a server running on a second (redundant) computer.
You can do this using the command line:
<pre>
</li><pre>
java org.h2.tools.Server
-tcp -tcpPort 9102
-baseDir server2
......@@ -176,7 +176,7 @@ java org.h2.tools.Server
<li>Use the CreateCluster tool to initialize clustering.
This will automatically create a new, empty database if it does not exist.
Run the tool on the command line:
<pre>
</li><pre>
java org.h2.tools.CreateCluster
-urlSource jdbc:h2:tcp://localhost:9101/test
-urlTarget jdbc:h2:tcp://localhost:9102/test
......@@ -186,13 +186,13 @@ java org.h2.tools.CreateCluster
<li>You can now connect to the databases using
an application or the H2 Console using the JDBC URL
jdbc:h2:tcp://localhost:9101,localhost:9102/test
<li>If you stop a server (by killing the process),
</li><li>If you stop a server (by killing the process),
you will notice that the other machine continues to work,
and therefore the database is still accessible.
<li>To restore the cluster, you first need to delete the
</li><li>To restore the cluster, you first need to delete the
database that failed, then restart the server that was stopped,
and re-run the CreateCluster tool.
</ul>
</li></ul>
<h3>Clustering Algorithm and Limitations</h3>
Read-only queries are only executed against the first cluster node, but all other statements are
......@@ -203,26 +203,26 @@ CSVREAD(), CSVWRITE(), RAND() [when not using a seed]. Those functions should no
directly in modifying statements (for example INSERT, UPDATE, or MERGE). However, they can be used
in read-only statements and the result can then be used for modifying statements.
<br><a name="two_phase_commit"></a>
<br /><a name="two_phase_commit"></a>
<h2>Two Phase Commit</h2>
The two phase commit protocol is supported. 2-phase-commit works as follows:
<ul>
<li>Autocommit needs to be switched off
<li>A transaction is started, for example by inserting a row
<li>The transaction is marked 'prepared' by executing the SQL statement
<code>PREPARE COMMIT transactionName</code>
</li><li>A transaction is started, for example by inserting a row
</li><li>The transaction is marked 'prepared' by executing the SQL statement
</li><code>PREPARE COMMIT transactionName</code>
<li>The transaction can now be committed or rolled back
<li>If a problem occurs before the transaction was successfully committed or rolled back
</li><li>If a problem occurs before the transaction was successfully committed or rolled back
(for example because a network problem occurred), the transaction is in the state 'in-doubt'
<li>When re-connecting to the database, the in-doubt transactions can be listed
with <code>SELECT * FROM INFORMATION_SCHEMA.IN_DOUBT</code>
</li><li>When re-connecting to the database, the in-doubt transactions can be listed
with </li><code>SELECT * FROM INFORMATION_SCHEMA.IN_DOUBT</code>
<li>Each transaction in this list must now be committed or rolled back by executing
<code>COMMIT TRANSACTION transactionName</code> or
</li><code>COMMIT TRANSACTION transactionName</code> or
<code>ROLLBACK TRANSACTION transactionName</code>
<li>The database needs to be closed and re-opened to apply the changes
</ul>
</li></ul>
<br><a name="compatibility"></a>
<br /><a name="compatibility"></a>
<h2>Compatibility</h2>
This database is (up to a certain point) compatible to other databases such as HSQLDB, MySQL and PostgreSQL.
......@@ -246,7 +246,7 @@ Certain words of this list are keywords because they are functions that can be u
for example CURRENT_TIMESTAMP.
</p>
<br><a name="windows_service"></a>
<br /><a name="windows_service"></a>
<h2>Run as Windows Service</h2>
Using a native wrapper / adapter, Java applications can be run as a Windows Service.
There are various tools available to do that. The Java Service Wrapper from Tanuki Software, Inc.
......@@ -278,7 +278,7 @@ Please note that the batch file does not print an error message if the service i
To uninstall the service, double click on 5_uninstall_service.bat.
If successful, a command prompt window will pop up and disappear immediately. If not, a message will appear.
<br><a name="odbc_driver"></a>
<br /><a name="odbc_driver"></a>
<h2>ODBC Driver</h2>
The ODBC driver of this database is currently not very stable and only tested superficially
with a few applications (OpenOffice 2.0, Microsoft Excel and Microsoft Access) and
......@@ -294,7 +294,7 @@ where you can create new or modify existing data sources.
When you create a new H2 ODBC data source, a dialog window will appear
and ask for the database settings:
</p>
<img src="odbcDataSource.png" alt="ODBC Configuration">
<img src="odbcDataSource.png" alt="ODBC Configuration" />
<h3>Log Option</h3>
The driver is able to log operations to a file.
......@@ -322,15 +322,15 @@ Therefore the ODBC driver should not be used where security is important.
<h3>Uninstalling</h3>
To uninstall the ODBC driver, double click on h2odbcUninstall.exe. This will uninstall the driver.
<br><a name="acid"></a>
<br /><a name="acid"></a>
<h2>ACID</h2>
In the DBMS world, ACID stands for Atomicity, Consistency, Isolation, and Durability.
<ul>
<li>Atomicity: Transactions must be atomic, that means either all tasks of a transaction are performed, or none.
<li>Consistency: Only operations that comply with the defined constraints are allowed.
<li>Isolation: Transactions must be completely isolated from each other.
<li>Durability: Transaction committed to the database will not be lost.
</ul>
</li><li>Consistency: Only operations that comply with the defined constraints are allowed.
</li><li>Isolation: Transactions must be completely isolated from each other.
</li><li>Durability: Transaction committed to the database will not be lost.
</li></ul>
This database also supports these properties by default, except durability, which can only
be guaranteed by other means (battery, clustering).
......@@ -360,14 +360,14 @@ In Java, there are two ways how this can be achieved:
<li>FileDescriptor.sync(). The documentation says that this will force all system buffers to synchronize with the underlying device.
Sync is supposed to return after all in-memory modified copies of buffers associated with this FileDescriptor
have been written to the physical medium.
<li>FileChannel.force() (since JDK 1.4). This method is supposed to force any updates to this channel's file
</li><li>FileChannel.force() (since JDK 1.4). This method is supposed to force any updates to this channel's file
to be written to the storage device that contains it.
</ul>
</li></ul>
There is one related option, but it does not force changes to disk: RandomAccessFile(.., "rws" / "rwd"):
<ul>
<li>rws: Every update to the file's content or metadata is written synchronously to the underlying storage device.
<li>rwd: Every update to the file's content is written synchronously to the underlying storage device.
</ul>
</li><li>rwd: Every update to the file's content is written synchronously to the underlying storage device.
</li></ul>
<p>
A simple power-off test using two computers (they communicate over the network, and one the power
is switched off on one computer) shows that the data is not always persisted to the hard drive,
......@@ -405,7 +405,7 @@ run the application again. You will find out that in most cases, none of the dat
records that the listener computer knows about. For details, please consult the source code of the
listener and test application.
<br><a name="using_recover_tool"></a>
<br /><a name="using_recover_tool"></a>
<h2>Using the Recover Tool</h2>
The recover tool can be used to extract the contents of a data file, even if the database is corrupted.
At this time, it does not extract the content of the log file or large objects (CLOB or BLOB).
......@@ -418,7 +418,7 @@ This file contains raw insert statement (for the data) and data definition (DDL)
the schema of the database. This file cannot be executed directly, as the raw insert statements
don't have the correct table names, so the file needs to be pre-processed manually before executing.
<br><a name="file_locking_protocols"></a>
<br /><a name="file_locking_protocols"></a>
<h2>File Locking Protocols</h2>
<p>
Whenever a database is opened, a lock file is created to signal other processes
......@@ -443,7 +443,7 @@ Then, the process waits a little bit (20ms) and checks the file again. If the fi
during this time, the operation is aborted. This protects against a race condition
when a process deletes the lock file just after one create it, and a third process creates
the file again. It does not occur if there are only two writers.
<li>
</li><li>
If the file can be created, a random number is inserted together with the locking method
('file'). Afterwards, a watchdog thread is started that
checks regularly (every second once by default) if the file was deleted or modified by
......@@ -452,7 +452,7 @@ old data. The watchdog thread runs with high priority so that a change to the lo
not get through undetected even if the system is very busy. However, the watchdog thread
does use very little resources (CPU time), because it waits most of the time. Also, the watchdog only reads from the hard disk
and does not write to it.
<li>
</li><li>
If the lock file exists, and it was modified in the 20 ms, the process waits for some time (up to 10 times).
If it was still changed, an exception is thrown (database is locked). This is done to eliminate race conditions with many concurrent
writers. Afterwards, the file is overwritten with a new version (challenge).
......@@ -462,7 +462,7 @@ and this process will fail to lock the database.
However, if there is no watchdog thread, the lock file will still be as written by
this thread. In this case, the file is deleted and atomically created again.
The watchdog thread is started in this case and the file is locked.
</ul>
</li></ul>
<p>
This algorithm is tested with over 100 concurrent threads. In some cases, when there are
many concurrent threads trying to lock the database, they block each other (meaning
......@@ -480,20 +480,20 @@ The algorithm is:
Then a server socket is opened on a defined port, and kept open.
The port and IP address of the process that opened the database is written
into the lock file.
<li>If the lock file exists, and the lock method is 'file', then the software switches
</li><li>If the lock file exists, and the lock method is 'file', then the software switches
to the 'file' method.
<li>If the lock file exists, and the lock method is 'socket', then the process
</li><li>If the lock file exists, and the lock method is 'socket', then the process
checks if the port is in use. If the original process is still running, the port is in use
and this process throws an exception (database is in use). If the original process
died (for example due to a blackout, or abnormal termination of the virtual machine),
then the port was released. The new process deletes the lock file and starts again.
</ul>
</li></ul>
This method does not require a watchdog thread actively polling (reading) the same
file every second. The problem with this method is, if the file is stored on a network
share, two processes (running on different computers) could still open the same
database files, if they do not have a direct TCP/IP connection.
<br><a name="sql_injection"></a>
<br /><a name="sql_injection"></a>
<h2>Protection against SQL Injection</h2>
<h3>What is SQL Injection</h3>
This database engine provides a solution for the security vulnerability known as 'SQL Injection'.
......@@ -556,7 +556,7 @@ It is not required to create a constant for the number 0 as there is already a b
SELECT * FROM USERS WHERE LENGTH(PASSWORD)=ZERO();
</pre>
<br><a name="security_protocols"></a>
<br /><a name="security_protocols"></a>
<h2>Security Protocols</h2>
The following paragraphs document the security protocols used in this database.
These descriptions are very technical and only intended for security experts that already know
......@@ -641,7 +641,7 @@ The web server supports HTTP and HTTPS connections using SSLServerSocket.
There is a default self-certified certificate to support an easy starting point, but
custom certificates are supported as well.
<br><a name="uuid"></a>
<br /><a name="uuid"></a>
<h2>Universally Unique Identifiers (UUID)</h2>
This database supports the UUIDs. Also supported is a function to create new UUIDs using
a cryptographically strong pseudo random number generator.
......@@ -670,7 +670,7 @@ Some values are:
One's annual risk of being hit by a meteorite is estimated to be one chance in 17 billion,
that means the probability is about 0.000'000'000'06.
<br><a name="system_properties"></a>
<br /><a name="system_properties"></a>
<h2>Settings Read from System Properties</h2>
<p>
Some settings of the database can be set on the command line using
......@@ -714,7 +714,7 @@ INFORMATION_SCHEMA.SETTINGS
<tr><td>h2.scriptDirectory</td><td></td><td>Relative or absolute directory where the script files are stored to or read from</td></tr>
</table>
<br><a name="glossary_links"></a>
<br /><a name="glossary_links"></a>
<h2>Glossary and Links</h2>
<table><tr><th>Term</th><th>Description</th></tr>
<tr>
......
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Build
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -13,33 +13,33 @@ Build
<h1>Build</h1>
<a href="#portability">
Portability</a><br>
Portability</a><br />
<a href="#environment">
Environment</a><br>
Environment</a><br />
<a href="#building">
Building the Software</a><br>
Building the Software</a><br />
<a href="#maven2">
Using Maven 2</a><br>
Using Maven 2</a><br />
<br><a name="portability"></a>
<br /><a name="portability"></a>
<h2>Portability</h2>
This database is written in Java and therefore works on many platforms.
It is also possible to compile it to a native executable using GCJ.
<br><a name="environment"></a>
<br /><a name="environment"></a>
<h2>Environment</h2>
To build the database executables, the following software stack was used.
In most cases, newer version or compatible software works too, but this was not tested.
<ul>
<li>Windows XP
<li>Sun JDK Version 1.4
<li>Apache Ant Version 1.6.5
<li>Mozilla Firefox 1.5
<li>Eclipse Version 3.2.1
<li>YourKit Java Profiler
</ul>
</li><li>Sun JDK Version 1.4
</li><li>Apache Ant Version 1.6.5
</li><li>Mozilla Firefox 1.5
</li><li>Eclipse Version 3.2.1
</li><li>YourKit Java Profiler
</li></ul>
<br><a name="building"></a>
<br /><a name="building"></a>
<h2>Building the Software</h2>
On the command line, go to the directory src and execute the following command:
<pre>
......@@ -56,7 +56,7 @@ ant jarClient
</pre>
The other targets may be used as well.
<br><a name="maven2"></a>
<br /><a name="maven2"></a>
<h2>Using Maven 2</h2>
<h3>Using a Central Repository</h3>
You can include the database in your Maven 2 project as a dependency.
......
......@@ -3,20 +3,20 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Data Types
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<h1>Data Types</h1>
<c:forEach var="item" items="dataTypes">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<c:forEach var="item" items="dataTypes">
<br>
<br />
<a name="sql${item.id}"></a><h3>${item.topic}</h3>
<pre>
${item.syntax}
......@@ -24,9 +24,9 @@ ${item.syntax}
<p>
${item.text}
</p>
<b>Example:</b><br>
<b>Example:</b><br />
${item.example}
<br>
<br />
</c:forEach>
</div></td></tr></table></body></html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html). -->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
H2 Database Engine
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
<link rel="alternate" type="application/atom+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-atom.xml">
<link rel="alternate" type="application/rss+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-rss.xml">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<link rel="alternate" type="application/atom+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-atom.xml" />
<link rel="alternate" type="application/rss+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-rss.xml" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -13,14 +13,14 @@ H2 Database Engine
<h3>Version 1.0 / 2007-01-17 (Current)</h3>
<p>
<a href="http://www.h2database.com/h2-setup-2007-01-17.exe">Windows Installer (2.7 MB)</a><br>
<a href="http://www.h2database.com/h2-2007-01-17.zip">Platform-Independent Zip (3.6 MB)</a><br>
<a href="http://www.h2database.com/h2-setup-2007-01-17.exe">Windows Installer (2.7 MB)</a><br />
<a href="http://www.h2database.com/h2-2007-01-17.zip">Platform-Independent Zip (3.6 MB)</a><br />
</p>
<h3>Version 1.0 / 2006-08-31 (Last Stable)</h3>
<p>
<a href="http://www.h2database.com/h2-setup-2006-08-31.exe">Windows Installer (2.4 MB)</a><br>
<a href="http://www.h2database.com/h2-2006-08-31.zip">Platform-Independent Zip (3.1 MB)</a><br>
<a href="http://www.h2database.com/h2-setup-2006-08-31.exe">Windows Installer (2.4 MB)</a><br />
<a href="http://www.h2database.com/h2-2006-08-31.zip">Platform-Independent Zip (3.1 MB)</a><br />
</p>
<p>
......
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Frequently Asked Questions
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -18,9 +18,9 @@ Here is the list of known and confirmed issues as of
2007-01-30:
<ul>
<li>Can not build using ant with JDK 1.3 at the moment. However most things are fixed.
<li>Some problems have been found with right outer join. Internally, it is converted to left outer join, which
</li><li>Some problems have been found with right outer join. Internally, it is converted to left outer join, which
does not always produce the correct results when used in combination with other joins.
</ul>
</li></ul>
<h3>Is this Database Engine Open Source?</h3>
Yes. It is free to use and distribute, and the source code is included.
......@@ -41,25 +41,25 @@ some problems that have not yet been found.
Areas that are not completely tested:
<ul>
<li>Platforms other than Windows XP and the Sun JVM 1.4
<li>Data types BLOB, CLOB, VARCHAR_IGNORECASE, OTHER
<li>Cluster mode, 2-Phase Commit, Savepoints
<li>Server mode (well tested, but not as well as Embedded mode)
<li>Multi-Threading and using multiple connections
<li>Updatable result sets
<li>Referential integrity and check constraints, Triggers
<li>ALTER TABLE statements, Views, Linked Tables, Schema, UNION
<li>Not all built-in functions are completely tested
<li>The Optimizer may not always select the best plan
<li>24/7 operation and large databases (500 MB and up)
<li>Wide indexes with large VARCHAR or VARBINARY columns and / or with a lot of columns
</ul>
</li><li>Data types BLOB, CLOB, VARCHAR_IGNORECASE, OTHER
</li><li>Cluster mode, 2-Phase Commit, Savepoints
</li><li>Server mode (well tested, but not as well as Embedded mode)
</li><li>Multi-Threading and using multiple connections
</li><li>Updatable result sets
</li><li>Referential integrity and check constraints, Triggers
</li><li>ALTER TABLE statements, Views, Linked Tables, Schema, UNION
</li><li>Not all built-in functions are completely tested
</li><li>The Optimizer may not always select the best plan
</li><li>24/7 operation and large databases (500 MB and up)
</li><li>Wide indexes with large VARCHAR or VARBINARY columns and / or with a lot of columns
</li></ul>
Areas considered Experimental:
<ul>
<li>ODBC driver and the GCJ native version on Windows
<li>Linear Hash Index
<li>Compatibility modes for other databases (only some features are implemented)
</ul>
</li><li>Linear Hash Index
</li><li>Compatibility modes for other databases (only some features are implemented)
</li></ul>
<h3>How to Create a New Database?</h3>
By default, a new database is automatically created if it does not yet exist.
......
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Features
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -13,125 +13,125 @@ Features
<h1>Features</h1>
<a href="#feature_list">
Feature List</a><br>
Feature List</a><br />
<a href="#comparison">
Comparison to Other Database Engines</a><br>
Comparison to Other Database Engines</a><br />
<a href="#products_work_with">
Products that Work with H2</a><br>
Products that Work with H2</a><br />
<a href="#why_java">
Why Java</a><br>
Why Java</a><br />
<a href="#connection_modes">
Connection Modes</a><br>
Connection Modes</a><br />
<a href="#database_url">
Database URL Overview</a><br>
Database URL Overview</a><br />
<a href="#file_encryption">
Connecting to a Database with File Encryption</a><br>
Connecting to a Database with File Encryption</a><br />
<a href="#database_file_locking">
Database File Locking</a><br>
Database File Locking</a><br />
<a href="#database_only_if_exists">
Opening a Database Only if it Already Exists</a><br>
Opening a Database Only if it Already Exists</a><br />
<a href="#closing_the_database">
Closing the Database</a><br>
Closing the Database</a><br />
<a href="#log_index_changes">
Log Index Changes</a><br>
Log Index Changes</a><br />
<a href="#multiple_connections">
Multiple Connections</a><br>
Multiple Connections</a><br />
<a href="#database_file_layout">
Database File Layout</a><br>
Database File Layout</a><br />
<a href="#logging_recovery">
Logging and Recovery</a><br>
Logging and Recovery</a><br />
<a href="#compatibility_modes">
Compatibility Modes</a><br>
Compatibility Modes</a><br />
<a href="#trace_options">
Using the Trace Options</a><br>
Using the Trace Options</a><br />
<a href="#read_only">
Read Only Databases</a><br>
Read Only Databases</a><br />
<a href="#storage_formats">
Binary and Text Storage Formats</a><br>
Binary and Text Storage Formats</a><br />
<a href="#low_disk_space">
Graceful Handling of Low Disk Space Situations</a><br>
Graceful Handling of Low Disk Space Situations</a><br />
<a href="#computed_columns">
Computed Columns / Function Based Index</a><br>
Computed Columns / Function Based Index</a><br />
<a href="#multi_dimensional">
Multi-Dimensional Indexes</a><br>
Multi-Dimensional Indexes</a><br />
<a href="#passwords">
Using Passwords</a><br>
Using Passwords</a><br />
<a href="#user_defined_functions">
User Defined Functions and Stored Procedures</a><br>
User Defined Functions and Stored Procedures</a><br />
<a href="#triggers">
Triggers</a><br>
Triggers</a><br />
<a href="#compacting">
Compacting a Database</a><br>
Compacting a Database</a><br />
<a href="#cache_settings">
Cache Settings</a><br>
Cache Settings</a><br />
<br><a name="feature_list"></a>
<br /><a name="feature_list"></a>
<h2>Feature List</h2>
<h3>Main Features</h3>
<ul>
<li>Very fast database engine
<li>Free, with source code
<li>Written in Java
<li>Supports standard SQL, JDBC API
<li>Embedded and Server mode, Clustering support
<li>Strong security features
<li>Experimental native version (GCJ) and ODBC drivers
</ul>
</li><li>Free, with source code
</li><li>Written in Java
</li><li>Supports standard SQL, JDBC API
</li><li>Embedded and Server mode, Clustering support
</li><li>Strong security features
</li><li>Experimental native version (GCJ) and ODBC drivers
</li></ul>
<h3>Additional Features</h3>
<ul>
<li>Disk based or in-memory databases and tables, read-only database support, temporary tables
<li>Transaction support (serializable transaction isolation), 2-phase-commit
<li>Multiple connections, table level locking
<li>Cost based optimizer, using a genetic algorithm for complex queries, zero-administration
<li>Scrollable and updatable result set support, large result set, external result sorting, functions can return a result set
<li>Encrypted database (AES or XTEA), SHA-256 password encryption, encryption functions, SSL
</ul>
</li><li>Transaction support (serializable transaction isolation), 2-phase-commit
</li><li>Multiple connections, table level locking
</li><li>Cost based optimizer, using a genetic algorithm for complex queries, zero-administration
</li><li>Scrollable and updatable result set support, large result set, external result sorting, functions can return a result set
</li><li>Encrypted database (AES or XTEA), SHA-256 password encryption, encryption functions, SSL
</li></ul>
<h3>SQL Support</h3>
<ul>
<li>Compatibility modes for HSQLDB, MySQL and PostgreSQL
<li>Support for multiple schemas, information schema
<li>Referential integrity / foreign key constraints with cascade, check constraints
<li>Inner and outer joins, subqueries, read only views and inline views
<li>Triggers and Java functions / stored procedures
<li>Many built-in functions, including XML and lossless data compression
<li>Wide range of data types including large objects (BLOB/CLOB)
<li>Sequence and autoincrement columns, computed columns (can be used for function based indexes)
<li>ORDER BY, GROUP BY, HAVING, UNION, LIMIT, TOP
<li>Collation support, Users, Roles
</ul>
</li><li>Support for multiple schemas, information schema
</li><li>Referential integrity / foreign key constraints with cascade, check constraints
</li><li>Inner and outer joins, subqueries, read only views and inline views
</li><li>Triggers and Java functions / stored procedures
</li><li>Many built-in functions, including XML and lossless data compression
</li><li>Wide range of data types including large objects (BLOB/CLOB)
</li><li>Sequence and autoincrement columns, computed columns (can be used for function based indexes)
</li><li>ORDER BY, GROUP BY, HAVING, UNION, LIMIT, TOP
</li><li>Collation support, Users, Roles
</li></ul>
<h3>Security Features</h3>
<ul>
<li>User password authenticated uses SHA-256 and salt
<li>User passwords are never transmitted in plain text over the network (even when using insecure connections)
<li>All database files (including script files that can be used to backup data) can be encrypted using AES-256 and XTEA encryption algorithms
<li>The remote JDBC driver supports TCP/IP connections over SSL/TLS
<li>The built-in web server supports connections over SSL/TLS
<li>Passwords can be sent to the database using char arrays instead of Strings
<li>Includes a solution for the SQL injection problem
</ul>
</li><li>User passwords are never transmitted in plain text over the network (even when using insecure connections)
</li><li>All database files (including script files that can be used to backup data) can be encrypted using AES-256 and XTEA encryption algorithms
</li><li>The remote JDBC driver supports TCP/IP connections over SSL/TLS
</li><li>The built-in web server supports connections over SSL/TLS
</li><li>Passwords can be sent to the database using char arrays instead of Strings
</li><li>Includes a solution for the SQL injection problem
</li></ul>
<h3>Other Features and Tools</h3>
<ul>
<li>Small footprint (smaller than 1 MB), low memory requirements
<li>Multiple index types (b-tree, tree, hash, linear hash)
<li>Support for multi-dimensional indexes
<li>CSV file support
<li>Support for linked tables, and a built-in virtual 'range' table
<li>EXPLAIN PLAN support, sophisticated trace options
<li>Database closing can be delayed or disabled to improve the performance
<li>Web-based Console application (English, German, partially French and Spanish) with autocomplete
<li>The database can generate SQL script files
<li>Contains a recovery tool that can dump the contents of the data file
<li>Automatic re-compilation of prepared statements
<li>Uses a small number of database files, binary and text storage formats, graceful handling of low disk space situations
<li>Uses a checksum for each record and log entry for data integrity
<li>Well tested (high code coverage, randomized stress tests)
</ul>
<br><a name="comparison"></a>
</li><li>Multiple index types (b-tree, tree, hash, linear hash)
</li><li>Support for multi-dimensional indexes
</li><li>CSV file support
</li><li>Support for linked tables, and a built-in virtual 'range' table
</li><li>EXPLAIN PLAN support, sophisticated trace options
</li><li>Database closing can be delayed or disabled to improve the performance
</li><li>Web-based Console application (English, German, partially French and Spanish) with autocomplete
</li><li>The database can generate SQL script files
</li><li>Contains a recovery tool that can dump the contents of the data file
</li><li>Automatic re-compilation of prepared statements
</li><li>Uses a small number of database files, binary and text storage formats, graceful handling of low disk space situations
</li><li>Uses a checksum for each record and log entry for data integrity
</li><li>Well tested (high code coverage, randomized stress tests)
</li></ul>
<br /><a name="comparison"></a>
<h2>Comparison to Other Database Engines</h2>
<table><tr>
......@@ -219,7 +219,7 @@ It looks like the development of this database has stopped. The last release was
<h3>McKoi</h3>
It looks like the development of this database has stopped. The last release was August 2004
<br><a name="products_work_with"></a>
<br /><a name="products_work_with"></a>
<h2>Products that Work with H2</h2>
<table>
<tr><th>Product</th><th>Description</th></tr>
......@@ -281,16 +281,16 @@ It looks like the development of this database has stopped. The last release was
</tr>
</table>
<br><a name="why_java"></a>
<br /><a name="why_java"></a>
<h2>Why Java</h2>
A few reasons using a Java database are:
<ul>
<li>Very simple to integrate in Java applications
<li>Support for many different platforms
<li>More secure than native applications (no buffer overflows)
<li>User defined functions (or triggers) run very fast
<li>Unicode support
</ul>
</li><li>Support for many different platforms
</li><li>More secure than native applications (no buffer overflows)
</li><li>User defined functions (or triggers) run very fast
</li><li>Unicode support
</li></ul>
<p>
Some people think that Java is still too slow for low level operations,
but this is not the case (not any more). In general, the code can be written a lot faster
......@@ -315,17 +315,17 @@ Java implementations (such as Swing) are not used or only used for specific feat
(such as the SysTray library).
</p>
<br><a name="connection_modes"></a>
<br /><a name="connection_modes"></a>
<h2>Connection Modes</h2>
The following connection modes are supported:
<ul>
<li>Local connections using JDBC (embedded)
<li>Remote connections using JDBC over TCP/IP (client/server)
<li>Remote connections using ODBC over TCP/IP (client/server)
<li>In-Memory databases (private and shared)
</ul>
</li><li>Remote connections using JDBC over TCP/IP (client/server)
</li><li>Remote connections using ODBC over TCP/IP (client/server)
</li><li>In-Memory databases (private and shared)
</li></ul>
<br><a name="database_url"></a>
<br /><a name="database_url"></a>
<h2>Database URL Overview</h2>
<p>
This database does support multiple connection modes and features when connecting to a database.
......@@ -335,10 +335,10 @@ This is achieved using different database URLs. The settings in the URLs are not
<tr>
<td>Embedded (local) connection</td>
<td>
jdbc:h2:[file:][&lt;path&gt;]&lt;databaseName&gt;<br>
jdbc:h2:test<br>
jdbc:h2:file:/data/sample<br>
jdbc:h2:file:C:/data/sample (Windows only)<br>
jdbc:h2:[file:][&lt;path&gt;]&lt;databaseName&gt;<br />
jdbc:h2:test<br />
jdbc:h2:file:/data/sample<br />
jdbc:h2:file:C:/data/sample (Windows only)<br />
</td>
</tr>
<tr>
......@@ -348,46 +348,46 @@ This is achieved using different database URLs. The settings in the URLs are not
<tr>
<td>In-Memory (named)</td>
<td>
jdbc:h2:mem:&lt;databaseName&gt;<br>
jdbc:h2:mem:&lt;databaseName&gt;<br />
jdbc:h2:mem:test_mem
</td>
</tr>
<tr>
<td>Remote using TCP/IP</td>
<td>
jdbc:h2:tcp://&lt;server&gt;[&lt;port&gt;]/&lt;databaseName&gt;<br>
jdbc:h2:tcp://localhost/test<br>
jdbc:h2:tcp://&lt;server&gt;[&lt;port&gt;]/&lt;databaseName&gt;<br />
jdbc:h2:tcp://localhost/test<br />
jdbc:h2:tcp://dbserv:8084/sample
</td>
</tr>
<tr>
<td>Remote using SSL/TLS</td>
<td>
jdbc:h2:ssl://&lt;server&gt;[&lt;port&gt;]/&lt;databaseName&gt;<br>
jdbc:h2:ssl://&lt;server&gt;[&lt;port&gt;]/&lt;databaseName&gt;<br />
jdbc:h2:ssl://secureserv:8085/sample;
</td>
</tr>
<tr>
<td>Using Encrypted Files</td>
<td>
jdbc:h2:&lt;url&gt;;CIPHER=[AES][XTEA]<br>
jdbc:h2:ssl://secureserv/testdb;CIPHER=AES<br>
jdbc:h2:file:secure;CIPHER=XTEA<br>
jdbc:h2:&lt;url&gt;;CIPHER=[AES][XTEA]<br />
jdbc:h2:ssl://secureserv/testdb;CIPHER=AES<br />
jdbc:h2:file:secure;CIPHER=XTEA<br />
</td>
</tr>
<tr>
<td>File Locking Methods</td>
<td>
jdbc:h2:&lt;url&gt;;FILE_LOCK={NO|FILE|SOCKET}<br>
jdbc:h2:file:quickAndDirty;FILE_LOCK=NO<br>
jdbc:h2:file:private;CIPHER=XTEA;FILE_LOCK=SOCKET<br>
jdbc:h2:&lt;url&gt;;FILE_LOCK={NO|FILE|SOCKET}<br />
jdbc:h2:file:quickAndDirty;FILE_LOCK=NO<br />
jdbc:h2:file:private;CIPHER=XTEA;FILE_LOCK=SOCKET<br />
</td>
</tr>
<tr>
<td>Only Open if it Already Exists</td>
<td>
jdbc:h2:&lt;url&gt;;IFEXISTS=TRUE<br>
jdbc:h2:file:sample;IFEXISTS=TRUE<br>
jdbc:h2:&lt;url&gt;;IFEXISTS=TRUE<br />
jdbc:h2:file:sample;IFEXISTS=TRUE<br />
</td>
</tr>
<tr>
......@@ -399,35 +399,35 @@ This is achieved using different database URLs. The settings in the URLs are not
<tr>
<td>User Name and/or Password</td>
<td>
jdbc:h2:&lt;url&gt;[;USER=&lt;username&gt;][;PASSWORD=&lt;value&gt;]<br>
jdbc:h2:file:sample;USER=sa;PASSWORD=123<br>
jdbc:h2:&lt;url&gt;[;USER=&lt;username&gt;][;PASSWORD=&lt;value&gt;]<br />
jdbc:h2:file:sample;USER=sa;PASSWORD=123<br />
</td>
</tr>
<tr>
<td>Log Index Changes</td>
<td>
jdbc:h2:&lt;url&gt;;LOG=2<br>
jdbc:h2:file:sample;LOG=2<br>
jdbc:h2:&lt;url&gt;;LOG=2<br />
jdbc:h2:file:sample;LOG=2<br />
</td>
</tr>
<tr>
<td>Debug Trace Settings</td>
<td>
jdbc:h2:&lt;url&gt;;TRACE_LEVEL_FILE=&lt;level 0..3&gt;<br>
jdbc:h2:file:sample;TRACE_LEVEL_FILE=3<br>
jdbc:h2:&lt;url&gt;;TRACE_LEVEL_FILE=&lt;level 0..3&gt;<br />
jdbc:h2:file:sample;TRACE_LEVEL_FILE=3<br />
</td>
</tr>
<tr>
<td>Ignore Unknown Settings</td>
<td>
jdbc:h2:&lt;url&gt;;IGNORE_UNKNOWN_SETTINGS=TRUE<br>
jdbc:h2:&lt;url&gt;;IGNORE_UNKNOWN_SETTINGS=TRUE<br />
</td>
</tr>
<tr>
<td>Changing Other Settings</td>
<td>
jdbc:h2:&lt;url&gt;;&lt;setting&gt;=&lt;value&gt;[;&lt;setting&gt;=&lt;value&gt;...]<br>
jdbc:h2:file:sample;TRACE_LEVEL_SYSTEM_OUT=3<br>
jdbc:h2:&lt;url&gt;;&lt;setting&gt;=&lt;value&gt;[;&lt;setting&gt;=&lt;value&gt;...]<br />
jdbc:h2:file:sample;TRACE_LEVEL_SYSTEM_OUT=3<br />
</td>
</tr>
</table>
......@@ -457,7 +457,7 @@ An example database URL is: <code>jdbc:h2:tcp://localhost/mem:db1</code>
(using private database remotely is also possible).
</p>
<br><a name="file_encryption"></a>
<br /><a name="file_encryption"></a>
<h2>Connecting to a Database with File Encryption</h2>
To use file encryption, it is required to specify the encryption algorithm (the 'cipher')
and the file password. The algorithm needs to be specified using the connection parameter.
......@@ -475,7 +475,7 @@ conn = DriverManager.
getConnection(url, user, pwds);
</pre>
<br><a name="database_file_locking"></a>
<br /><a name="database_file_locking"></a>
<h2>Database File Locking</h2>
<p>
Whenever a database is opened, a lock file is created to signal other processes
......@@ -487,12 +487,12 @@ The following file locking methods are implemented:
<ul>
<li>The default method is 'file' and uses a watchdog thread to
protect the database file. The watchdog reads the lock file each second.
<li>The second method is 'socket' and opens a server socket. The socket method does
</li><li>The second method is 'socket' and opens a server socket. The socket method does
not require reading the lock file every second. The socket method should only be used
if the database files are only accessed by the one (and always the same) computer.
<li>It is also possible to open the database without file locking;
</li><li>It is also possible to open the database without file locking;
in this case it is up to the application to protect the database files.
</ul>
</li></ul>
To open the database with a different file locking method, use the parameter 'FILE_LOCK'.
The following code opens the database with the 'socket' locking method:
<pre>
......@@ -507,7 +507,7 @@ String url = "jdbc:h2:test;FILE_LOCK=NO";
For more information about the algorithms please see in Advanced Topics under
File Locking Protocol.
<br><a name="database_only_if_exists"></a>
<br /><a name="database_only_if_exists"></a>
<h2>Opening a Database Only if it Already Exists</h2>
By default, when an application calls <code>DriverManager.getConnection(url,...)</code>
and the database specified in the URL does not yet exist, a new (empty) database is created.
......@@ -520,7 +520,7 @@ The complete URL may look like this:
String url = "jdbc:h2:/data/sample;IFEXISTS=TRUE";
</pre>
<br><a name="closing_the_database"></a>
<br /><a name="closing_the_database"></a>
<h2>Closing the Database</h2>
<h3>Delayed Database Closing</h3>
......@@ -551,7 +551,7 @@ The database URL to disable database closing on exit is:
String url = "jdbc:h2:test;DB_CLOSE_ON_EXIT=FALSE";
</pre>
<br><a name="log_index_changes"></a>
<br /><a name="log_index_changes"></a>
<h2>Log Index Changes</h2>
Usually, changes to the index file are not logged for performance.
If the index file is corrupt or missing when opening a database, it is re-created from the data.
......@@ -582,7 +582,7 @@ same as executing the statement <code>SET setting value</code> just after
connecting. For a list of settings supported by this database please see the
SQL grammar documentation.
<br><a name="multiple_connections"></a>
<br /><a name="multiple_connections"></a>
<h2>Multiple Connections</h2>
<h3>Opening Multiple Databases at the Same Time</h3>
......@@ -626,8 +626,8 @@ Here is an overview on what statements generate what type of lock:
Read
</td>
<td>
SELECT * FROM TEST<br>
CALL SELECT MAX(ID) FROM TEST<br>
SELECT * FROM TEST<br />
CALL SELECT MAX(ID) FROM TEST<br />
SCRIPT
</td>
</tr>
......@@ -644,9 +644,9 @@ Here is an overview on what statements generate what type of lock:
Write
</td>
<td>
INSERT INTO TEST VALUES(1, 'Hello')<br>
INSERT INTO TEST SELECT * FROM TEST<br>
UPDATE TEST SET NAME='Hi'<br>
INSERT INTO TEST VALUES(1, 'Hello')<br />
INSERT INTO TEST SELECT * FROM TEST<br />
UPDATE TEST SET NAME='Hi'<br />
DELETE FROM TEST
</td>
</tr>
......@@ -655,8 +655,8 @@ Here is an overview on what statements generate what type of lock:
Write
</td>
<td>
ALTER TABLE TEST ...<br>
CREATE INDEX ... ON TEST ...<br>
ALTER TABLE TEST ...<br />
CREATE INDEX ... ON TEST ...<br />
DROP INDEX ...
</td>
</tr>
......@@ -668,7 +668,7 @@ The initial lock timeout (that is the timeout used for new connections) can be s
SET DEFAULT_LOCK_TIMEOUT &lt;milliseconds&gt;. The default lock timeout is persistent.
</p>
<br><a name="database_file_layout"></a>
<br /><a name="database_file_layout"></a>
<h2>Database File Layout</h2>
<p>
There are a number of files created for persistent databases. Other than some databases,
......@@ -683,8 +683,8 @@ The following files can be created by the database:
<tr><td>
test.data.db
</td><td>
Data file<br>
Contains the data for all tables<br>
Data file<br />
Contains the data for all tables<br />
Format: &lt;database&gt;.data.db
</td><td>
1 per database
......@@ -692,8 +692,8 @@ The following files can be created by the database:
<tr><td>
test.index.db
</td><td>
Index file<br>
Contains the data for all (btree) indexes<br>
Index file<br />
Contains the data for all (btree) indexes<br />
Format: &lt;database&gt;.index.db
</td><td>
1 per database
......@@ -701,8 +701,8 @@ The following files can be created by the database:
<tr><td>
test.0.log.db
</td><td>
Log file<br>
The log file is used for recovery<br>
Log file<br />
The log file is used for recovery<br />
Format: &lt;database&gt;.&lt;id&gt;.log.db
</td><td>
0 or more per database
......@@ -710,8 +710,8 @@ The following files can be created by the database:
<tr><td>
test.lock.db
</td><td>
Database lock file<br>
Exists only if the database is open<br>
Database lock file<br />
Exists only if the database is open<br />
Format: &lt;database&gt;.lock.db
</td><td>
1 per database
......@@ -719,9 +719,9 @@ The following files can be created by the database:
<tr><td>
test.trace.db
</td><td>
Trace file<br>
Contains trace information<br>
Format: &lt;database&gt;.trace.db<br>
Trace file<br />
Contains trace information<br />
Format: &lt;database&gt;.trace.db<br />
If the file is too big, it is renamed to &lt;database&gt;.trace.db.old
</td><td>
1 per database
......@@ -729,8 +729,8 @@ The following files can be created by the database:
<tr><td>
test.14.15.lob.db
</td><td>
Large object<br>
Contains the data for BLOB or CLOB<br>
Large object<br />
Contains the data for BLOB or CLOB<br />
Format: &lt;database&gt;.&lt;tableid&gt;.&lt;id&gt;.lob.db
</td><td>
1 per object
......@@ -738,8 +738,8 @@ The following files can be created by the database:
<tr><td>
test.123.temp.db
</td><td>
Temporary file<br>
Contains a temporary blob or a large result set<br>
Temporary file<br />
Contains a temporary blob or a large result set<br />
Format: &lt;database&gt;.&lt;session id&gt;.&lt;object id&gt;.temp.db
</td><td>
1 per object
......@@ -747,8 +747,8 @@ The following files can be created by the database:
<tr><td>
test.7.hash.db
</td><td>
Hash index file<br>
Contains the data for a linear hash index<br>
Hash index file<br />
Contains the data for a linear hash index<br />
Format: &lt;database&gt;.&lt;object id&gt;.hash.db
</td><td>
1 per linear hash index
......@@ -775,7 +775,7 @@ automatically if they don't exist.
To backup data while the database is running, the SQL command SCRIPT can be used.
</p>
<br><a name="logging_recovery"></a>
<br /><a name="logging_recovery"></a>
<h2>Logging and Recovery</h2>
<p>
Whenever data is modified in the database and those changes are committed, the changes are logged
......@@ -799,7 +799,7 @@ must contain RECOVER=1, as in jdbc:h2:test;RECOVER=1. Indexes are rebuilt in thi
the summary (object allocation table) is not read in this case, so opening the database takes longer.
</p>
<br><a name="compatibility_modes"></a>
<br /><a name="compatibility_modes"></a>
<h2>Compatibility Modes</h2>
<p>
All database engines behave a little bit different. For certain features,
......@@ -836,17 +836,17 @@ Here is the list of currently supported modes and the difference to the regular
</td></tr>
</table>
<br><a name="trace_options"></a>
<br /><a name="trace_options"></a>
<h2>Using the Trace Options</h2>
To find problems in an application, it is sometimes good to see what database operations
where executed. This database offers the following trace features:
<ul>
<li>Trace to System.out and/or a file
<li>Support for trace levels OFF, ERROR, INFO, and DEBUG
<li>The maximum size of the trace file can be set
<li>The Java code generation is possible
<li>Trace can be enabled at runtime by manually creating a file
</ul>
</li><li>Support for trace levels OFF, ERROR, INFO, and DEBUG
</li><li>The maximum size of the trace file can be set
</li><li>The Java code generation is possible
</li><li>Trace can be enabled at runtime by manually creating a file
</li></ul>
<h3>Trace Options</h3>
The simplest way to enable the trace option is setting it in the database URL.
......@@ -921,7 +921,7 @@ However, if the start file is read only, the database engine cannot delete the f
will always enable the trace mode when connecting.
</p>
<br><a name="read_only"></a>
<br /><a name="read_only"></a>
<h2>Read Only Databases</h2>
If the database files are read-only, then the database is read-only as well.
It is not possible to create new tables, add or modify data in this database.
......@@ -932,7 +932,7 @@ When you open the database now, it is read-only.
There are two ways an application can find out a database is read-only:
By calling Connection.isReadOnly() or by executing the SQL statement CALL READONLY().
<br><a name="storage_formats"></a>
<br /><a name="storage_formats"></a>
<h2>Binary and Text Storage Formats</h2>
This database engine supports both binary and text storage formats.
The binary format is faster, but the text storage format can be useful as well,
......@@ -942,7 +942,7 @@ New databases are created in the binary storage format by default.
To create a new database in the text storage format, the database URL must contain
the parameter STORAGE=TEXT. Example URL: jdbc:h2:test;STORAGE=TEXT
<br><a name="low_disk_space"></a>
<br /><a name="low_disk_space"></a>
<h2>Graceful Handling of Low Disk Space Situations</h2>
<p>
The database is able to deal with situations where the disk space available is running low.
......@@ -968,7 +968,7 @@ If a database can not be opened because the boot info (the SQL script that is ru
is corrupted, then the database can be opened by specifying a database event listener.
The exceptions are logged, but opening the database will continue.
<br><a name="computed_columns"></a>
<br /><a name="computed_columns"></a>
<h2>Computed Columns / Function Based Index</h2>
Function indexes are not directly supported by this database, but they can be easily emulated
by using computed columns. For example, if an index on the upper-case version of
......@@ -990,7 +990,7 @@ INSERT INTO ADDRESS(ID, NAME) VALUES(1, 'Miller');
SELECT * FROM ADDRESS WHERE UPPER_NAME='MILLER';
</pre>
<br><a name="multi_dimensional"></a>
<br /><a name="multi_dimensional"></a>
<h2>Multi-Dimensional Indexes</h2>
<p>
A tool is provided to execute efficient multi-dimension (spatial) range queries.
......@@ -1013,7 +1013,7 @@ For an example how to use the tool, please have a look at the sample code provid
in TestMultiDimension.java.
</p>
<br><a name="passwords"></a>
<br /><a name="passwords"></a>
<h2>Using Passwords</h2>
<h3>Using Secure Passwords</h3>
......@@ -1077,7 +1077,7 @@ Connection conn = DriverManager.
</code>
The settings in the URL override the settings passed as a separate parameter.
<br><a name="user_defined_functions"></a>
<br /><a name="user_defined_functions"></a>
<h2>User Defined Functions and Stored Procedures</h2>
In addition to the built-in functions, this database supports user defined Java functions.
......@@ -1170,7 +1170,7 @@ CREATE ALIAS MATRIX FOR "org.h2.samples.Function.getMatrix";
SELECT * FROM MATRIX(3) WHERE X>0;
</pre>
<br><a name="triggers"></a>
<br /><a name="triggers"></a>
<h2>Triggers</h2>
This database supports Java triggers that are called before or after a row is updated, inserted or deleted.
Triggers can be used for complex consistency checks, or to update related data in the database.
......@@ -1197,7 +1197,7 @@ CREATE TRIGGER INV_INS AFTER INSERT ON INVOICE
</pre>
The trigger can be used to veto a change, by throwing a SQL Exception.
<br><a name="compacting"></a>
<br /><a name="compacting"></a>
<h2>Compacting a Database</h2>
Empty space in the database file is re-used automatically.
To re-build the indexes, the most simple way is to delete the .index.db file
......@@ -1218,7 +1218,7 @@ See also the sample application org.h2.samples.Compact.
The commands SCRIPT / RUNSCRIPT can be used as well to create the a backup
of a database and re-build the database from the script.
<br><a name="cache_settings"></a>
<br /><a name="cache_settings"></a>
<h2>Cache Settings</h2>
<p>
The database keeps most frequently used data and index pages in the main memory.
......
......@@ -5,16 +5,16 @@ Initial Developer: H2 Group
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>H2 Database Engine</title>
<script type="text/javascript" src="navigation.js"></script>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<link rel="alternate" type="application/atom+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-atom.xml">
<link rel="alternate" type="application/rss+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-rss.xml">
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<link rel="alternate" type="application/atom+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-atom.xml" />
<link rel="alternate" type="application/rss+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-rss.xml" />
</head>
<frameset cols="180,*" rows="*" frameborder="2" framespacing="4" border="4" onLoad="loadFrameset()">
<frame frameborder="0" marginheight="0" marginwidth="0" src="search.html" name="menu">
<frame frameborder="0" marginheight="0" marginwidth="0" src="main.html" name="main">
<frame frameborder="0" marginheight="0" marginwidth="0" src="search.html" name="menu" />
<frame frameborder="0" marginheight="0" marginwidth="0" src="main.html" name="main" />
</frameset>
<noframes>
<body>
......
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Functions
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -14,31 +14,31 @@ Functions
<h2>Aggregate Functions</h2>
<c:forEach var="item" items="functionsAggregate">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<h2>Numeric Functions</h2>
<c:forEach var="item" items="functionsNumeric">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<h2>String Functions</h2>
<c:forEach var="item" items="functionsString">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<h2>Time and Date Functions</h2>
<c:forEach var="item" items="functionsTimeDate">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<h2>System Functions</h2>
<c:forEach var="item" items="functionsSystem">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<c:forEach var="item" items="functionsAll">
<br>
<br />
<a name="sql${item.id}"></a><h3>${item.topic}</h3>
<pre>
${item.syntax}
......@@ -46,9 +46,9 @@ ${item.syntax}
<p>
${item.text}
</p>
<b>Example:</b><br>
<b>Example:</b><br />
${item.example}
<br>
<br />
</c:forEach>
</div></td></tr></table></body></html>
\ No newline at end of file
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
SQL Grammar
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -13,23 +13,23 @@ SQL Grammar
<h1>SQL Grammar</h1>
<h2>Commands (Data Manipulation)</h2>
<c:forEach var="item" items="commandsDML">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<h2>Commands (Data Definition)</h2>
<c:forEach var="item" items="commandsDDL">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<h2>Commands (Other)</h2>
<c:forEach var="item" items="commandsOther">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<h2>Other Grammar</h2>
<c:forEach var="item" items="otherGrammar">
<a href="#sql${item.id}">${item.topic}</a><br>
<a href="#sql${item.id}">${item.topic}</a><br />
</c:forEach>
<c:forEach var="item" items="commands">
<br>
<br />
<a name="sql${item.id}"></a><h3>${item.topic}</h3>
<pre>
${item.syntax}
......@@ -37,13 +37,13 @@ ${item.syntax}
<p>
${item.text}
</p>
<b>Example:</b><br>
<b>Example:</b><br />
${item.example}
<br>
<br />
</c:forEach>
<c:forEach var="item" items="otherGrammar">
<br>
<br />
<a name="sql${item.id}"></a><h3>${item.topic}</h3>
<pre>
${item.syntax}
......@@ -51,9 +51,9 @@ ${item.syntax}
<p>
${item.text}
</p>
<b>Example:</b><br>
<b>Example:</b><br />
${item.example}
<br>
<br />
</c:forEach>
</div></td></tr></table></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Installation
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -13,25 +13,25 @@ Installation
<h1>Installation</h1>
<a href="#requirements">
Requirements</a><br>
Requirements</a><br />
<a href="#supported_platforms">
Supported Platforms</a><br>
Supported Platforms</a><br />
<a href="#installing">
Installing the Software</a><br>
Installing the Software</a><br />
<a href="#directory_structure">
Directory Structure</a><br>
Directory Structure</a><br />
<br><a name="requirements"></a>
<br /><a name="requirements"></a>
<h2>Requirements</h2>
To run the database, the following software stack is known to work.
Compatible software works too, but this was not tested.
<ul>
<li>Windows XP
<li>Sun JDK Version 1.4
<li>Mozilla Firefox 1.5
</ul>
</li><li>Sun JDK Version 1.4
</li><li>Mozilla Firefox 1.5
</li></ul>
<br><a name="supported_platforms"></a>
<br /><a name="supported_platforms"></a>
<h2>Supported Platforms</h2>
As this database is written in Java, it can be run on many different platforms.
It is tested with Java 1.4 and 1.5, but can also be compiled to native code using GCJ.
......@@ -39,11 +39,11 @@ The source code does not use features of Java 1.5. Currently, the database is
developed and tested on Windows XP using the Sun JDKs, but probably it also
works in many other operating systems and using other Java runtime environments.
<br><a name="installing"></a>
<br /><a name="installing"></a>
<h2>Installing the Software</h2>
To install the software, run the installer or unzip it to a directory of your choice.
<br><a name="directory_structure"></a>
<br /><a name="directory_structure"></a>
<h2>Directory Structure</h2>
<p>
After installing, you should get the following directory structure:
......
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
License
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -17,11 +17,12 @@ This license is a modified version of the MPL 1.1 available at <a href="http://w
the changes are <u>underlined</u>.
There is a License FAQ section at the Mozilla web site, most of that is applicable to the H2 License as well.
<ul>
<li>You can use H2 for free. You can integrate it into your application (including commercial applications), and you can distribute it.
<li>Files containing only your code are not covered by this license (it is 'commercial friendly').
<li>Modifications to the H2 source code must be published.
<li>You don't need to provide the source code of H2 if you did not modify anything.
</ul>
<li>You can use H2 for free. You can integrate it into your application (including commercial applications),
and you can distribute it.
</li><li>Files containing only your code are not covered by this license (it is 'commercial friendly').
</li><li>Modifications to the H2 source code must be published.
</li><li>You don't need to provide the source code of H2 if you did not modify anything.
</li></ul>
<p>
However, nobody is allowed to rename H2, modify it a little, and sell it as a database engine without telling the customers it is in fact H2.
......@@ -81,9 +82,9 @@ copyright and license as the original code. The copyright of the ported source c
<ol type="a">
<li id="section-1.9-a">Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications.
<li id="section-1.9-b">Any new file that contains any part of the Original Code or
</li><li id="section-1.9-b">Any new file that contains any part of the Original Code or
previous Modifications.
</ol>
</li></ol>
<p id="section-1.10"><b>1.10. "Original Code"</b>
means Source Code of computer software code which is described in the Source Code
notice required by <a href="#exhibit-a">Exhibit A</a> as Original Code, and which,
......@@ -124,19 +125,19 @@ copyright and license as the original code. The copyright of the ported source c
trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform,
sublicense and distribute the Original Code (or portions thereof) with or without
Modifications, and/or as part of a Larger Work; and
<li id="section-2.1-b">under Patents Claims infringed by the making, using or selling
</li><li id="section-2.1-b">under Patents Claims infringed by the making, using or selling
of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or
otherwise dispose of the Original Code (or portions thereof).
<li id="section-2.1-c">the licenses granted in this Section 2.1
</li><li id="section-2.1-c">the licenses granted in this Section 2.1
(<a href="#section-2.1-a">a</a>) and (<a href="#section-2.1-b">b</a>) are effective on
the date Initial Developer first distributes Original Code under the terms of this
License.
<li id="section-2.1-d">Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>)
</li><li id="section-2.1-d">Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>)
above, no patent license is granted: 1) for code that You delete from the Original Code;
2) separate from the Original Code; or 3) for infringements caused by: i) the
modification of the Original Code or ii) the combination of the Original Code with other
software or devices.
</ol>
</li></ol>
<h4 id="section-2.2">2.2. Contributor Grant</h4>
Subject to third party intellectual property claims, each Contributor hereby grants You
......@@ -147,23 +148,23 @@ copyright and license as the original code. The copyright of the ported source c
distribute the Modifications created by such Contributor (or portions thereof) either on
an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger
Work; and
<li id="section-2.2-b">under Patent Claims infringed by the making, using, or selling of
</li><li id="section-2.2-b">under Patent Claims infringed by the making, using, or selling of
Modifications made by that Contributor either alone and/or in combination with its
Contributor Version (or portions of such combination), to make, use, sell, offer for
sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor
(or portions thereof); and 2) the combination of Modifications made by that Contributor
with its Contributor Version (or portions of such combination).
<li id="section-2.2-c">the licenses granted in Sections 2.2
</li><li id="section-2.2-c">the licenses granted in Sections 2.2
(<a href="#section-2.2-a">a</a>) and 2.2 (<a href="#section-2.2-b">b</a>) are effective
on the date Contributor first makes Commercial Use of the Covered Code.
<li id="section-2.2-d">Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>)
</li><li id="section-2.2-d">Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>)
above, no patent license is granted: 1) for any code that Contributor has deleted from
the Contributor Version; 2) separate from the Contributor Version; 3) for infringements
caused by: i) third party modifications of Contributor Version or ii) the combination of
Modifications made by that Contributor with other software (except as part of the
Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code
in the absence of Modifications made by that Contributor.
</ol>
</li></ol>
<h3 id="section-3">3. Distribution Obligations</h3>
<h4 id="section-3.1">3.1. Application of License</h4>
......@@ -207,16 +208,16 @@ copyright and license as the original code. The copyright of the ported source c
all copies Contributor makes available thereafter and shall take other steps (such as
notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who
received the Covered Code that new knowledge has been obtained.
<li id="section-3.4-b"><b>Contributor APIs:</b>
</li><li id="section-3.4-b"><b>Contributor APIs:</b>
If Contributor's Modifications include an application programming interface and Contributor
has knowledge of patent licenses which are reasonably necessary to implement that
API, Contributor must also include this information in the legal file.
<li id="section-3.4-c"><b>Representations:</b>
</li><li id="section-3.4-c"><b>Representations:</b>
Contributor represents that, except as disclosed pursuant to Section 3.4
(<a href="#section-3.4-a">a</a>) above, Contributor believes that Contributor's Modifications
are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the
rights conveyed by this License.
</ol>
</li></ol>
<h4 id="section-3.5">3.5. Required Notices</h4>
You must duplicate the notice in <a href="#exhibit-a">Exhibit A</a> in each file of the
Source Code. If it is not possible to put such notice in a particular Source Code file due to
......@@ -326,12 +327,12 @@ copyright and license as the original code. The copyright of the ported source c
Participant to You under Sections <a href="#section-2.1">2.1</a> and/or
<a href="#section-2.2">2.2</a> automatically terminate at the expiration of the 60 day
notice period specified above.
<li id="section-8.2-b">any software, hardware, or device, other than such Participant's
</li><li id="section-8.2-b">any software, hardware, or device, other than such Participant's
Contributor Version, directly or indirectly infringes any patent, then any rights
granted to You by such Participant under Sections 2.1(<a href="#section-2.1-b">b</a>)
and 2.2(<a href="#section-2.2-b">b</a>) are revoked effective as of the date You first
made, used, sold, distributed, or had made, Modifications made by that Participant.
</ol>
</li></ol>
<p id="section-8.3">8.3. If You assert a patent infringement claim against Participant
alleging that such Participant's Contributor Version directly or indirectly infringes
......
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
H2 Database Engine
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -16,15 +16,15 @@ Welcome to H2, the free SQL database engine.
</p>
<a href="quickstartText.html" style="font-size: 16px; font-weight: bold">Quickstart</a>
<br>
<br />
Click here to get a fast overview.
<br><br>
<br /><br />
<a href="features.html" style="font-size: 16px; font-weight: bold">Features</a>
<br>
<br />
See what this database can do.
<br><br>
<br /><br />
<a href="tutorial.html" style="font-size: 16px; font-weight: bold">Tutorial</a>
<br>
<br />
Go through the samples.
</div></td></tr></table></body></html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html). -->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
H2 Database Engine
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
<link rel="alternate" type="application/atom+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-atom.xml">
<link rel="alternate" type="application/rss+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-rss.xml">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<link rel="alternate" type="application/atom+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-atom.xml" />
<link rel="alternate" type="application/rss+xml" title="H2 Newsfeed" href="http://www.h2database.com/html/newsfeed-rss.xml" />
<script type="text/javascript" src="navigation.js"></script>
<style type="text/css">
<!--
......@@ -20,10 +20,10 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
</p>
<ul>
<li>Very fast, free for everybody, source code is included
<li>Written Java; can be compiled with GCJ (Linux)
<li>Embedded, Server and Cluster modes
<li>JDBC and (partial) ODBC API; Web Client application
</ul>
</li><li>Written Java; can be compiled with GCJ (Linux)
</li><li>Embedded, Server and Cluster modes
</li><li>JDBC and (partial) ODBC API; Web Client application
</li></ul>
<table style="border: 0px;">
<tr><td style="background-color: #eee;">
......@@ -33,12 +33,12 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
Version 1.0 / 2007-01-17:
</td></tr>
<tr><td style="border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-setup-2007-01-17.exe"><img border="1" src="images/download.png" alt="download"></a>
<a href="http://www.h2database.com/h2-setup-2007-01-17.exe"><img border="1" src="images/download.png" alt="download" /></a>
</td><td style="vertical-align: middle; border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-setup-2007-01-17.exe">Windows Installer (2.7 MB)</a>
</td></tr>
<tr><td style="border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-2007-01-17.zip"><img border="1" src="images/download.png" alt="download"></a>
<a href="http://www.h2database.com/h2-2007-01-17.zip"><img border="1" src="images/download.png" alt="download" /></a>
</td><td style="vertical-align: middle; border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-2007-01-17.zip">Platform-Independent Zip (3.6 MB)</a>
</td></tr>
......@@ -52,8 +52,8 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
<tr><td style="border: 0px; background-color: #eee;">
<h3>Support</h3>
<p>
<a href="http://www.h2database.com/ipowerb" target="_top">Forums: Help and Open Discussion</a><br><br>
Or send an e-mail to: <br>
<a href="http://www.h2database.com/ipowerb" target="_top">Forums: Help and Open Discussion</a><br /><br />
Or send an e-mail to: <br />
<script type="text/javascript">
<!--
var a = '-support.png';
......@@ -68,7 +68,7 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
//-->
</script>
<!--
The forum doesn't work at the moment, sorry. <br>
The forum doesn't work at the moment, sorry. <br />
But you can send an e-mail to: <p>
<script type="text/javascript">
var a = '-support.png';
......@@ -93,7 +93,7 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
<table style="border: 0px; margin: 5px; width: 100%;">
<tr><td style="border: 0px;" >
<h3>Performance</h3>
<img border="0" src="images/performance.png" alt="Performance comparison"><br>
<img border="0" src="images/performance.png" alt="Performance comparison" /><br />
Operations/second (higher is better) - <a href="performance.html">More information about this test</a>
</td></tr>
</table>
......@@ -106,19 +106,19 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
<tr><td style="border: 0px; background-color: #eee;">
<h3>News</h3>
<p>
<b>Email Subscription</b>: If you like to get informed by email about new releases, <br>
subscribe here. The email addresses of members are only used in this context.<br>
<b>Email Subscription</b>: If you like to get informed by email about new releases, <br />
subscribe here. The email addresses of members are only used in this context.<br />
Usually, only one mail every few weeks will be sent.
</p>
<form name="newsletter" method="post" action="php/newsletter.php">
Email: <input type="email" name="email" size="30" onKeyDown="newsletter.spam.value='false';">
<input type="hidden" name="spam" value="true" size="30">
<input type="hidden" name="text" value="subscribe">
<input type="submit" value="Submit">
<br><br>
Email: <input type="email" name="email" size="30" onKeyDown="newsletter.spam.value='false';"/>
<input type="hidden" name="spam" value="true" size="30"/>
<input type="hidden" name="text" value="subscribe"/>
<input type="submit" value="Submit"/>
<br /><br />
<b>Newsfeeds:</b> Two are available:
<a href="http://www.h2database.com/html/newsfeed-atom.xml" target="_blank">Full text (Atom)</a>
and <a href="http://www.h2database.com/html/newsfeed-rss.xml" target="_blank">Header only (RSS)</a>.<br>
and <a href="http://www.h2database.com/html/newsfeed-rss.xml" target="_blank">Header only (RSS)</a>.<br />
If you need a newsreader: <a href="http://rssowl.sf.net">RSSOwl</a>.
</form>
</td></tr>
......@@ -132,16 +132,16 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
<tr><td style="border: 0px; background-color: #eee;">
<h3>Contribute</h3>
<p>
You can contribute to the development of H2 by sending feedback and bug<br>
reports, or translate the H2 Console application (files h2/src/main/org/h2/<br>
server/web/res/_text_*.properties). Or click on the PayPal button below to<br>
You can contribute to the development of H2 by sending feedback and bug<br />
reports, or translate the H2 Console application (files h2/src/main/org/h2/<br />
server/web/res/_text_*.properties). Or click on the PayPal button below to<br />
donate money. You will be listed as a supporter:
</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" border="0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!">
<img alt="" border="0" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" border="0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!"/>
<img alt="" border="0" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" />
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----"/>
</form>
</td></tr>
</table>
......@@ -156,13 +156,13 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
You may also send questions, feature requests, or feedback of any kind here:
<form method="post" action="php/sendMail.php">
<p>
Email (optional):<br>
<input name="email" size="73" type="email">
Email (optional):<br />
<input name="email" size="73" type="email"/>
</p>
Message:<br>
Message:<br />
<textarea name="text" cols="70" rows="5"></textarea>
<br>
<input value="Submit" type="submit">
<br />
<input value="Submit" type="submit"/>
</form>
</td></tr>
</table>
......
......@@ -3,22 +3,22 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Performance
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<h1>Performance</h1>
<a href="#performance_comparison">
Performance Comparison</a><br>
Performance Comparison</a><br />
<a href="#application_profiling">
Application Profiling</a><br>
Application Profiling</a><br />
<a href="#database_performance_tuning">
Performance Tuning</a><br>
Performance Tuning</a><br />
<br><a name="performance_comparison"></a>
<br /><a name="performance_comparison"></a>
<h2>Performance Comparison</h2>
In most cases H2 is a lot faster than all other
......@@ -222,7 +222,7 @@ It was developed / sponsored by db4o.
<tr><td>Total</td><td>ms</td><td>26724</td><td>53962</td><td>87112</td></tr>
</table>
<br><a name="application_profiling"></a>
<br /><a name="application_profiling"></a>
<h2>Application Profiling</h2>
<h3>Analyze First</h3>
......@@ -236,7 +236,7 @@ A very good tool to measure both the memory and the CPU is the
<a href="http://www.yourkit.com">YourKit Java Profiler</a>. This tool is also used
to optimize the performance and memory footprint of this database engine.
<br><a name="database_performance_tuning"></a>
<br /><a name="database_performance_tuning"></a>
<h2>Database Performance Tuning</h2>
<h3>Virus Scanners</h3>
......
......@@ -13,9 +13,9 @@ $headers = 'From: newsletter@h2database.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail("dbsupport@h2database.com", "[H2 Newsletter] $now $spam2", $body, $headers);
?>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
H2 Database
</title><link rel="stylesheet" type="text/css" href="../stylesheet.css"></head><body>
</title><link rel="stylesheet" type="text/css" href="../stylesheet.css" /></head><body>
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<h2>The email was sent successfully</h2>
......
......@@ -14,9 +14,9 @@ $headers = 'From: feedback@h2database.com' . "\r\n" .
$headers =
mail("dbsupport@h2database.com", "[H2 Feedback] $now $spam2", $body, $headers);
?>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
H2 Database
</title><link rel="stylesheet" type="text/css" href="../stylesheet.css"></head><body>
</title><link rel="stylesheet" type="text/css" href="../stylesheet.css" /></head><body>
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<h2>The email was sent successfully</h2>
......
......@@ -3,9 +3,9 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Quickstart
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
......@@ -14,9 +14,9 @@ Quickstart
<h2>The H2 Console Application</h2>
The Console lets you access a SQL database using a browser interface.
<br>
<img src="console.png" alt="Web Browser - H2 Console Server - H2 Database">
<br>
<br />
<img src="console.png" alt="Web Browser - H2 Console Server - H2 Database" />
<br />
If you don't have Windows XP, or if something does not work as expected,
please see the detailed description in the <a href="tutorial.html">Tutorial</a>.
......@@ -29,34 +29,34 @@ Install the software using the Windows Installer (if you did not yet do that).
Click <span class="button">Start</span>,
<span class="button">All Programs</span>,
<span class="button">H2</span>, and
<span class="button">H2 Console (Native)</span>:<br>
<img class="screenshot" src="quickstart-1.png" alt="screenshot: start H2 Console"><br>
A new console window appears:<br>
<img class="screenshot" src="quickstart-2.png" alt="screenshot: H2 Running"><br>
<span class="button">H2 Console (Native)</span>:<br />
<img class="screenshot" src="quickstart-1.png" alt="screenshot: start H2 Console" /><br />
A new console window appears:<br />
<img class="screenshot" src="quickstart-2.png" alt="screenshot: H2 Running" /><br />
Also, a new browser page should open with URL <a href="http://localhost:8082" target="_blank">http://localhost:8082</a>.
You may get a security warning from the firewall. If you don't want other computers in the network to access the database
on your machine, you can let the firewall block these connections. Only local connections are required at this time.
<h4>Login</h4>
Select <span class="button">Generic H2</span> and click <span class="button">Connect</span>:<br>
<img class="screenshot" src="quickstart-3.png" alt="screenshot: Login screen"><br>
Select <span class="button">Generic H2</span> and click <span class="button">Connect</span>:<br />
<img class="screenshot" src="quickstart-3.png" alt="screenshot: Login screen" /><br />
You are now logged in.
<h4>Sample</h4>
Click on the <span class="button">Sample SQL Script</span>:<br>
<img class="screenshot" src="quickstart-4.png" alt="screenshot: click on the sample SQL script"><br>
The SQL commands appear in the command area.<br>
Click on the <span class="button">Sample SQL Script</span>:<br />
<img class="screenshot" src="quickstart-4.png" alt="screenshot: click on the sample SQL script" /><br />
The SQL commands appear in the command area.<br />
<h4>Execute</h4>
Click <span class="button">Run</span>:<br>
<img class="screenshot" src="quickstart-5.png" alt="screenshot: click Run"><br>
Click <span class="button">Run</span>:<br />
<img class="screenshot" src="quickstart-5.png" alt="screenshot: click Run" /><br />
On the left side, a new entry TEST is added below the database icon.
The operations and results of the statements are shown below the script.<br>
<img class="screenshot" src="quickstart-6.png" alt="screenshot: see the result"><br>
The operations and results of the statements are shown below the script.<br />
<img class="screenshot" src="quickstart-6.png" alt="screenshot: see the result" /><br />
<h4>Disconnect</h4>
Click on <span class="button">Disconnect</span>:<br>
<img src="icon_disconnect.gif" alt="Disconnect icon"><br>
Click on <span class="button">Disconnect</span>:<br />
<img src="icon_disconnect.gif" alt="Disconnect icon" /><br />
to close the database.
<h4>End</h4>
......
......@@ -4,9 +4,9 @@ Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http:/
Initial Developer: H2 Group
-->
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Search</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="search.js"></script>
<script type="text/javascript" src="navigation.js"></script>
......@@ -14,7 +14,7 @@ Initial Developer: H2 Group
<body style="margin: 10px 0px 0px 0px;" onload="frameMe('menu');">
<div class="menu">
<img border="0" src="h2-logo.png" alt="H2 Logo" onclick="document.location='main.html'">
<img border="0" src="h2-logo.png" alt="H2 Logo" onclick="document.location='main.html'" />
</div>
<form name="searchForm" action="submit" onsubmit="return goFirst();">
......@@ -26,12 +26,12 @@ Initial Developer: H2 Group
</tr>
<tr class="search">
<td class="search" colspan="2">
<input id="search" name="search" type="text" size="21" maxlength="100" onKeyup="listWords(this.value, '')"><br>
<input type="reset" id="clear" style="display:none;" value="Clear" onclick="listWords('', '');">
<input id="search" name="search" type="text" size="21" maxlength="100" onKeyup="listWords(this.value, '')" /><br />
<input type="reset" id="clear" style="display:none;" value="Clear" onclick="listWords('', '');" />
</td>
</tr>
<tr class="search" style="display:none;" >
<td width="1%" class="search" style="vertical-align: middle;"><input id="highlight" type="checkbox" checked="checked" onclick="highlightCurrent(this.checked, search.value)"></td>
<td width="1%" class="search" style="vertical-align: middle;"><input id="highlight" type="checkbox" checked="checked" onclick="highlightCurrent(this.checked, search.value)" /></td>
<td width="99%" class="search" style="padding: 0px; vertical-align: middle;">Highlight keyword(s)</td>
</tr>
<tr class="search">
......@@ -44,27 +44,27 @@ Initial Developer: H2 Group
</form>
<div class="menu">
<b><a href="main.html" target="main">Home</a></b><br>
<a href="quickstartText.html" target="main">Quickstart</a><br>
<a href="installation.html" target="main">Installation</a><br>
<a href="tutorial.html" target="main">Tutorial</a><br>
<a href="features.html" target="main">Features</a><br>
<a href="performance.html" target="main">Performance</a><br>
<a href="advanced.html" target="main">Advanced Topics</a><br>
<br>
<b>Reference</b><br>
<a href="grammar.html" target="main">SQL Grammar</a><br>
<a href="functions.html" target="main">Functions</a><br>
<a href="datatypes.html" target="main">Data Types</a><br>
<a href="../javadoc/index.html" target="main">Javadoc JDBC API</a><br>
<a href="../h2.pdf" target="_blank">Documentation as PDF</a><br>
<br>
<b>Appendix</b><br>
<a href="build.html" target="main">Build</a><br>
<a href="history.html" target="main">History and Roadmap</a><br>
<a href="faq.html" target="main">FAQ and Known Bugs</a><br>
<a href="license.html" target="main">License</a><br>
<br>
<b><a href="main.html" target="main">Home</a></b><br />
<a href="quickstartText.html" target="main">Quickstart</a><br />
<a href="installation.html" target="main">Installation</a><br />
<a href="tutorial.html" target="main">Tutorial</a><br />
<a href="features.html" target="main">Features</a><br />
<a href="performance.html" target="main">Performance</a><br />
<a href="advanced.html" target="main">Advanced Topics</a><br />
<br />
<b>Reference</b><br />
<a href="grammar.html" target="main">SQL Grammar</a><br />
<a href="functions.html" target="main">Functions</a><br />
<a href="datatypes.html" target="main">Data Types</a><br />
<a href="../javadoc/index.html" target="main">Javadoc JDBC API</a><br />
<a href="../h2.pdf" target="_blank">Documentation as PDF</a><br />
<br />
<b>Appendix</b><br />
<a href="build.html" target="main">Build</a><br />
<a href="history.html" target="main">History and Roadmap</a><br />
<a href="faq.html" target="main">FAQ and Known Bugs</a><br />
<a href="license.html" target="main">License</a><br />
<br />
</div>
</body></html>
......@@ -3,40 +3,40 @@
Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><title>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Tutorial
</title><link rel="stylesheet" type="text/css" href="stylesheet.css">
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<script type="text/javascript" src="navigation.js"></script>
</head><body onload="frameMe();">
<table class="content"><tr class="content"><td class="content"><div class="contentDiv">
<h1>Tutorial</h1>
<a href="#tutorial_starting_h2_console">
Starting and Using the H2 Console</a><br>
Starting and Using the H2 Console</a><br />
<a href="#connecting_using_jdbc">
Connecting to a Database using JDBC</a><br>
Connecting to a Database using JDBC</a><br />
<a href="#creating_new_databases">
Creating New Databases</a><br>
Creating New Databases</a><br />
<a href="#using_server">
Using the Server</a><br>
Using the Server</a><br />
<a href="#using_hibernate">
Using Hibernate</a><br>
Using Hibernate</a><br />
<a href="#web_applications">
Using Databases in Web Applications</a><br>
Using Databases in Web Applications</a><br />
<a href="#csv">
CSV (Comma Separated Values) Support</a><br>
CSV (Comma Separated Values) Support</a><br />
<a href="#upgrade_backup_restore">
Upgrade, Backup, and Restore</a><br>
Upgrade, Backup, and Restore</a><br />
<a href="#open_office">
Using OpenOffice Base</a><br>
Using OpenOffice Base</a><br />
<br><a name="tutorial_starting_h2_console"></a>
<br /><a name="tutorial_starting_h2_console"></a>
<h2>Starting and Using the H2 Console</h2>
<p>
This application lets you access a SQL database using a browser interface.
This can be a H2 database, or another database that supports the JDBC API.
</p>
<img src="console.png" alt="Web Browser - H2 Console Server - H2 Database">
<img src="console.png" alt="Web Browser - H2 Console Server - H2 Database" />
<p>
This is a client / server application, so both a server and a client are required to run it.
</p><p>
......@@ -47,9 +47,9 @@ Depending on your platform and environment, there are multiple ways to start the
<td>Windows</td>
<td>1.4 or 1.5</td>
<td>
Click [Start], [All Programs], [H2], and [H2 Console]<br>
Click [Start], [All Programs], [H2], and [H2 Console]<br />
If this worked correctly, an icon will be added to the system tray:
<img src="h2.png" alt="[H2 icon]"><br>
<img src="h2.png" alt="[H2 icon]" /><br />
If you don't get the system tray icon, then maybe Java is not installed correctly (in this case, try another way to start the application).
A browser window should open
and point to the Login page (URL: <a href="http://localhost:8082" target="_blank">http://localhost:8082</a>).
......@@ -59,7 +59,7 @@ Depending on your platform and environment, there are multiple ways to start the
<td>Windows</td>
<td>1.4 or 1.5</td>
<td>
Open a file browser, navigate to h2/bin, and double click on h2.bat.<br>
Open a file browser, navigate to h2/bin, and double click on h2.bat.<br />
If this worked correctly, an icon will be added to the system tray.
If there is a problem, you will see the error message on the console window.
A browser window will open
......@@ -190,7 +190,7 @@ press [Ctrl]+[C] on the console where the server was started (Windows),
or close the console window.
</p>
<br><a name="connecting_using_jdbc"></a>
<br /><a name="connecting_using_jdbc"></a>
<h2>Connecting to a Database using JDBC</h2>
To connect to a database, a Java application first needs to load the database driver,
and then get a connection. A simple way to do that is using the following code:
......@@ -214,12 +214,12 @@ to be recognized by this database. The second parameter in the <code>getConnecti
is the user name ('sa' for System Administrator in this example). The third parameter is the password.
Please note that in this database, user names are not case sensitive, but passwords are case sensitive.
<br><a name="creating_new_databases"></a>
<br /><a name="creating_new_databases"></a>
<h2>Creating New Databases</h2>
By default, if the database specified in the URL does not yet exist, a new (empty)
database is created automatically.
<br><a name="using_server"></a>
<br /><a name="using_server"></a>
<h2>Using the Server</h2>
H2 currently supports three servers: a Web Server, a TCP Server and an ODBC Server.
The servers can be started in different ways.
......@@ -230,9 +230,9 @@ There currently are a few limitations when using the server or cluster mode:
<li>Statement.cancel() is only supported in embedded mode.
A connection can only execute one operation at a time in server or cluster mode,
and is blocked until this operation is finished.
<li>CLOBs and BLOBs are sent to the server in one piece and not as a stream.
</li><li>CLOBs and BLOBs are sent to the server in one piece and not as a stream.
That means those objects need to fit in memory when using the server or cluster mode.
</ul>
</li></ul>
<h3>Starting from Command Line</h3>
To start the Server from the command line with the default settings, run
......@@ -278,14 +278,14 @@ This function should be called after all connection to the databases are closed
to avoid recovery when the databases are opened the next time.
To stop remote server, remote connections must be enabled on the server.
<br><a name="using_hibernate"></a>
<br /><a name="using_hibernate"></a>
<h2>Using Hibernate</h2>
This database supports Hibernate version 3.1 and newer. You can use the HSQLDB Dialect,
or the native H2 Dialect that is available in the file src/tools/org/h2/tools/hibernate/H2Dialect.txt.
This dialect will be integrated into Hibernate, but until this is done you need to copy the file
into the folder src\org\hibernate\dialect (Hibernate 3.1), rename it to H2Dialect.java and re-compile hibernate.
<br><a name="web_applications"></a>
<br /><a name="web_applications"></a>
<h2>Using Databases in Web Applications</h2>
There are multiple ways to access a database from within web
applications. Here are some examples if you use Tomcat or JBoss.
......@@ -356,7 +356,7 @@ public class DbStarter implements ServletContextListener {
}
</pre>
<br><a name="csv"></a>
<br /><a name="csv"></a>
<h2>CSV (Comma Separated Values) Support</h2>
The CSV file support can be used inside the database using the functions CSVREAD and CSVWRITE,
and the CSV library can be used outside the database as a standalone tool.
......@@ -404,7 +404,7 @@ while(rs.next()) {
rs.close();
</pre>
<br><a name="upgrade_backup_restore"></a>
<br /><a name="upgrade_backup_restore"></a>
<h2>Upgrade, Backup, and Restore</h2>
<h3>Database Upgrade</h3>
......@@ -438,19 +438,19 @@ SQL script files may contain references to other script files, in the form of
RUNSCRIPT commands. However, when using the server mode, the references script files
need to be available on the server side.
<br><a name="open_office"></a>
<br /><a name="open_office"></a>
<h2>Using OpenOffice Base</h2>
OpenOffice.org Base supports database access over the JDBC API. To connect to a H2 database
using OpenOffice Base, you first need to add the JDBC driver to OpenOffice.
The steps to connect to a H2 database are:
<ul>
<li>Stop OpenOffice, including the autostart
<li>Copy h2.jar into the directory &lt;OpenOffice&gt;\program\classes
<li>Start OpenOffice Base
<li>Connect to an existing database, select JDBC, [Next]
<li>Example datasource URL: jdbc:h2:c:/temp/test
<li>JDBC driver class: org.h2.Driver
</ul>
</li><li>Copy h2.jar into the directory &lt;OpenOffice&gt;\program\classes
</li><li>Start OpenOffice Base
</li><li>Connect to an existing database, select JDBC, [Next]
</li><li>Example datasource URL: jdbc:h2:c:/temp/test
</li><li>JDBC driver class: org.h2.Driver
</li></ul>
Now you can access the database stored in the directory C:/temp.
</div></td></tr></table></body></html>
\ No newline at end of file
......@@ -3,9 +3,9 @@ Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http:/
Initial Developer: H2 Group
-->
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>H2 Database Engine</title>
<link rel="stylesheet" type="text/css" href="html/stylesheet.css">
<link rel="stylesheet" type="text/css" href="html/stylesheet.css" />
<script type="text/javascript">
location.href = 'html/frame.html';
</script>
......@@ -18,12 +18,12 @@ Welcome to H2, the free SQL database. The main feature of H2 are:
</p>
<ul>
<li>It is free to use for everybody, source code is included
<li>Written in Java, but also available as native executable
<li>JDBC and (partial) ODBC API
<li>Embedded and client/server modes
<li>Clustering is supported
<li>A web client is included
</ul>
</li><li>Written in Java, but also available as native executable
</li><li>JDBC and (partial) ODBC API
</li><li>Embedded and client/server modes
</li><li>Clustering is supported
</li><li>A web client is included
</li></ul>
<h2>No Javascript</h2>
<p>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论