File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes JDBC and Relational Databases and the fly likes HSQL Database error Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of REST with Spring (video course) this week in the Spring forum!
JavaRanch » Java Forums » Databases » JDBC and Relational Databases
Bookmark "HSQL Database error" Watch "HSQL Database error" New topic

HSQL Database error

Akshay Jain

Joined: Dec 29, 2011
Posts: 5
Need some help. Using databases for the first time.

I have downloaded the hsql database and they provide a file. When I run this, I get the following exception:

java.lang.ClassNotFoundException: org.hsqldb.jdbc.JDBCDriver

at the line: Class.forName("org.hsqldb.jdbc.JDBCDriver");

Does someone know how to fix this error?

Akshay Jain

Joined: Dec 29, 2011
Posts: 5
Here is the entire Testdb file:

package org.hsqldb.sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

* Title: Testdb
* Description: simple hello world db example of a
* standalone persistent db application
* every time it runs it adds four more rows to sample_table
* it does a query and prints the results to standard out
* Author: Karl Meissner
public class Testdb {

Connection conn; //our connnection to the db - presist for life of program

// we dont want this garbage collected until we are done
public Testdb(String db_file_name_prefix) throws Exception { // note more general exception

// Load the HSQL Database Engine JDBC driver
// hsqldb.jar should be in the class path or made part of the current jar

// connect to the database. This will load the db files and start the
// database if it is not alread running.
// db_file_name_prefix is used to open or create files that hold the state
// of the db.
// It can contain directory names relative to the
// current working directory
conn = DriverManager.getConnection("jdbc:hsqldb:"
+ db_file_name_prefix, // filenames
"SA", // username
""); // password

public void shutdown() throws SQLException {

Statement st = conn.createStatement();

// db writes out to files and performs clean shuts down
// otherwise there will be an unclean shutdown
// when program ends
conn.close(); // if there are no other open connection

//use for SQL command SELECT
public synchronized void query(String expression) throws SQLException {

Statement st = null;
ResultSet rs = null;

st = conn.createStatement(); // statement objects can be reused with

// repeated calls to execute but we
// choose to make a new one each time
rs = st.executeQuery(expression); // run the query

// do something with the result set.
st.close(); // NOTE!! if you close a statement the associated ResultSet is

// closed too
// so you should copy the contents to some other object.
// the result set is invalidated also if you recycle an Statement
// and try to execute some other query before the result set has been
// completely examined.

//use for SQL commands CREATE, DROP, INSERT and UPDATE
public synchronized void update(String expression) throws SQLException {

Statement st = null;

st = conn.createStatement(); // statements

int i = st.executeUpdate(expression); // run the query

if (i == -1) {
System.out.println("db error : " + expression);

} // void update()

public static void dump(ResultSet rs) throws SQLException {

// the order of the rows in a cursor
// are implementation dependent unless you use the SQL ORDER statement
ResultSetMetaData meta = rs.getMetaData();
int colmax = meta.getColumnCount();
int i;
Object o = null;

// the result set is a cursor into the data. You can only
// point to one row at a time
// assume we are pointing to BEFORE the first row
// points to next row and returns true
// or false if there is no next row, which breaks the loop
for (;; ) {
for (i = 0; i < colmax; ++i) {
o = rs.getObject(i + 1); // Is SQL the first column is indexed

// with 1 not 0
System.out.print(o.toString() + " ");

System.out.println(" ");
} //void dump( ResultSet rs )

public static void main(String[] args) {

Testdb db = null;

try {
db = new Testdb("db_file");
} catch (Exception ex1) {
ex1.printStackTrace(); // could not start db

return; // bye bye

try {

//make an empty table
// by declaring the id column IDENTITY, the db will automatically
// generate unique values for new rows- useful for row keys
"CREATE TABLE sample_table ( id INTEGER IDENTITY, str_col VARCHAR(256), num_col INTEGER)");
} catch (SQLException ex2) {

//ex2.printStackTrace(); // second time we run program
// should throw execption since table
// already there
// this will have no effect on the db

try {

// add some rows - will create duplicates if run more then once
// the id column is automatically generated
"INSERT INTO sample_table(str_col,num_col) VALUES('Ford', 100)");
"INSERT INTO sample_table(str_col,num_col) VALUES('Toyota', 200)");
"INSERT INTO sample_table(str_col,num_col) VALUES('Honda', 300)");
"INSERT INTO sample_table(str_col,num_col) VALUES('GM', 400)");

// do a query
db.query("SELECT * FROM sample_table WHERE num_col < 250");

// at end of program
} catch (SQLException ex3) {
} // main()
} // class Testdb

Here is the exception/stack trace:

java.lang.ClassNotFoundException: org.hsqldb.jdbc.JDBCDriver
at Method)
at java.lang.ClassLoader.loadClass(
at sun.misc.Launcher$AppClassLoader.loadClass(
at java.lang.ClassLoader.loadClass(
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(
at org.hsqldb.sample.Testdb.<init>(
at org.hsqldb.sample.Testdb.main(

Tim Moores

Joined: Sep 21, 2011
Posts: 2409
You need to add the HSQLDB jar file to the classpath whenever you intend to use any of its classes.
Hebert Coelho
Ranch Hand

Joined: Jul 14, 2010
Posts: 754

This post shows how to join JUnit with HSQLDB, step by step: JUnit with HSQLDB, JPA and Hibernate.

I show the steps to use the HSQLDB with an application.

I hope it helps you.

[] [Full WebApplication JSF EJB JPA JAAS with source code to download] One Table Per SubClass [Web/JSF]
I agree. Here's the link:
subject: HSQL Database error
It's not a secret anymore!