H2Database中文教程.docx

上传人:b****1 文档编号:2361771 上传时间:2023-05-03 格式:DOCX 页数:19 大小:69.05KB
下载 相关 举报
H2Database中文教程.docx_第1页
第1页 / 共19页
H2Database中文教程.docx_第2页
第2页 / 共19页
H2Database中文教程.docx_第3页
第3页 / 共19页
H2Database中文教程.docx_第4页
第4页 / 共19页
H2Database中文教程.docx_第5页
第5页 / 共19页
H2Database中文教程.docx_第6页
第6页 / 共19页
H2Database中文教程.docx_第7页
第7页 / 共19页
H2Database中文教程.docx_第8页
第8页 / 共19页
H2Database中文教程.docx_第9页
第9页 / 共19页
H2Database中文教程.docx_第10页
第10页 / 共19页
H2Database中文教程.docx_第11页
第11页 / 共19页
H2Database中文教程.docx_第12页
第12页 / 共19页
H2Database中文教程.docx_第13页
第13页 / 共19页
H2Database中文教程.docx_第14页
第14页 / 共19页
H2Database中文教程.docx_第15页
第15页 / 共19页
H2Database中文教程.docx_第16页
第16页 / 共19页
H2Database中文教程.docx_第17页
第17页 / 共19页
H2Database中文教程.docx_第18页
第18页 / 共19页
H2Database中文教程.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

H2Database中文教程.docx

《H2Database中文教程.docx》由会员分享,可在线阅读,更多相关《H2Database中文教程.docx(19页珍藏版)》请在冰点文库上搜索。

H2Database中文教程.docx

H2Database中文教程

启动和使用H2管理系统

设置H2管理系统

通过JDBC连接到数据库

创建一个新的数据库

使用服务器模式

使用Hibernate

使用TopLink和Glassfish

使用EclipseLink

在WEB应用中使用数据库

CSV(逗号分隔文件)的支持

升级,备份,和恢复

命令行工具

使用OpenOffice基础框架

使用/JNLP启动JAVAWEB

使用连接池

全文检索

用户自定义变量

日期和时间

使用Spring

使用和启动H2管理系统

H2管理系统让你能够通过一个浏览器对H2的SQL数据库进行管理操作。

H2管理系统不仅可以连接H2数据库,也可以连接其他支持JDBC接口的数据库。

这是一个B/C/S应用,在服务器和浏览器上都要运行H2的管理程序。

根据平台不同,H2管理系统支持多种启动应用的方式。

在windows上有两种方式启动H2管理系统

方式一:

单击[开始],[程序],[H2],和[H2Console(CommandLine)]。

当使用SUNJDK1.5时,一个标题为'H2Console'的窗口将弹出。

当使用SUNJDK1.6时,一个数据库图标将被加入WINDOWS到系统托盘。

如果既无窗口弹出也没有图标加入到系统托盘,很可能是你的JDK没有正确安装(如果确认自己的JDK安装正确,可以尝试用另外一种方式启动控制台)。

另外一个浏览器窗口将被打开,指向的URL是http:

//localhost:

8082,是H2管理系统的登录页面。

方式二:

打开文件浏览器,切换目录到h2/bin,双击运行h2.bat。

一个控制台窗口将弹出,如果有问题,将有错误信息在这个窗口里显示。

一个浏览器窗口将被打开,指向的URL是http:

//localhost:

8082,是H2管理系统的登录页面。

其他操作系统启动H2管理系统

方式一:

双击h2*.jar文件,如果.jar文件能正确的被java打开。

方式二:

打开一个控制台窗口,切换目录到h2/bin,执行命令:

java-cph2*.jarorg.h2.tools.Server

防火墙

在你启动服务时,如果你安装了防护墙,你可能会收到一个防护墙的安全警告。

如果不需要其他计算机访问你这台计算机上的H2数据库,你可以让防火墙阻塞H2对外服务的端口,但是本地计算机仍可以访问这些端口。

