H2数据库使用

LifeBa文章如未注明转载均为原创。

转载请注明:转自LifeBa,谢谢合作:)本文永久链接:http://www.lifeba.org/arch/h2_database_demo.html

H2数据库介绍

常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端。

H2的优势:

1、h2采用纯Java编写,因此不受平台的限制。

2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。

3、性能和功能的优势

H2比HSQLDB的最大的优势就是h2提供了一个十分方便的web控制台用于操作和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。

H2和各数据库特征比较。

准备工作

1、h2-2011-04-04.zip下载地址:http://www.h2database.com/html/download.html

2、解压文件,这里以%H2_HOME%表示为解压的文件目录。运行%H2_HOME%/bin/h2.bat将会自动打开下面网址。(请确认是否安装了jdk,并设置了JAVA_HOME环境变量)

http://192.168.140.1:8082/login.jsp?jsessionid=244e36a683f97f0d4f3b000f33530ed1

3、点击connect,登录。

4、执行上图中红色部分sql语句,成功创建test表。

因为没有指定数据库文件位置,会自动输出到输出到C:/Users/Administrator下。

H2文件结构

%H2_HOME%
-h2
  -bin
    h2-1.3.154.jar //jar包
    h2.bat         //Windows控制台启动脚本
    h2.sh          //Linux控制台启动脚本
    h2w.bat        //Windows控制台启动脚本(不带黑屏窗口)
  +docs 帮助文档
  +service //通过wrapper包装成服务。
  +src  //源代码
  build.bat  windows构建脚本
  build.sh   linux构建脚本
H2的使用

支持Embedded,server和in-memory模式以及内存模式。

Embedded模式

1、新建javaproject工程H2Test。

2、%H2_HOME%/bin/h2-1.3.154.jar复制到/H2Test/lib下,并加入工程引用。

3、新建GenericH2(Embedded)数据库,指定:JDBCURL:jdbc:h2:E:/research/workspace/H2Test/db/test,然后执行上面的testsql语句,来创建一个test表。

4、新建TestH2类主要代码

public static void main(String[] a)
      throws Exception {
   Class.forName(“org.h2.Driver”);
   Connection conn = DriverManager.
       getConnection(“jdbc:h2:E://research//workspace//H2Test//db//test”, “sa”, “”);
   // add application code here
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery(“SELECT * FROM TEST “);   
      while(rs.next()) {   
       System.out.println(rs.getInt(“ID”)+”,”+rs.getString(“NAME”));
      }
   conn.close();
 }
控制台打印出:1,Hi

server模式

1、直接将jdbcurl改为:jdbc:h2:tcp://localhost/~/test就行了。因为我们在上面第一步的时候已经在C:/Users/Administrator创建了test数据库。

你也可以再创建新的数据库,默认都是保存在C:/Users/Administrator下的。

注意:你必须启动服务:%H2_HOME%/bin/h2.bat或者以服务模式启动:%H2_HOME%/service/0_run_server_debug.bat,里面有好几个脚本把H2部署为服务模式。每次机器启动后自动启动H2服务。

2、新建TestServerH2类主要代码

public static void main(String[] a)
    throws Exception {
   Class.forName(“org.h2.Driver”);
   Connection conn = DriverManager.
       getConnection(“jdbc:h2:tcp://localhost/~/test”, “sa”, “”);
   // add application code here
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery(“SELECT * FROM TEST “);   
    while(rs.next()) {   
     System.out.println(rs.getInt(“ID”)+”,”+rs.getString(“NAME”));
    }
   conn.close();
 }
运行的结果和上面一样。

内存模式(数据只保存在内存中)

1、新建TestMemH2类主要代码

public static void main(String[] a)
    throws Exception {
   Class.forName(“org.h2.Driver”);
   Connection conn = DriverManager.
       getConnection(“jdbc:h2:tcp://localhost/mem:test2″, “sa”, “”);
   // add application code here
   Statement stmt = conn.createStatement();
  
   stmt.executeUpdate(“CREATE TABLE TEST_MEM(ID INT PRIMARY KEY,NAME VARCHAR(255));”);
   stmt.executeUpdate(“INSERT INTO TEST_MEM VALUES(1, ‘Hello_Mem’);”);
   ResultSet rs = stmt.executeQuery(“SELECT * FROM TEST_MEM”);   
    while(rs.next()) {   
     System.out.println(rs.getInt(“ID”)+”,”+rs.getString(“NAME”));
    }
   conn.close();
 }
控制台打印出:1,Hello_Mem

2、上面的URL改为jdbc:h2:~/mem:test也是可以的。如果是localhost必须启动服务。

相关推荐