• 【DataBase】H2 DateBase的简单使用


    H2介绍

      H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。

      H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。

      官网地址:http://www.h2database.com

      H2是Java SQL数据库。H2的主要特点是:

    • 非常快,开源,JDBC API
    • 嵌入式和服务器模式; 内存数据库
    • 基于浏览器的Console应用
    • 占地面积小:大约2 MB的jar文件大小

      H2用途

        H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。

        它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。

        H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了。

      H2运行模式

        H2支持三种不同的运行模式,以适用于更多不同的应用场景。

      1、嵌入式模式:

        嵌入式模式下,应用与H2运行于同一个JVM中,H2被应用启动。该模式也是性能最好的模式,也是官方推荐的模式。

      2、服务器模式

        服务器模式下,H2被H2 Server启动(独立于应用的JVM),应用与数据分离,应用使用远程连接(如JDBC)访问数据库。类似于传统数据库的部署,服务器可以与应用部署与同一台机器,也可以部署与另一台机器。

        实际上,H2 Server本身也是使用嵌入式模式来启动运行H2 Database的。显然,由于服务器模式是通过远程连接访问数据,其性能也要低于嵌入式模式。

      3、混合模式

        该模式是嵌入式模式与混合模式的融合。一个应用启动嵌入式模式的H2 Database,其他应用可以将其作为服务器模式来远程访问。

    H2简单使用

      1、H2数据库下载,打开官网(http://www.h2database.com)下载

        

      2、解压下载包,即可使用,解压后目录如下

        h2
        |---bin
        | |---h2-1.1.116.jar   //H2数据库的jar包(驱动也在里面)
        | |---h2.bat //Windows控制台启动脚本
        | |---h2.sh //Linux控制台启动脚本
        | |---h2w.bat //Windows控制台启动脚本(不带黑屏窗口)
        |---docs //H2数据库的帮助文档(内有H2数据库的使用手册)
        |---service //通过wrapper包装成服务。
        |---src //H2数据库的源代码
        |---build.bat //windows构建脚本
        |---build.sh //linux构建脚本

      3、windows环境下运行h2.bat,linux环境下运行h2.sh,打开控制台

      4、windows环境下,运行文件后自动打开浏览器,地址:http://本地ip:8082

        

      5、选择中文语言,并点击连接,自动创建test数据库,数据库文件在~目录中,~代表用户自己目录

        

      6、复制测试脚本sql,并执行

        

        7、运行结果如下:

          

    H2使用JDBC连接

      1、运行

      2、新建maven项目,引入jar包

    1 <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
    2 <dependency>
    3     <groupId>com.h2database</groupId>
    4     <artifactId>h2</artifactId>
    5     <version>1.4.199</version>
    6 </dependency>

      3、编辑JDBC测试类

     1 package com.test.hsqldb;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.PreparedStatement;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 import java.sql.Statement;
     9 
    10 /**
    11  * Hello world!
    12  *
    13  */
    14 public class App {
    15     public static void main(String[] args) throws SQLException, ClassNotFoundException {
    16 
    17         // 加载H2 DB的JDBC驱动
    18         Class.forName("org.h2.Driver");
    19 
    20         // 链接数据库,自动在~创建数据库test,得到联接对象 connection
    21         String url = "jdbc:h2:~/test";
    22         Connection con = DriverManager.getConnection(url, "sa", "");
    23 
    24         // 新建数据表
    25         String ctreateTable = "DROP TABLE test IF EXISTS; create table test(id integer,name VARCHAR(22) )";
    26         Statement createStatement = con.createStatement();
    27         long f1 = createStatement.executeUpdate(ctreateTable);
    28         System.out.println("创建表:" + f1);
    29 
    30         // 插入数据
    31         String insertSql = "INSERT INTO test VALUES(1,'小明')";
    32         Statement insertStatement = con.createStatement();
    33         long f2 = insertStatement.executeUpdate(insertSql);
    34         System.out.println("插入数据:" + f2);
    35 
    36         // 查询数据
    37         String selectSql = "select id,name from test";
    38         PreparedStatement prepareStatement = con.prepareStatement(selectSql);
    39         // 发送SQL 返回一个ResultSet
    40         ResultSet rs = prepareStatement.executeQuery();
    41 
    42         // 编历结果集
    43         while (rs.next())// 从数据库的取一行数据,是否还有下一行
    44         {
    45             int id = rs.getInt(1); // 从1开始
    46             String name = rs.getString(2);
    47             System.out.println("id:" + id + "	名称:" + name);
    48         }
    49 
    50         // 关闭连接
    51         con.close();
    52 
    53     }
    54 }

      4、运行测试类,结果如下:

        

      

  • 相关阅读:
    学习笔记16:残差网络
    学习笔记15:第二种加载数据的方法
    学习笔记14:模型保存
    学习笔记13:微调模型
    学习笔记12:图像数据增强及学习速率衰减
    蚯蚓
    [JSOI] 重要的城市
    正则表达式
    加分二叉树
    选择客栈
  • 原文地址:https://www.cnblogs.com/h--d/p/10932105.html
Copyright © 2020-2023  润新知