当你需要其他计算机也能访问这台计算机的H2数据库时,你需要让防火墙开放H2对外服务的端口。

有报告显示使用卡巴斯基7.0的防火墙时,使用IP地址访问本地的H2时,速度非常的缓慢,替代的方案是使用'localhost'代替IP地址来访问。

一个简单的防火墙已经集成到H2的服务器中,其他的计算机缺省状态下不能连接到服务器,如果需要其他计算机能连接到H2服务器,到'Preferences'(偏好),选择'Allowconnectionsfromothercomputers'(允许从其他计算连接)即可。

JAVA测试

打开一个命令行窗口,输入下面的命令,检测JAVA的版本:

java-version

如果你得到错误的信息,你可能未安装JDK,或是需要将JAVA的可执行文件路径加入到环境变量PATH中。

错误信息'Portmaybeinuse'(端口被占用)

你可能在启动一个H2控制台实例时,出现错误信息"TheWebservercouldnotbestarted.Possiblecause:

anotherserverisalreadyrunning...".(WEB服务器不能启动,可能的原因:

另外一个服务器已经在运行了)。

使用不同的端口,可以在一台计算机上启动多个控制台程序,但是一般都不被这么要求。

使用其他端口

如果端口已经被其他应用占用,你需要使用其他端口来启动H2控制台。

改变H2的控制台端口需要修改配置文件.h2.server.properties。

这个文件存储在用户目录下(在Windows系统中,这个文件通常在DocumentsandSettings/)。

这个相应的入口实体是webPort.

使用浏览器连接到服务器

服务器启动成功后,你就可以使用WEB浏览器访问服务,浏览器需要支持JavaScript。

在启动的服务器上启动浏览器,打开URLhttp:

//localhost:

8082。

在启动服务器之外的计算机上,你需要提供启动服务器的IP地址,如http:

//192.168.0.2:

8082.如果你在服务器上启用了SSL,URL需要使用https:

//开头.

多个并发会话

支持多个并发的浏览器会话。

由于数据对象是存储在服务器上的,同时工作的会话数受限于服务器的内存。

登录

在登录页,你提交连接信息就可以登录到数据库。

设置JDBC作为连接数据库的驱动,填入JDBCURL、用户名、密码,单击[Connect]。

你能保存和恢复以前设置的信息,这些设置都存储在属性文件中。

错误信息

错误信息用红色标识,你能通过单击消息显示或隐藏异常的堆栈信息。

附加数据库驱动

通过增加JAR的本地驱动文件到环境变量来附加数据库驱动。

环境变量包括H2DRIVERS和CLASSPATH,以WINDOWS为例:

如要增加数据库驱动“C:

\Programs\hsqldb\lib\hsqldb.jar”,设置环境变量H2DRIVERS=C:

\Programs\hsqldb\lib\hsqldb.jar。

多个驱动可以被设置,每个驱动之间通过;分号分隔(WINDOWS),其他系统通过:

冒号分隔。

在路径中空格被支持,但是这些设置不能被引用。

使用H2控制台

H2控制台主页面分为三个主要的部分:

顶部的工具栏,左边的是对象树,右边的是查询和结果输出栏。

数据库对象(如表)都被列在左边的树形上。

在查询栏上输入SQL语句点击'Run‘,结果就被输出到命令行的下面。

增加表名和字段名

可以通过在树上点击增加表名和字段名。

如果单击表,当这个查询栏是空的时候,”SELECT*FROM"将被自动增加到查询栏。

当输入一个表的查询时,对象树上将自动的展开这张表。

例如,你输入SELECT*FROMTESTTWHERET,对象树上的表TEST将自动的展开。

断开连接和停止应用

断开数据库,点击工具栏上的Disconnect即可,这个时候,数据库服务仍在继续运行,等待着一个新的会话进行连接。

停止服务需要右键点击系统托盘的H2图标,选择[Exit]。

如果没有系统托盘的H2图标,切换到[Preferences]单击[Shutdown],在WINDOWS上在服务器启动的窗口下按[Ctrl]+[C],或者直接关闭WINDOWS上的控制台窗口。

