一.编程启动数据库
package com.alibaba.hsql.hsqldemo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.alibaba.hsql.hsqldemo.util.DbPropertyUtil;
public class DbManager {
static {
String driver = DbPropertyUtil.getDrvier();
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 关闭数据库
*/
public static void stopDb() {
final String dbalias = DbPropertyUtil.getDbName();
final String urlPrefix = DbPropertyUtil.getUrlPrefix();
final String url = urlPrefix + dbalias;
final String username = DbPropertyUtil.getUsername();
final String password = DbPropertyUtil.getPassword();
Connection conn = null;
Statement stmt = null;
try {
try {
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
stmt.execute("SHUTDOWN");
} finally {
if (null != stmt)
stmt.close();
if (null != conn)
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 启动数据库
*/
public static void startDb(boolean dropOldTable) {
startServer();
createTable(dropOldTable);
}
private static void createTable(final boolean dropOldTable) {
//创建表
final String dbalias = DbPropertyUtil.getDbName();
final String urlPrefix = DbPropertyUtil.getUrlPrefix();
final String url = urlPrefix + dbalias;
final String username = DbPropertyUtil.getUsername();
final String password = DbPropertyUtil.getPassword();
final String tableName = DbPropertyUtil.getTableName();
Connection conn = null;
ResultSet rs = null;
String sql = DbPropertyUtil.getSql();
Statement stmt = null;
try {
try {
conn = DriverManager.getConnection(url, username, password);
rs = conn.getMetaData().getTables(null, null, tableName.toUpperCase(), null);
if (!rs.next()) {//不存在
stmt = conn.createStatement();
stmt.execute(sql);
}else{//存在
if(dropOldTable){
stmt = conn.createStatement();
stmt.execute("drop table " + tableName);
stmt.execute(sql);
}
}
} finally {
if (null != rs)
rs.close();
if (null != stmt)
stmt.close();
if (null != conn)
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 启动数据库服务器
*/
private static void startServer() {
final String database = "-database.0";
final String path = System.getProperty("user.home");
if (null == path) {
throw new RuntimeException("user home directory should not null");
}
final String fileName = path + DbPropertyUtil.getDbPath();
final String dbname = "-dbname.0";
final String dbalias = DbPropertyUtil.getDbName();
org.hsqldb.Server.main(new String[] { database, fileName, dbname, dbalias });
}
}
二.hsqldb相关知识:
1.支持Indentity主键;
2.支持分页:SELECT TOP 5 FROM .. , SELECT LIMIT 0 10 FROM ...;
3.支持JDBC 2.0
转载于:https://blog.51cto.com/ethanzhou/1032971