H2数据库使用
H2数据库介绍
常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端。
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、性能和功能的优势
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、性能和功能的优势
H2比HSQLDB的最大的优势就是h2提供了一个十分方便的web控制台用于操作和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。
H2和各数据库特征比较。
准备工作
1、h2-2011-04-04.zip 下载地址:www.h2database/html/download.html
2、解压文件,这里以%H2_HOME%表示为解压的文件目录。运行%H2_HOME%/bin/h2.bat 将会自动打开下面网址。(请确认是否安装了jdk,并设置了JAVA_HOME环境变量)
192.168.140.1:8082/login.jsp?jsessionid=244e36a683f97f0d4f3b000f33530ed1
3、点击 connect ,登录。
4、执行上图中红部分jsessionidsql语句,成功创建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构建脚本
build.sh linux构建脚本
H2的使用
支持Embedded,server和in-memory模式以及内存模式。
Embedded模式
支持Embedded,server和in-memory模式以及内存模式。
Embedded模式
1、新建java project工程 H2Test。
2、%H2_HOME%/bin/h2-1.3.154.jar 复制到 /H2Test/lib下,并加入工程引用。
3、新建Generic H2 (Embedded)数据库,指定:JDBC URL:jdbc:h2:E:/research/workspace/H2Test/db/test,然后执行上面的test sql语句,来创建一个test表。
3、新建Generic H2 (Embedded)数据库,指定:JDBC URL:jdbc:h2:E:/research/workspace/H2Test/db/test,然后执行上面的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 = ateStatement();
ResultSet rs = uteQuery(“SELECT * FROM TEST “);
()) {
System.out.Int(“ID”)+”,”+rs.getString(“NAME”));
}
conn.close();
}
Class.forName(“org.h2.Driver”);
Connection conn = DriverManager.
getConnection(“jdbc:h2:E://research//workspace//H2Test//db//test”, “sa”, “”);
// add application code here
Statement stmt = ateStatement();
ResultSet rs = uteQuery(“SELECT * FROM TEST “);
()) {
System.out.Int(“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类 主要代码
你也可以再创建新的数据库,默认都是保存在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
throws Exception {
Class.forName(“org.h2.Driver”);
Connection conn = DriverManager.
getConnection(“jdbc:h2:tcp://localhost/~/test”, “sa”, “”);
// add application code here
Statement stmt = ateStatement();
ResultSet rs = uteQuery(“SELECT * FROM TEST “);
()) {
System.out.Int(“ID”)+”,”+rs.getString(“NAME”));
}
conn.close();
}
ResultSet rs = uteQuery(“SELECT * FROM TEST “);
()) {
System.out.Int(“ID”)+”,”+rs.getString(“NAME”));
}
conn.close();
}
运行的结果和上面一样。
内存模式(数据只保存在内存中)
1、新建 TestMemH2类 主要代码
public static void main(String[] a)
throws Exception {
Class.forName(“org.h2.Driver”);
throws Exception {
Class.forName(“org.h2.Driver”);
Connection conn = DriverManager.
getConnection(“jdbc:h2:tcp://localhost/mem:test2″, “sa”, “”);
// add application code here
Statement stmt = ateStatement();
uteUpdate(“CREATE TABLE TEST_MEM(ID INT PRIMARY KEY,NAME VARCHAR(255));”);
uteUpdate(“INSERT INTO TEST_MEM VALUES(1, ‘Hello_Mem’);”);
ResultSet rs = uteQuery(“SELECT * FROM TEST_MEM”);
()) {
System.out.Int(“ID”)+”,”+rs.getString(“NAME”));
}
conn.close();
}
getConnection(“jdbc:h2:tcp://localhost/mem:test2″, “sa”, “”);
// add application code here
Statement stmt = ateStatement();
uteUpdate(“CREATE TABLE TEST_MEM(ID INT PRIMARY KEY,NAME VARCHAR(255));”);
uteUpdate(“INSERT INTO TEST_MEM VALUES(1, ‘Hello_Mem’);”);
ResultSet rs = uteQuery(“SELECT * FROM TEST_MEM”);
()) {
System.out.Int(“ID”)+”,”+rs.getString(“NAME”));
}
conn.close();
}
控制台打印出:1,Hello_Mem
2、上面的 URL 改为 jdbc:h2:~/mem:test 也是可以的。如果是localhost必须启动服务。
1.数据库连接的jdbc url
h2分嵌入模式和服务模式,根据不同的模式和情况。连接数据库jdbc url的写法不同
连接内嵌模式的数据库
"jdbc:h2:file:D:/test" 连接自定目录下的指定数据库
"jdbc:h2:~/test" 连接默认目录下的指定数据库
连接内存模式的数据库
jdbc:h2:mem:test
连接server模式的数据库
jdbc:h2:tcp://localhost/~/test
ssl连接数据库
jdbc:h2:ssl://localhost/~/test
连接压缩文件内的数据库
jdbc:h2:zip:D:/test.zip!/test
2.h2自带的连接池
JdbcConnectionPool cp = ate(url,username,password);
通过连接池获取连接
Connection conn = cp.getConnection();
note:
默认连接池是初始10个连接
3.嵌入模式数据库管理
通过代码启动数据库服务
Server server = ateTcpServer();
server.start();
关闭数据库服务
server.stop();
.数据库注销
server.shutdown();
4.通过h2自带的方法跟cvs文件读写数据
1.通过代码读取csv的数据
ResultSet rs = Instance().read(fileName, null, null);
ResultSetMetaData meta = rs.getMetaData();
while (rs.next()) {
for (int i = 0; i < ColumnCount(); i++) {
System.out.ColumnLabel(i + 1) + ":"
+ rs.getString(i + 1));
}
System.out.println();
}
rs.close();
通过代码写csv数据
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("name", Types.VARCHAR, 255, 0);
rs.addColumn("email", Types.VARCHAR, 255, 0);
rs.addRow("陈盈", "yingchen@midea");
rs.addRow("邹嘉欣", "zoujx@midea");
Instance().write(fileName, rs, null);
2.使用h2自带cvs函数通过sql语句实现
csvread()实现读csv文件
例:SELECT * FROM CSVREAD('d:/test.csv');
CSVWRITE()实现写csv文件
例:CALL CSVWRITE('d:/test.csv', 'SELECT * FROM TEST');
3.根据cvs文件创建h2数据库表
CREATE TABLE TEST AS SELECT * FROM CSVREAD('test.csv');//csv文件数据创建test表 CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)) AS SELECT * FROM CSVREAD('test.csv');/创建test表,csv文件相应的列插入到test表相应的字段
5.H2数据库备份
1.备份sql脚本
运行
java -cp h2*.jar ls.Script -url jdbc:h2:~/test -user sa -script test.zip -options compression zip
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论