浅尝H2数据库<一>

3 篇文章 0 订阅
1 篇文章 0 订阅

本文主要介绍采用内存模式访问H2数据库。


推荐H2的理由:

1. H2对Oracle语法的支持(这方面H2完爆Derby);

2. 采用内存模式访问数据库时,数据库在内存中创建,运行结束后无残留,

非常适合持久层的单元测试;

开发环境:JDK,Eclipse,  Maven

开发实践:

1. 在eclipse中创建一个maven工程;

2. 在pom.xml中添加对h2的依赖,如下:

<dependencies>

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<version>1.4.192</version>

</dependency>

</dependencies>

3. 编写数据访问类(DAO), 如下:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.Statement;



public class UserMapper {

public static void main(String[] args) throws Exception {

//初始H2的数据库驱动

Class.forName("org.h2.Driver");

//获取数据库连接

//jdbc:h2:mem:test, mem表示采用内存模式访问数据库

Connection conn = DriverManager.getConnection("jdbc:h2:mem:test");

//创建表并插入初始数据

String sql = "drop table if exists firsttable;"

+ "create table firsttable (id int primary key, name varchar(255));"

+ "insert into firsttable values (1, 'Hello');"

+ "insert into firsttable values (2, 'World');";

//查询数据

Statement stmt = conn.createStatement();

stmt.execute(sql);

PreparedStatement ppstmt = conn.prepareStatement("select * from firsttable");

ResultSet r = ppstmt.executeQuery();

while(r.next())

System.out.println(r.getInt("id") +", "+ r.getString("name"));

//关闭数据库连接

conn.close();

}

}

注意事项:

当使用jdbc:h2:mem:访问数据库时, 执行序列的sql "select seq_user.nextval from dual"时会报一个错误:sql "identifier" error;

将url改成jdbc:h2:mem:数据库名后,问题解决

常见问题

1. 数据库文件存在哪里 (以下内容是摘自H2 Documentation)

当使用数据库链接 jdbc:h2:~test时,数据库文件会存储在系统用户所在的文件夹。对应windows系统,对应的路径为

C:\Documents and Settings\<userName> or C:\Users\<userName>。如果路径为jdbc:h2:./test, 数据库文件会存放在

应用启动的目录下。如果通过开始目录里面生成的H2应用打开数据库,数据库文件会存储在 <H2安装路径>/bin。

数据库文件路径可以根据需要自定义。可以采用相对/绝对路径。比如jdbc:h2:file:./data/sample, 数据库文件sample.mv.db存储

在当前应用所在目录下面的/data文件夹下。如果数据库文件不存在,将会自动创建。也可以采用完全限定的路径, 如:
jdbc:h2:file:C:/data/test






  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值