当前位置:首页 » 数据仓库 » h2数据库使用基于内存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

h2数据库使用基于内存

发布时间: 2022-09-15 11:20:58

A. h2创建数据库语句

h2创建数据库语句如下:
CREATE TABLE TEST AS SELECT * FROM CSVREAD('test.csv');//csv文件数据创建test表 CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)) AS SELECT * FROM CSVREAD('test.csv');/创建test表,csv文件相应的列插入到test表相应的字段

H2数据库介绍
常用的开源数据库:H2,Derby,HsqlDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端。
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、性能和功能的优势
H2比HSQLDB的最大的优势就是h2提供了一个十分方便的web控制台用于操作和管理数据库内容,这点比起HSQLDB的swing和awt控制台实在好用多了。

B. 如何使用H2数据库来创建存储过程

Visual Studio简称VS,是微软开发的专门用于编写程序的大型编程工具或编程平台,是基于.Net平台的。.NET 即Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。.Net能提供一种它们共同无缝通讯的桥梁。
C#和C一样,是一种编程语言,语法类似于C或C++,但较C和C++使用更简便,主要特点是封装了大量的类,并保存在相关的类库中,使用时只需要引用相关的命名空间即可。asp.net是专门用于开发网站系统的一种开发技术,适应于开发B/S架构的系统。数据库SQL一般指MS SQL,是用来存储应用程序所需要的基础数据和用户输入相关需要保存的数据的。

C. 怎么远程访问H2数据库的内存模式

简单来说就是用jdbc:h2:mem:h2db来建立内存模式,并建表,
然后jdbc:h2:tcp://192.168.20.141:8082/mem:h2db来访问上面的内存数据库

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.tools.Server;

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://192.168.20.141:8082/mem:h2db";

private String user = "shorturl";
private String password = "123456";

