Hsqldb入門

一.編程啓動數據庫

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章