无法创建一个加密的H2数据库系统问题,怎么解决

无法创建一个加密的H2数据库系统问题,怎么解决,第1张

1点击access的开始菜单,打开开始菜单。2在开始菜单中,选择打开。3在打开对话框中,选中一个想要加密的数据库,然后点击下面这个下拉按钮,也就是黑色小三角,打开一个下拉菜单。4在这个菜单中,点击以独占方式打开。5在打开的数据库中,点击菜单栏上面的数据库工具。6在这个选项中,点击用密码进行加密。7输入密码两次,如果两次密码输入一样,点击确定即可。8如果要取消密码,同样需要以独占方式打开数据库。9还是在添加密码的地方,依次点击数据库工具——用密码进行加密。10如果没有用独占方式打开数据库,在这一步,系统会提示你,不能修改密码,这时候要返回第八步,重新打开。11如果是以独占方式打开数据库,那么在这一步会看到输入密码的对话框,如果输入的密码正确,数据库就会被取消密码。点击确定即可。

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

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

简单来说就是用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");

大家可以参考下这个网站>

用来缓存消息的内存数据库或Cache,需要满足:

1能快速方便的进行消息的查询

2能支持分布式 (网络模式)

3能支持集群 (单点失效和负载均衡)

4 支持持久化(自身能持久化, 不需要我们额外的开发)

SQLLite和Derby ,不过不是很确定这两者是否都支撑集群,其他都支持,Derby是用纯java写的,集成在JDK6的安装当中,现在叫JavaDB

h2数据库递归查不来数据原因如下。

1、可能出现类型不匹配的问题:例如数据库中存储的是int类型的值,前端传递过来的是string类型的值,所以查询不到匹配的数据。

2、还有就是可能存在数据库缓存的问题:这里数据库的二级缓存,即是对数据的crud有影响,每次的crud之后,查询的数据都是从数据库的缓存中获取的数据,不是从数据库中获取的最新的数据。

以上就是关于无法创建一个加密的H2数据库系统问题,怎么解决全部的内容,包括:无法创建一个加密的H2数据库系统问题,怎么解决、H2数据库遇到Could not fetch the SequenceInformation from the database、怎么远程访问H2数据库的内存模式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存