设置H2控制台

H2控制台的设置信息存储在配置文件.h2.server.properties,该文件存放在你的用户目录下。

在WINDOWS上,用户目录通常是C:

\DocumentsandSettings\[username]。

H2控制台第一次启动时将自动创建应用所需要包含的配置文件。

使用JDBC连接到数据库

JAVA应用要连接到数据库,首先需要加载数据库驱动,然后获得一个数据库连接,下面是一个简单的例子:

importjava.sql.*;

publicclassTest{

publicstaticvoidmain(String[]a)

throwsException{

Class.forName("org.h2.Driver");

Connectionconn=DriverManager.

getConnection("jdbc:

h2:

~/test","sa","");

//addapplicationcodehere

conn.close();

}

}

代码中通过Class.forName(...)来加载驱动,通过DriverManager.getConnection()来打开一个连接,驱动名为"org.h2.Driver"。

数据库URL总是使用jdbc:

h2:

来标识,getConnection()的第二个参数是用户名(sa作为系统超级管理员的一个例子),第三个参数是密码,用户名是不区分大小写,但是密码是大小写区分的。

创建新一个新数据库

缺省情况下,如果URL指定的数据库并不存在,一个新的空的数据库将被自动的创建。

创建数据库的用户自动成为这个数据库的超级管理员。

自动创建新库也可以通过特殊的URL进行屏蔽,参见打开一个存在的数据库。

使用服务器模式

H2目前支持三种服务器模式:

WEB服务器模式(H2控制台)、TCP服务器模式(C/S连接)和PG服务器模式(PostgreSQL客户端)。

可以通过多种方式启动服务器模式,通常的方式是通过服务器工具。

通过命令行启动服务器工具

缺省设置下,输入下面命令并执行能启动服务器工具:

java-cph2*.jarorg.h2.tools.Server

通过下面的命令行,可以查看服务器启动命令行的参数及缺省值:

java-cph2*.jarorg.h2.tools.Server-?

参数允许服务器工具启动到其他端口或者只是部分启动。

连接到TCP服务器

要连接另一台计算机的的数据库,只能通过TCP方式进行连接,使用下面的连接驱动和数据库URL:

∙JDBC驱动类:

org.h2.Driver

∙数据库URL:

jdbc:

h2:

tcp:

//ip/~/test

关于数据库URL,看数据库URL说明。

在应用内部启动TCP服务

在JAVA应用内部,也可以通过代码来实现TCP服务的启动和停止,例子代码如下:

importorg.h2.tools.Server;

...

//starttheTCPServer

Serverserver=Server.createTcpServer(args).start();

...

//stoptheTCPServer

server.stop();

外部程序停止TCP服务

TCP服务能被另外的进程停止,通过命令行停止TCP服务的命令如下:

javaorg.h2.tools.Server-tcpShutdowntcp:

//localhost:

9092

通过在程序中添加下面的代码,也可以在另外的进程中停止TCP服务:

org.h2.tools.Server.shutdownTcpServer("tcp:

//localhost:

9094");

这个方法仅能停止TCP服务,如果进程内的其他服务还在运行,他们将不受影响。

为了避免数据库被重新打开,在使用这个方法前,需要将所有的数据库连接都关闭。

远程停止服务,需要能远程连接到这台服务器上。

关闭服务器可以通过使用密码来保护(启动时也需要使用和创建的密码),命令行参数可以通过-tcpPassword来实现。

使用Hibernate

H2数据库支持Hibernate3.1及以上的版本。

你能够使用HSQLDB方言,或是H2自己的方言。

注意的是,在Hibernate中包含的H2方言有BUG,针对这些BUG的补丁已经被发布。

最新的Hibernate的方言版本是src/tools/org/hibernate/dialect/H2Dialect.java.txt。

你能够将它改名为H2Dialect.java,直接把它包含在你的应用中即可使用。

使用TopLink和Glassfish

在Glassfish中使用H2,设置DatasourceClassname为org.h2.jdbcx.JdbcDataSource。

可以通过图形界面进行设置[ApplicationServer]-[Resources]-[JDBC]-[ConnectionPools],或者编辑文件sun-resources.xml:

修改元素jdbc-connection-pool,设置属性datasource-classname为org.h2.jdbcx.JdbcDataSource。

H2数据库是兼容HSQLDB和PostgreSQL。

如果要使用H2的特殊属性,需要使用H2Platform,源代码在src/tools/oracle/toplink/essentials/platform/database/DatabasePlatform.java.txt.你将这个文件拷贝到你的应用中,并将它改名为.java的文件,并修改persistence.xml:

name="toplink.target-database"

value="oracle.toplink.essentials.platform.database.H2Platform"/>

旧版本的Glassfish的属性名为toplink.platform.class.name。

使用EclipseLink

在EclipseLink使用H2,可以通过类org.eclipse.persistence.platform.database.H2Platform。

如果你使用的EclipseLink版本不支持,可以使用OraclePlatform替代,具体看H2Platform.

在WEB应用中使用H2数据库

在WEB应用中使用数据库,可以有多种方式,这里有一些针对Tomcat和JBoss的例子。

内嵌模式

最简单(目前)的方法就是将数据库内嵌到应用中,这样就意味着应用启动的时候就打开了一个连接(好的办法是使用Servlet监听器,看下面的说明)。

数据库能被多个session和应用访问,他们跟应用运行在一个进程内,大部分的Servlet容器只适用一个进程(如Tomcat),这些容器都是没有问题的(除非你使用集群)。

Tomcat使用多线程和多类加载器。

如果多个应用同时访问同一个数据库,你需要将数据库的jar文件放在shared/lib或是server/lib目录。

好的方案是WEB应用启动时打开数据库,WEB应用停止时关闭数据库。

如果是多个应用,只需要一个应用来处理启动和关闭。

好的方案是一个session一个连接,或者是一个请求(action)一个连接,连接使用完后尽可能的关闭它,当然不关闭并不会引起可怕的后果。

服务器模式

服务器模式是差不多的,但是它可以运行在其他的进程中。

使用Servlet监听去启动和停止数据库

增加h2*.jar文件到你的应用中,将下面的配置增加到你的web.xml中(在filter节下面的context-param):

org.h2.server.web.DbStarter

关于具体访问数据库的细节,你可以看DbStarter.java。

在这个工具中缺省打开的内嵌数据库URL为jdbc:

h2:

~/test,用户名sa,密码sa。

如果你要去使用这个连接,你可以使用下面的访问方式:

Connectionconn=getServletContext().getAttribute("connection");

DbStarter也能够启动TCP服务,但是缺省状态下是不允许的。

可以通过修改web.xml下的参数db.tcpServer来启用。

下面是完整的配置选项,这些选项需要放在description标签和listener/filter标签中间:

db.url

jdbc:

h2:

~/test

db.user

sa

db.password

sa

db.tcpServer

-tcpAllowOthers

当WEB应用停止时,数据库连接将被自动关闭,如果还启动了TCP服务,TCP服务也将被自动关闭。

使用H2控制Servlet

H2控制台是一个包含在WEB服务中的独立的应用,但是它也能作为一个servlet使用。

为了做到这点,你需要将h2*.jar文件添加到你的应用中,在你的web.xml文件中增加下面的配置:

H2Console

org.h2.server.web.WebServlet

1

H2Console

/console/*

关于更多的细节,请参考src/tools/WEB-INF/web.xml.

要创建一个合适的H2控制台的WEB应用,运行下面的命令:

buildwarConsole

CSV(逗号分隔文件)的支持

CSV文件在数据库系统中支持CSVREAD和CSVWRITE方法,也可以把它作为数据库之外的一个工具来使用。

将数据库查询结果写成CSV文件

通过内置的CSVWRITE方法,可以将查询结果写成CSV格式的文件,如:

CREATETABLETEST(IDINT,NAMEVARCHAR);

INSERTINTOTESTVALUES(1,'Hello'),(2,'World');

CALLCSVWRITE('test.csv','SELECT*FROMTEST');

读CSV文件

通过CSVREAD方法读取数据。

如:

SELECT*FROMCSVREAD('test.csv');

在JAVA应用中写CSV文件

在数据库之外也可以使用CSV工具,如:

importjava.sql.*;

importorg.h2.tools.Csv;

importorg.h2.tools.SimpleResultSet;

publicclassTestCsv{

publicstaticvoidmain(String[]args)throwsException{

SimpleResultSetrs=newSimpleResultSet();

rs.addColumn("NAME",Types.VARCHAR,255,0);

rs.addColumn("EMAIL",Types.VARCHAR,255,0);

rs.addRow("BobMeier","bob.meier@abcde.abc");

rs.addRow("JohnJones","john.jones@abcde.abc");

Csv.getInstance().write("data/test.csv",rs,null);

}

}

在JAVA应用中读CSV文件

在数据库之外也能读CSV文件,如:

importjava.sql.*;

importorg.h2.tools.Csv;

publicclassTestCsv{

publicstaticvoidmain(String[]args)throwsException{

ResultSetrs=Csv.getInstance().

read("data/test.csv",null,null);

ResultSetMetaDatameta=rs.getMetaData();

while(rs.next()){

for(inti=0;i

System.out.println(

meta.getColumnLabel(i+1)+":

"+

rs.getString(i+1));

}

System.out.println();

}

rs.close();

}

}

升级,备份,和恢复

数据库升级DatabaseUpgrade

数据库升级的推荐方案是,老版本的数据库的数据备份成SQL脚本的方式,在新版本的数据库上执行这些SQL来恢复数据。

用脚本工具备份数据

备份数据库有多种方式。

如可以直接拷贝数据库文件,但是不建议在数据库在使用的时候去拷贝文件,另外数据库文件是二进制的,不能直接读懂,并且数据库文件可能会比较大,推荐的备份方式是创建压缩的SQL脚本文件,并且H2提供了数据导出的脚本工具:

javaorg.h2.tools.Script-urljdbc:

h2:

~/test-usersa-scripttest.zip-optionscompressionzip

也可能通过SQL命令脚本去备份数据库,关于更多的命令选项,请查看SQL命令脚本。

备份也能通过远程来做,但是文件被创建在服务器上,你可以通过FTP服务获取备份的脚本文件。

用脚本恢复数据

从一个SQL脚本文件恢复数据库,你可以使用RunScript工具:

javaorg.h2.tools.RunScript-urljdbc:

h2:

~/test-usersa-scripttest.zip-optionscompressionzip

关于更多的命令的选项,请参考SQL命令RUNSCRIPT。

恢复也能通过远程来实现,但是恢复的文件需要在服务器上。

可以通过FTP服务器上传恢复需要的脚本文件。

也可以通过RUNSCRIPT执行SQL脚本,SQL脚本文件内也可以引用另外的SQL脚本文件,在服务器模式下,也可以远程执行SQL脚本,但是要求脚本文件和被引用的脚本未见都在服务器上。

在线备份

SQL命令BACKUP和备份工具都能创建全库的备份文件的压缩包。

但是,这个文件的内容并不可读,相比脚本方式,BACKUP命令并不锁定数据库对象,也不阻塞用户,但是BACKUP命令备份结果是事务一致的。

BACKUPTO'backup.zip'

备份工具(org.h2.tools.Backup)不能创建在线备份;程序在执行的时候,数据库不能使用。

并不支持数据库运行的同时创建数据库备份,除非是文件系统支持创建快照,但是快照不能保证数据拷贝顺序的正确性。

命令行工具

H2数据库提供了一组命令行工具,如果你需要了解这些工具,使用参数-?

,如:

java-cph2*.jarorg.h2.tools.Backup-?

命令行工具有:

∙Backup创建数据库备份

∙ChangeFileEnc

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2