数据库-H2-简介

来源:互联网 发布:mac下方图标删除 编辑:程序博客网 时间:2024/05/16 23:58

原文出处:http://blog.csdn.net/yixiaoping/article/details/9801397/

H2官网:http://www.h2database.com/html/main.html


常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL。

其中H2和HSQLDB类似,十分适合作为嵌入式数据库在开发时使用,减少开发过程中不必要的配置,其它的数据库大部分都需要安装独立的客户端和服务器端。


H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、性能和功能的优势,H2比HSQLDB的最大的优势就是h2提供了一个十分方便的web控制台用于操作和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。


准备工作

 
1、下载程序压缩包,下载地址:http://www.h2database.com/html/download.html
2、解压文件,这里以%H2_HOME%表示为解压的文件目录。Windows下运行%H2_HOME%\bin\h2.bat(Linux下运行%H2_HOME%\bin\h2.sh)将会在浏览器中自动打开如下控制台界面。(请确认是否安装了jdk,并设置了JAVA_HOME环境变量)




3、点击连接按钮登录。




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




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


H2文件结构


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(服务模式)和Memory(内存模式)三种模式


Embedded模式


1、新建java project工程 H2Test。


2、将%H2_HOME%\bin\h2-1.3.154.jar 复制到 \H2Test\lib下,并加入工程引用。
3、新建Generic H2 (Embedded)数据库,指定:JDBC ,然后执行上面的test sql语句,来创建一个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、直接将jdbc url 改为: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(); }
运行的结果和上面一样。


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


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必须启动服务。