public void startServer() {
try {
System.out.println("正在启动h2...");
server = Server.createTcpServer(
new String[] { "-tcpPort", port }).start();
} catch (SQLException e) {
System.out.println("启动h2出错:" + e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}

public void stopServer() {
if (server != null) {
System.out.println("正在关闭h2...");
server.stop();
System.out.println("关闭成功.");
}
}

public void useH2() {
try {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection(sourceURL1,user, password);
Statement stat = conn.createStatement();
// insert data
stat.execute("CREATE MEMORY Table TEST(NAME VARCHAR)");
stat.execute("INSERT INTO TEST VALUES('Hello World')");
//stat.execute("delete mappedURL");

// use data
ResultSet result = stat.executeQuery("select name from test ");
int i = 1;
while (result.next()) {
System.out.println(i++ + ":" + result.getString("name"));
}
result.close();
stat.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void useH2i() {
try {
Class.forName("org.h2.Driver");
//Connection conn = DriverManager.getConnection("jdbc:h2:" + dbDir+";AUTO_SERVER=TRUE;MVCC=TRUE",user, password);
Connection conn = DriverManager.getConnection(sourceURL2,user, password);
Statement stat = conn.createStatement();
// use data
ResultSet result = stat.executeQuery("select name from test");

D. H2数据库

According to documentation, closing the last connection closes the database and when closing the database, the database is automatically compacted for up to 200 milliseconds
.
I guess these together may cause data loss & corruption when a
single connection is repeatedly created, data altered, connection
closed, new connection created, etc. - eventually resulting in
exception such as "Block not found in id [1, -128, 8, 42] [1.4.186/50]"
when trying to access the DB. Version 1.3.176 (last stable) works fine with this, version 1.4.186 crashes and corrupts data.

The
behavior can be fixed by appending ";DB_CLOSE_DELAY=-1" to the DB URL,
i.e. disabling autoclosing DB when last connection is closed. I though
it might have had something to do with 1.4's new "FS" file locking
protocol, but changing that to old "FILE" doesn't seem to help.

Of
course this is not how a DB connection is typically used - when using a
connection pool, this would go unnoticed - and I found this purely by
accident. But it's a bug anyway, isn't it?

Best Regards,
Joonas

狗哥找的

E. h2数据库在linux服务器怎么使用

简单来说就是用jdbc:h2:mem:h2db来建立内存模式,并建表, 然后jdbc:h2:tcp://192.168.20.141:8082/mem:h2db来访问上面的内存数据库 package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; imp...

F. asp.net 使用 h2 内存数据库

提供一个下载的地方
http://download.csdn.net/detail/yixiaoping/5956595
H2就不做很多介绍了。资源包内容列表是我进行H2预研是收集的H2资料,应该是最全面的的了:

1、h2.pdf (H2 API)

2、h2-1.3.173.jar (截止2013-8-15最新的H2.jar)

3、h2-2013-07-28.zip (截止2013-8-15最新的H2服务,包括API\JAR\服务)

4、H2Database_SQL语法.doc

5、H2Database高级特性.doc

6、H2Database聚合函数.doc

7、H2Database连接配置.doc

8、H2Database数据类型.doc

9、H2Database中文教程.doc

10、H2内存数据库h2部署操作手册.docx

11、H2内存数据库安装与维护.doc

12、H2数据库基础知识.docx

13、H2数据库使用.doc

G. h2内存数据库建表的时候,如何实现自增列建表sql

自动递增的两种方法:auto_increment,identity(1,1)
下面介绍完整的创建一个表格的方式:举例子说明
CREATE TABLE `fs_server` (
`id` int(11) NOT NULL auto_increment,
`server_id` int(11) NOT NULL,
`state` varchar(64) NOT NULL,
`check_time` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
如果不添加 PRIMARY KEY (`id`),则会导致报错,需要添加一个关于主键的语句。

H. H2 Database 这个数据库能用到真正的大型项目 生产环境吗 , 一般java项目用到的内存数据库用哪个呢

用来缓存消息的内存数据库或Cache,需要满足:
1.能快速方便的进行消息的查询
2.能支持分布式 (网络模式)
3.能支持集群 (单点失效和负载均衡)
4. 支持持久化(自身能持久化, 不需要我们额外的开发)
SQLLite和Derby ,不过不是很确定这两者是否都支撑集群,其他都支持,Derby是用纯java写的,集成在JDK6的安装当中,现在叫JavaDB

I. 什么是H2数据库

H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。

H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库非常方便。

H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。

它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。

H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了。

(9)h2数据库使用基于内存扩展阅读:

H2数据库运行方式:

1、内存模式

数据库只在内存中运行,关闭连接后数据库将被清空,适合测试环境,连接字符串:jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1,如果不指定DBName,则以私有方式启动,只允许一个连接。

2、嵌入式

数据库持久化存储为单个文件。连接字符串:jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE。~/.h2/DBName表示数据库文件的存储位置,如果第一次连接则会自动创建数据库。

3、服务模式

H2支持三种服务模式:web server:此种运行方式支持使用浏览器访问H2 Console。

CP server:支持客户端/服务器端的连接方式。

PG server:支持PostgreSQL客户端。

J. 如何用Java代码后台启动H2数据库的内存模式有知道的吗

packagetest;

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;

importorg.h2.tools.Server;

publicclassH2Demo{
privateServerserver;
privateStringport="9094";
privateStringdbDir="./h2db/sample";
privateStringuser="zhoujiang";
privateStringpassword="123456";

publicvoidstartServer(){
try{
System.out.println("正在启动h2...");
server=Server.createTcpServer(
newString[]{"-tcpPort",port}).start();
}catch(SQLExceptione){
System.out.println("启动h2出错:"+e.toString());
//TODOAuto-generatedcatchblock
e.printStackTrace();
thrownewRuntimeException(e);
}
}

publicvoidstopServer(){
if(server!=null){
System.out.println("正在关闭h2...");
server.stop();
System.out.println("关闭成功.");
}
}

publicvoiseH2(){
try{
Class.forName("org.h2.Driver");
Connectionconn=DriverManager.getConnection("jdbc:h2:"+dbDir,
user,password);
Statementstat=conn.createStatement();
//insertdata
stat.execute("CREATETABLETEST(NAMEVARCHAR)");
stat.execute("INSERTINTOTESTVALUES('HelloWorld')");

//usedata
ResultSetresult=stat.executeQuery("selectnamefromtest");
inti=1;
while(result.next()){
System.out.println(i+++":"+result.getString("name"));
}
result.close();
stat.close();
conn.close();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

publicstaticvoidmain(String[]args){
H2Demoh2=newH2Demo();
h2.startServer();
h2.useH2();
h2.stopServer();
System.out.println("==END==");
}
}