引、H2数据库简介
简介
H2是一个Java编写的关系型数据库,可以被嵌入到Java程序中使用,也可以作为一个单独的数据库服务运行。
H2的名字源于HypersonicSQL,本身的含义是Hypersonic2,但它的代码似乎是从头开始编写的,并没有使用HSQL和HSQLDB的代码
整体优点
- 占用体积小,不臃肿
- 可嵌入运行,能一并打包到java项目中一并启动
- 功能完整,作为数据库使用五脏俱全,且具有多种不同模式对应不同场景
- 具有可视化界面(Web控制台),不需要另外安装可视化工具
- 采用纯Java编写,不受平台的限制
整体缺点
- 存储空间有限,不适合存储大量数据
- 不适应并发场景,高并发时易发生死锁
- 查询速度效率较低,为了提高性能,需要对查询语句进行相当的优化
笔记
H2官网链接:https://www.h2database.com/
建立连接的方法
//设置数据库存储方式或存储路径
private static final String jdbc_url = "jdbc:h2:" + System.getProperty("user.dir") + "/h2/db";//内嵌模式,不需要启动服务
//String jdbcURL = "jdbc:h2:mem:h2db";//内存模式,非持久化存储,项目关闭则数据消失
//String jdbcURL = "jdbc:h2:tcp://localhost/~/h2/db";//服务模式,需要启动服务
//设置帐号
private static final String username = "yn89b5";
//设置密码
private static final String password = "9iqx7f";
//设置连接H2数据库时使用的驱动类
private static final String driverClass = "org.h2.Driver";
//加载驱动
Class.forName(driverClass);
//建立连接
Connection connection = DriverManager.getConnection(jdbc_url, username, password);
Statement statement = connection.createStatement();
{
//在此处执行增删改查逻辑
}
//关闭连接
statement.close();
connection.close();
操作范例
//如果存在,删除对应表
statement.execute("DROP TABLE IF EXISTS TEST_TABLE");
//以指定格式创建表
statement.execute("CREATE TABLE TEST_TABLE(" +
"test_name VARCHAR(100)," +
"test_value VARCHAR(100)," +
"id INT NOT NULL PRIMARY KEY AUTO_INCREMENT" +
")");
//插入数据
statement.executeUpdate("INSERT INTO TEST_TABLE(test_name,test_value) VALUES(" +
"'测试一'," +
"'asjdlaskjlfk'" +
")");
statement.executeUpdate("INSERT INTO TEST_TABLE(test_name,test_value) VALUES(" +
"'测试二'," +
"'alskdjklasjdjasdlkjasd'" +
")");
statement.executeUpdate("INSERT INTO TEST_TABLE(test_name,test_value) VALUES(" +
"'测试三'," +
"'jskldjglksjdglkj'" +
")");
//删除数据
statement.executeUpdate("DELETE FROM TEST_TABLE WHERE test_name='测试二'");
//修改数据
statement.executeUpdate("UPDATE TEST_TABLE SET test_value='测试修改' WHERE test_name='测试三'");
//查询数据
ResultSet rs = statement.executeQuery("SELECT * FROM TEST_TABLE");
while (rs.next()) {
String msg = rs.getInt("id") + "," + rs.getString("test_name") + ":" + rs.getString("test_value");
System.out.println(msg);
}
输出结果
1,测试一:asjdlaskjlfk
3,测试三:测试修改