H2Database中文教程Word文档下载推荐.docx
- 文档编号:21465501
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:15
- 大小:69.10KB
H2Database中文教程Word文档下载推荐.docx
《H2Database中文教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《H2Database中文教程Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
方式二:
打开文件浏览器,切换目录到h2/bin,双击运行h2.bat。
一个控制台窗口将弹出,如果有问题,将有错误信息在这个窗口里显示。
一个浏览器窗口将被打开,指向的URL是http:
其他操作系统启动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/<
username>
)。
这个相应的入口实体是webPort.
使用浏览器连接到服务器
服务器启动成功后,你就可以使用WEB浏览器访问服务,浏览器需要支持JavaScript。
在启动的服务器上启动浏览器,打开URLhttp:
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()来打开一个连接,驱动名为"
。
数据库URL总是使用jdbc:
来标识,getConnection()的第二个参数是用户名(sa作为系统超级管理员的一个例子),第三个参数是密码,用户名是不区分大小写,但是密码是大小写区分的。
创建新一个新数据库
缺省情况下,如果URL指定的数据库并不存在,一个新的空的数据库将被自动的创建。
创建数据库的用户自动成为这个数据库的超级管理员。
自动创建新库也可以通过特殊的URL进行屏蔽,参见打开一个存在的数据库。
H2目前支持三种服务器模式:
WEB服务器模式(H2控制台)、TCP服务器模式(C/S连接)和PG服务器模式(PostgreSQL客户端)。
可以通过多种方式启动服务器模式,通常的方式是通过服务器工具。
通过命令行启动服务器工具
缺省设置下,输入下面命令并执行能启动服务器工具:
通过下面的命令行,可以查看服务器启动命令行的参数及缺省值:
java-cph2*.jarorg.h2.tools.Server-?
参数允许服务器工具启动到其他端口或者只是部分启动。
连接到TCP服务器
要连接另一台计算机的的数据库,只能通过TCP方式进行连接,使用下面的连接驱动和数据库URL:
∙JDBC驱动类:
org.h2.Driver
∙数据库URL:
jdbc:
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:
9092
通过在程序中添加下面的代码,也可以在另外的进程中停止TCP服务:
org.h2.tools.Server.shutdownTcpServer("
9094"
这个方法仅能停止TCP服务,如果进程内的其他服务还在运行,他们将不受影响。
为了避免数据库被重新打开,在使用这个方法前,需要将所有的数据库连接都关闭。
远程停止服务,需要能远程连接到这台服务器上。
关闭服务器可以通过使用密码来保护(启动时也需要使用和创建的密码),命令行参数可以通过-tcpPassword来实现。
H2数据库支持Hibernate3.1及以上的版本。
你能够使用HSQLDB方言,或是H2自己的方言。
注意的是,在Hibernate中包含的H2方言有BUG,针对这些BUG的补丁已经被发布。
最新的Hibernate的方言版本是src/tools/org/hibernate/dialect/H2Dialect.java.txt。
你能够将它改名为H2Dialect.java,直接把它包含在你的应用中即可使用。
在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:
<
property
name="
toplink.target-database"
value="
oracle.toplink.essentials.platform.database.H2Platform"
/>
旧版本的Glassfish的属性名为toplink.platform.class.name。
在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):
listener>
<
listener-class>
org.h2.server.web.DbStarter<
/listener-class>
/listener>
关于具体访问数据库的细节,你可以看DbStarter.java。
在这个工具中缺省打开的内嵌数据库URL为jdbc:
~/test,用户名sa,密码sa。
如果你要去使用这个连接,你可以使用下面的访问方式:
Connectionconn=getServletContext().getAttribute("
connection"
DbStarter也能够启动TCP服务,但是缺省状态下是不允许的。
可以通过修改web.xml下的参数db.tcpServer来启用。
下面是完整的配置选项,这些选项需要放在description标签和listener/filter标签中间:
context-param>
param-name>
db.url<
/param-name>
param-value>
~/test<
/param-value>
/context-param>
db.user<
sa<
db.password<
db.tcpServer<
-tcpAllowOthers<
当WEB应用停止时,数据库连接将被自动关闭,如果还启动了TCP服务,TCP服务也将被自动关闭。
使用H2控制Servlet
H2控制台是一个包含在WEB服务中的独立的应用,但是它也能作为一个servlet使用。
为了做到这点,你需要将h2*.jar文件添加到你的应用中,在你的web.xml文件中增加下面的配置:
servlet>
servlet-name>
H2Console<
/servlet-name>
servlet-class>
org.h2.server.web.WebServlet<
/servlet-class>
load-on-startup>
1<
/load-on-startup>
/servlet>
servlet-mapping>
url-pattern>
/console/*<
/url-pattern>
/servlet-mapping>
关于更多的细节,请参考src/tools/WEB-INF/web.xml.
要创建一个合适的H2控制台的WEB应用,运行下面的命令:
buildwarConsole
CSV文件在数据库系统中支持CSVREAD和CSVWRITE方法,也可以把它作为数据库之外的一个工具来使用。
将数据库查询结果写成CSV文件
通过内置的CSVWRITE方法,可以将查询结果写成CSV格式的文件,如:
CREATETABLETEST(IDINT,NAMEVARCHAR);
INSERTINTOTESTVALUES(1,'
Hello'
),(2,'
World'
CALLCSVWRITE('
test.csv'
'
SELECT*FROMTEST'
读CSV文件
通过CSVREAD方法读取数据。
如:
SELECT*FROMCSVREAD('
在JAVA应用中写CSV文件
在数据库之外也可以使用CSV工具,如:
importorg.h2.tools.Csv;
importorg.h2.tools.SimpleResultSet;
publicclassTestCsv{
publicstaticvoidmain(String[]args)throwsException{
SimpleResultSetrs=newSimpleResultSet();
rs.addColumn("
NAME"
Types.VARCHAR,255,0);
EMAIL"
rs.addRow("
BobMeier"
bob.meier@abcde.abc"
JohnJones"
john.jones@abcde.abc"
Csv.getInstance().write("
data/test.csv"
rs,null);
在JAVA应用中读CSV文件
在数据库之外也能读CSV文件,如:
ResultSetrs=Csv.getInstance().
read("
null,null);
ResultSetMetaDatameta=rs.getMetaData();
while(rs.next()){
for(inti=0;
i<
meta.getColumnCount();
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:
~/test-usersa-scripttest.zip-optionscompressionzip
也可能通过SQL命令脚本去备份数据库,关于更多的命令选项,请查看SQL命令脚本。
备份也能通过远程来做,但是文件被创建在服务器上,你可以通过FTP服务获取备份的脚本文件。
用脚本恢复数据
从一个SQL脚本文件恢复数据库,你可以使用RunScript工具:
javaorg.h2.tools.RunScript-urljdbc:
关于更多的命令的选项,请参考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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- H2Database 中文 教程