经常使用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB相似,十分适合做为嵌入式数据库使用,其它的数据库大部分都须要安装独立的客户端和服务器端。
H2的优点:
一、h2采用纯Java编写,所以不受平台的限制。
二、h2只有一个jar文件,十分适合做为嵌入式数据库试用。
三、性能和功能的优点 html
H2比HSQLDB的最大的优点就是h2提供了一个十分方便的web控制台用于操做和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。 java
准备工做 web
一、h2-2011-04-04.zip 下载地址:http://www.h2database.com/html/download.html
二、解压文件,这里以%H2_HOME%表示为解压的文件目录。运行%H2_HOME%\bin\h2.bat 将会自动打开下面网址。(请确认是否安装了jdk,并设置了JAVA_HOME环境变量)
http://192.168.140.1:8082/login.jsp?jsessionid=244e36a683f97f0d4f3b000f33530ed1 sql
三、点击 connect ,登陆。 数据库
四、执行上图中红色部分sql语句,成功建立test表。 windows
由于没有指定数据库文件位置,会自动输出到输出到C:\Users\Administrator下。 服务器
H2文件结构 session
%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构建脚本 app
H2的使用
支持Embedded,server和in-memory模式以及内存模式。
Embedded模式
一、新建java project工程 H2Test。
二、%H2_HOME%\bin\h2-1.3.154.jar 复制到 \H2Test\lib下,并加入工程引用。
三、新建Generic H2 (Embedded)数据库,指定:JDBC ,而后执行上面的test sql语句,来建立一个test表。
四、新建 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();
}
server模式
一、直接将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服务。
二、新建 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();
}
运行的结果和上面同样。
内存模式(数据只保存在内存中)
一、新建 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
二、上面的 URL 改成 jdbc:h2:~/mem:test 也是能够的。若是是localhost必须启动服务。
资源下载