
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数据库的内存模式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)