DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

hsql笔记


hsql是一款开源的基于Java的数据库。

数据库服务

使用默认配置直接启动

运行$HSQL_HOME/bin/runServer.bat;

配置服务参数

如数据库文件名和服务监听端口等。

  • 通过命令行参数:(详见User guide -> Chapter 1 -> Server mode)通过runServer.bat文件可知它只是运行了"java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server",实际上可以加命令行参数指定服务特性。例如:

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb

  • 通过配置文件:(详见User guide -> Chapter 13: HyperSQL Network Listeners -> Server and Web Server Properties)在hsql服务启动目录(运行"java ...Server"的目录)下创建一个server.properties文件,例如:

server.database.0=godudb

server.port=3001

  • 通过程序代码:(详见User guide -> Chapter 13: HyperSQL Network Listeners -> Starting a Server from your Application)例如:

HsqlProperties p = new HsqlProperties();

p.setProperty("server.database.0","file:/opt/db/accounts");

p.setProperty("server.dbname.0","an_alias");

// set up the rest of properties

// alternative to the above is

Server server = new Server();

server.setProperties(p);

server.setLogWriter(null); // can use custom writer

server.setErrWriter(null); // can use custom writer

server.start();

客户端

图形界面操作

这里用squirrel-sql作为客户端,运行$SQUIRREL_HOME/squirrel-sql.bat启动程序;

安装hsql驱动

将\(HSQL_HOME/lib/hsqldb.jar拷贝到\)SQUIRREL_HOME/lib下;

配置数据库别名

jdbc url: jdbc:hsqldb:hsql://localhost;

username: sa

password: 留空

然后连接就可以打开数据库了。

数据库操作

建表

在SQL面板里输入:

CREATE TABLE Person ( LastName varchar(10), FirstName varchar(10), Address varchar(10), Age int )

运行后在database/PUBLIC/TABLE下会生成一个名为Person的表;

插入数据

insert into person values('chad','lee','guangzhou',33)

删除表

drop table person

持久化验证

重启数据库服务后再用客户端连接服务,可以看到原来的表以及表中的数据都在,这样就实现了数据的持久化。

程序代码操作

下面的代码演示了初始化数据驱动,连接数据库,读取数据及其关闭数据库服务的完整过程,与上面的代码启动服务配合,可以实现对数据库的自动化测试。

try { Class.forName("org.hsqldb.jdbcDriver"); } catch (Exception e) { System.err.println("ERROR: failed to load HSQLDB JDBC driver."); e.printStackTrace(); return; } try { Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:3001", "SA", ""); String sql = "select * from person"; PreparedStatement content = conn.prepareStatement(sql); ResultSet res = content.executeQuery(); // int rowcount = -1; // if (res.last()) { // ResultSet.last() is unsupported by hsql // rowcount = res.getRow(); // } while (res.next()) { System.out.println(res.getString(1)); System.out.println(res.getString(2)); System.out.println(res.getString(3)); } Statement st = conn.createStatement(); st.execute("SHUTDOWN"); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }



Published

Mar 21, 2013

Last Updated

Mar 21, 2013

Category

Tech

Tags

  • hsql 1
  • squirrel 4

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor