h2数据库增删改查基本操作

文章目录

  • 1 基础增删查改代码实践
  • 2 代码启动h2数据库和初始化

1 基础增删查改代码实践

通过jdbc的连接方式,对server模式的h2数据库进行增删查改操作

public static void main(String[] args) {//String jdbcUrl = "jdbc:h2:C:\CRroot\documents\test";//内嵌模式,直接操作文件String jdbcUrl = "jdbc:h2:tcp://localhost/C:\CRroot\documents\test";//tcp模式,需要手动打开浏览器连接一下String userName = "jeason";String passward = "jeason";Connection testDbConnection = null;/*使用前要先导入h2数据库的驱动,本文使用maven中的数据库驱动jar包,如果不在maven中引入 h2.1.4.199.jar则在运行时报错:java.sql.SQLException: No suitable driver found for jdbc:h2:./testdb很显然是没有找到h2数据库的驱动,那他是如何知道这个数据库的类型的?可以看一下 Connection getConnection(String url, java.util.Properties info, Class<?> caller) 的源码看上去好像是遍历所有注册类,一个接一个的进行连接尝试*/try {//设置全局的数据库超时连接DriverManager.setLoginTimeout(1);testDbConnection = DriverManager.getConnection(jdbcUrl, userName, passward);//一开始感觉就像是把某个具体的数据库抽象成某个类的实例,就想File类一样//然而,其实这个connection就只是一个“管道”,去进行增删查改等操作还需要出通过statement和prepareStatement等借口实现//显式加载驱动类,对于h2数据库可有可无,如果不显式加载,有些编译器会优化掉没有使用的类Class.forName("org.h2.Driver");System.out.println(testDbConnection.isClosed());//Statement的实例对象用来执行相关的SQL语句Statement statement = testDbConnection.createStatement();//开始对数据库进行一些操作//如果存在相应的表,则删除statement.execute("drop table test_table if exists");//创建表statement.execute("create table test_table" +"(id int primary key,name varchar(100),age int,sex varchar(100))");//新增数据for (int i = 0; i < 10; i++) {String sqlStatement = String.format("insert into test_table(id,name,age,sex) values(%s,%s,%s,%s)",String.valueOf(i), 'u039A' + (char) i + 'u039A', 10 * i, 'u039A'+'男'+'u039A');System.out.println(sqlStatement);statement.execute(sqlStatement);}//查询结果System.out.println("开始查询并打印数据库内容:");ResultSet resultSet = statement.executeQuery("select * from test_table");while (resultSet.next()) {System.out.println(resultSet.getInt(1) + "--" +resultSet.getString(2) + "--" +resultSet.getInt(3) + "--" +resultSet.getString(4));}//显式释放资源statement.close();testDbConnection.close();} catch (SQLException | ClassNotFoundException e) {e.printStackTrace();}}

贴一下运行结果:

false
insert into test_table(id,name,age,sex) values(0,1844,0,31851)
insert into test_table(id,name,age,sex) values(1,1845,10,31851)
insert into test_table(id,name,age,sex) values(2,1846,20,31851)
insert into test_table(id,name,age,sex) values(3,1847,30,31851)
insert into test_table(id,name,age,sex) values(4,1848,40,31851)
insert into test_table(id,name,age,sex) values(5,1849,50,31851)
insert into test_table(id,name,age,sex) values(6,1850,60,31851)
insert into test_table(id,name,age,sex) values(7,1851,70,31851)
insert into test_table(id,name,age,sex) values(8,1852,80,31851)
insert into test_table(id,name,age,sex) values(9,1853,90,31851)
开始查询并打印数据库内容:
0--1844--0--31851
1--1845--10--31851
2--1846--20--31851
3--1847--30--31851
4--1848--40--31851
5--1849--50--31851
6--1850--60--31851
7--1851--70--31851
8--1852--80--31851
9--1853--90--31851Process finished with exit code 0

2 代码启动h2数据库和初始化

代码实践的环节中,能访问数据库的前提是,已经通过手动的方式启动了h2数据库,在web项目,一般都是在项目启动时将数据库带起来的,可以参考参考https://blog.csdn.net/mybook201314/article/details/88662603#_73。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平