h2数据库应用

h2数据库是一个由纯java编写轻量级内嵌数据库,仅一个jar文件,1M左右,能执行标准crud操作,支持事务,可文件模式,也可内存模式,在编写小应用程序需要用到一些数据库操作有不希望安装数据库的话最合适不过了

h2有不同的运行模式

内存模式(In-Memory)

url:  jdbc:h2:mem:test

内存中创建一个名为test的数据库,不会持久化,最后一个连接断开后关闭数据库,多个线程可同时访问,但数据仅同进程可见

嵌入式(Embedded)

url:  jdbc:h2:~/test  jdbc:h2:/data/db/test  jdbc:h2:db/test

允许单一进程任意时间访问数据库

服务模式(client/server)

url:  jdbc:h2:tcp://localhost/~/test

访问远程地址用户目录下的test数据库,所有客户端访问同一数据库

混合模式(Mixed)

jdbc:h2:~/test;AUTO_SERVER=TRUE

内嵌模式与服务模式混合使用,本地使用内嵌模式访问,远程使用服务模式访问(速度略慢)

url后面可指定相应参数如:

MODE=MySQL:兼容模式[DB2、Derby、Oracle、MSSQLServer]...

AUTO_SERVER=TRUE:自动混合模式,不支持内存模式

DB_CLOSE_DELAY=-1:最后一个连接关闭后不关闭数据库

server模式下启动数据库示例:

final static String DRIVER_CLASS_NAME = "org.h2.Driver";
    static String URL = "jdbc:h2:tcp://localhost:9092/~/test5";
    static String DB_PORT = "9092";
    static String WEB_PORT = "8088";
    final static String USERNAME = "";
    final static String PASSWORD = "";

    public static void main(String[] args) throws Exception {
        checkParam(args);
        Server.createTcpServer("-tcp", "-tcpPort", DB_PORT).start();
        Server.createWebServer("-webAllowOthers", "-webPort", WEB_PORT).start();//webAllowOthers web管理端允许外部访问
        Class.forName(DRIVER_CLASS_NAME);
        Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        Statement stat = conn.createStatement();
        HikariDataSource basicDataSource = new HikariDataSource();
        stat.execute("DROP TABLE IF EXISTS TEST9;CREATE MEMORY Table TEST9(NAME VARCHAR)");
        stat.execute("INSERT INTO TEST9 VALUES('Hello World')");
        stat.execute("INSERT INTO TEST9 VALUES('Hello World')");
        stat.execute("INSERT INTO TEST9 VALUES('Hello World')");
        stat.execute("INSERT INTO TEST9 VALUES('Hello World')");
        stat.execute("INSERT INTO TEST9 VALUES('Hello World')");
        ResultSet resultSet = stat.executeQuery("SELECT * FROM TEST9");
        while (resultSet.next()){
            System.out.println(resultSet.getObject(1));
        }
        System.out.println("jdbcUrl:"+URL);
        System.out.println("webUrl:http://127.0.0.1:"+WEB_PORT+"/login.jsp");
        conn.close();
    }

    private static void checkParam(String[] args) {
        if(args!=null){//如果传入参数第一个为数据库端口,第二个为web管理端口
            if(args.length==1){
                DB_PORT = args[0];
                URL = "jdbc:h2:tcp://localhost:"+args[0]+"/~/test5";
            }
            if(args.length>1){
                URL = "jdbc:h2:tcp://localhost:"+args[0]+"/~/test5";
                DB_PORT = args[0];
                WEB_PORT = args[1];
            }
        }
    }
相关依赖

<dependencies>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.3.176</version>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>2.4.6</version>
        </dependency>
    </dependencies>



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值