|
|
POM.xml
<?xml version="1.0" encoding="UTF-8"?><project> <modelVersion>4.0.0</modelVersion> <groupId>hsqldemo</groupId> <artifactId>hsqldemo</artifactId> <version>0.0.1-SNAPSHOT</version> <description></description> <dependencies> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>1.8.0.7</version> </dependency> </dependencies></project>
demo.Client
package demo;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class Client {/** * @param args */public static void main(String[] args) {try {// Connection c =// DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9002/test",// "sa", "");Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "sa", "");// Connection c =// DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");} catch (SQLException e) {e.printStackTrace();}}}
HsqldbDemo.java
package demo;import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;/* * Created on 2003-10-5 by Liudong * /import java.io.*;import java.sql.*;import org.hsqldb.*;/** * HSQLDB数据库引擎测试类 * @author Liudong */public class HsqldbDemo {// 数据库名称public final static String DATABASE_NAME = "hsqltest";// 数据库端口缺省为9001public final static int PORT = 9001;/** * 测试程序入口 * * @param args * @throws Exception */public static void main(String[] args) throws Exception {String path = "data";File f = new File(path);if (!f.exists())f.mkdirs();HsqlDBManager hsqldb = new HsqlDBManager(path);hsqldb.setDatabaseName(DATABASE_NAME);hsqldb.setPort(PORT);new Thread(hsqldb).start();System.out.println("数据库服务已启动");// 开始测试Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;String sql = null;try {// 连接数据库Class.forName("org.hsqldb.jdbcDriver");conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost", "sa", "");// 创建表sql = "CREATE TABLE USER(ID INTEGER,NAME VARCHAR(50),MOBILE CHAR(12))";ps = conn.prepareStatement(sql);ps.executeUpdate();// 插入数据sql = "INSERT INTO user VALUES(?,?,?)";ps = conn.prepareStatement(sql);ps.setInt(1, 1);ps.setString(2, "Winter Lau");ps.setString(3, "13912345678");ps.executeUpdate();// 查询数据ps = conn.prepareStatement("SELECT * FROM user");rs = ps.executeQuery();while (rs.next()) {System.out.println("ID:" + rs.getInt("id"));System.out.println("NAME:" + rs.getString("name"));System.out.println("MOBILE:" + rs.getString("mobile"));}} finally {if (rs != null)rs.close();if (ps != null)ps.close();if (conn != null)conn.close();}// 退出程序System.exit(0);}}
HsqldbManager.java
package demo;import java.io.File;import org.hsqldb.Server;/** * 数据库服务线程 * * @author Liudong */class HsqlDBManager implements Runnable {String dataPath;String databaseName = "test";int port = -1;/** * 构造函数,需要一个数据路径的参数 该参数必须为物理存在的路径 * * @param dataPath */public HsqlDBManager(String dataPath) {this.dataPath = dataPath;if (!this.dataPath.endsWith(File.separator))this.dataPath += File.separator;this.dataPath += databaseName;}public void run() {String[] args = null;if (port != -1)args = new String[] { "-database", dataPath, "-port", port + "" };elseargs = new String[] { "-database", dataPath };// 调用HSQLDB的服务入口Server.main(args);}public String getDatabaseName() {return databaseName;}public String getDataPath() {return dataPath;}public void setDatabaseName(String string) {databaseName = string;}public void setDataPath(String string) {dataPath = string;}public int getPort() {return port;}public void setPort(int i) {port = i;}}
HsqldbDemo.java
import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class HsqldbDemo {/** * @param args */public static void main(String[] args) {//1.start the serverString path = "test";File f = new File(path);if(!f.exists()){f.mkdir();}HsqldbUtil hsqldbUtil = new HsqldbUtil(path);new Thread(hsqldbUtil).start();System.out.println("DATABASE STATED");//2.process dataConnection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("org.hsqldb.jdbcDriver");conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/","sa","");stmt = conn.createStatement();//create tablestmt.execute("CREATE TABLE testeste(ID INTEGER , NAME VARCHAR(32) , DATE VARCHAR(64))");////insert datastmt.execute("INSERT INTO testeste VALUES (1,'ONE','2008-01')");stmt.execute("INSERT INTO testeste VALUES (2,'TWO','2008-02')");stmt.execute("INSERT INTO testeste VALUES (3,'THREE','2008-03')");stmt.execute("INSERT INTO testeste VALUES (4,'FOUR','2008-04')");//select datars = stmt.executeQuery("select * from testeste");while(rs.next()){System.out.print(rs.getString(1) + "\t");System.out.print(rs.getString(2) + "\t");System.out.println(rs.getString(3));}System.exit(0);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally{try {rs.close();} catch (SQLException e1) {e1.printStackTrace();}try {conn.close();} catch (SQLException e) {e.printStackTrace();}}//}}
HsqldbUtil.java
import java.io.File;import org.apache.commons.lang.StringUtils;import org.hsqldb.Server;public class HsqldbUtil implements Runnable {private String dbName = "test";private String pathName = "test";private int port = -1;public HsqldbUtil(String pathName) {super();if (!StringUtils.isBlank(pathName)) {if (!pathName.endsWith(File.separator)) {pathName += File.separator;}this.pathName = pathName;} else {throw new RuntimeException("invalid pathName");}}// runpublic void run() {String[] args = null;if(port!=-1){args = new String[]{"database",this.getPathName(),"-port",this.getPort()+""};}else{args = new String[]{"database",this.getPathName()};}Server.main(args);}public String getDbName() {return dbName;}public void setDbName(String dbName) {this.dbName = dbName;}public String getPathName() {return pathName;}public void setPathName(String pathName) {this.pathName = pathName;}public int getPort() {return port;}public void setPort(int port) {this.port = port;}} |
|