h2数据库测试成功 为什么进去之后报错

h2数据库测试成功 为什么进去之后报错,第1张

H2数据库有好几种运行方式,你说的这种应该就是“嵌入式"运行方式,它限制只能有一个客户端进行 *** 作,优点是性能好。

除了嵌入式 ,还有 服务器 运行方式(就是像oracle/ sqlserver一样的),但除此以外,还提供了混合模式,这种模式比较常用,和嵌入式的唯一区别就是写jdbc url时,这样写:

jdbc:h2:<数据库文件路径名>;AUTO_SERVER=TRUE

最近使用H2时遇到了主键自动生成不能获取到sequence的问题。使用的h2版本和详细日志如下:

经多方寻找:最终锁定问题h2版本过低,据说高于13175已经修复这个问题,于是升级到最新版本,完美解决。

1、用SQL语句:select count() from masterdbosysprocesses 或者 sp_who 2、用管理界面: SQL2000:进入企业管理器,管理——当前活动——进程信息 SQL2005:进入manager studio ,展开对象管理器,管理——右键“活动监视器”——查看进程 SQL2008:进放manager studio 在菜单栏下面有一行图标,点击最后一个图标“活动监视器”,进入活动监视器的界面后,点击“进程”

简单来说就是用jdbc:h2:mem:h2db来建立内存模式,并建表,

然后jdbc:h2:tcp://19216820141:8082/mem:h2db来访问上面的内存数据库

package test;

import javasqlConnection;

import javasqlDriverManager;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

import orgh2toolsServer;

public class H2Demo {

private Server server;

private String port = "8082";

private static String sourceURL1 = "jdbc:h2:mem:h2db";

private static String sourceURL2 = "jdbc:h2:tcp://19216820141:8082/mem:h2db";

private String user = "shorturl";

private String password = "123456";

public void startServer() {

try {

Systemoutprintln("正在启动h2");

server = ServercreateTcpServer(

new String[] { "-tcpPort", port })start();

} catch (SQLException e) {

Systemoutprintln("启动h2出错:" + etoString());

// TODO Auto-generated catch block

eprintStackTrace();

throw new RuntimeException(e);

}

}

public void stopServer() {

if (server != null) {

Systemoutprintln("正在关闭h2");

serverstop();

Systemoutprintln("关闭成功");

}

}

public void useH2() {

try {

ClassforName("orgh2Driver");

Connection conn = DriverManagergetConnection(sourceURL1,user, password);

Statement stat = conncreateStatement();

// insert data

statexecute("CREATE MEMORY Table TEST(NAME VARCHAR)");

statexecute("INSERT INTO TEST VALUES('Hello World')");

//statexecute("delete mappedURL");

// use data

ResultSet result = statexecuteQuery("select name from test ");

int i = 1;

while (resultnext()) {

Systemoutprintln(i++ + ":" + resultgetString("name"));

}

resultclose();

statclose();

connclose();

} catch (Exception e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

public void useH2i() {

try {

ClassforName("orgh2Driver");

//Connection conn = DriverManagergetConnection("jdbc:h2:" + dbDir+";AUTO_SERVER=TRUE;MVCC=TRUE",user, password);

Connection conn = DriverManagergetConnection(sourceURL2,user, password);

Statement stat = conncreateStatement();

// use data

ResultSet result = statexecuteQuery("select name from test");

<bean id="processEngineConfiguration"

class="orgactivitiengineimplcfgStandaloneProcessEngineConfiguration">

<property name="jdbcUrl" value="jdbc:h2:mem:activiti"></property>

<property name="jdbcDriver" value="orgh2Driver"></property>

<property name="jdbcUsername" value="hehe"></property>

<property name="jdbcPassword" value=""></property>

<property name="databaseSchemaUpdate" value="true"></property>

</bean>

创建项目时到入相关jar包即可。一个!

打开idea软件

点击右下角的database按钮

接下来单击+按钮

点击Data Source按钮

在依次点击H2按钮

下载驱动,填写连接信息,点击测试连接,测试成功之后,,之后点击OK按钮

在 H2 数据库中,使用 @sql 语句可以在命令行模式下执行 SQL 脚本。当执行 @sql 语句时,H2 数据库会一次性读取 SQL 脚本文件中的所有 SQL 语句,并逐一执行。

因此,执行 @sql 语句就意味着 SQL 脚本中包含的所有 SQL 语句都会被执行一次。如果脚本中包含多条 SQL 语句,则这些 SQL 语句会按照顺序依次执行。

需要注意的是,在执行 @sql 语句时,如果 SQL 脚本中的某条语句出现了错误,则整个执行过程会中断,并显示相应的错误信息。此时,后续的 SQL 语句将不会被执行。

因此,在编写 SQL 脚本时,应注意保证语法正确和逻辑合理,以确保脚本能够顺利执行。同时,也可以在脚本中添加异常处理代码,以便能够捕捉并处理潜在的错误。

以上就是关于h2数据库测试成功 为什么进去之后报错全部的内容,包括:h2数据库测试成功 为什么进去之后报错、H2数据库遇到Could not fetch the SequenceInformation from the database、如何同时运行两个连接,连接H2数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9319422.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存