文档章节

Derby 数据库的应用

奔跑的草根
 奔跑的草根
发布于 2015/06/02 09:58
字数 3394
阅读 55
收藏 0
点赞 0
评论 0

一、Derby数据库简介

1、Derby的发展史及特性概述

        Derby是一个开源的,100%由Java开发的关系数据库,随着Java平台的普及Derby也收到了

越来越多的关注。Derby的前身是美国IBM公司的ColudScape。2004年4月,IBM公司将

CloudScape的数据库捐献给了Apache软件基金会,并将其更名为Derby,

接着SUN也为Derby捐献了一个团队。不同的是,在JavaSE6.0中,SUN将其命名为JavaDB。

因此,CloudScape、Derby和JavaDB只是该项目在不同时期的不同名称而已。

        一提起关系数据库,总会让人觉得安装烦琐,空间占用很大。然而Derby却不是这样,

不用安装,可以直接使用。同时,附带的Derby也只占用了JavaSE6.0中不到10MB的空间。

千万不要认为Derby的功能会很弱,其全部支持SQL92标准以及许多SQL99的扩展,并且

提供了事务、崩溃恢复、并发连接等大型数据库的特性,管理几十GB的数据时依然轻松自如,

速度很快。

        同时,由于Derby是由纯java开发的,因此也与生俱来具有了java的跨平台性,可以很好地

工作在各种操作系统上。另外,derby不但可以像传统数据库那样以C/S的方式工作,

也支持嵌入式的工作方式。

2、JavaSE 6.0 中derby的目录结构

       默认是安装路径

"lib"目录中的几个jar文件

derby.jar--------包含了一些使用derby数据库时的所必须类,例如derby数据库的JDBC驱动类。

derbytools.jar-提供了一些实用derby数据库的工具,例如用来管理derby数据库的命令行工具。

derbyclient.jar-提供了一些开发derby数据客户端所必须的类,通过使用该jar包中的类,

        可以开发出对网络模式下derby数据库服务器访问的客户端程序。

derbynet.jar----为网络模式下的derby数据库服务器提供支持的类。

二、管理工具ij

        一般情况下每种数据库系统都会提供管理工具,如mysql的命令行客户端,oracle的sql*plus等。

derby也不例外,专门提供了一个功能非常强大的命令行工具----ij。

1、准备工作

        使用该工具之前,首先需要做一些准备工作,主要是将ij工具需要的jar包路劲添加进classpath环境变量,

以及设置一个名称为DERBY_INSTALL的环境变量,步骤如下:

①修改/增加classpath环境变量(我这里是用户环境变量)

       变量名:classpath

       变量值:C:\Program Files\Sun\JavaDB\lib\derbytools.jar;C:\Program Files\Sun\JavaDB\lib\derby.jar

       如果是修改classpath环境变量,不要忘记加分号。

       提示:根据自己机器中java db的安装情况进行设置。

②增加DERBY_INSTALL环境变量

       变量名:DERBY_INSTALL

       变量值:C:\Program Files\Sun\JavaDB

       提示:根据自己机器中java db的安装情况进行设置。

      完成了上述步骤后,就完成了使用ij命令行工具的准备工作。为了验证准备工作成功,

ij能够正常工作,在命令行提示符窗口(cmd)中输入如下命令

      java org.apache.derby.tools.sysinfo

      如果准备工作的设置没有问题,cmd中会显示java系统的很多信息,如下图所示


2、简单使用

        ij是derby自带的一个功能强大的数据库管理工具,可以进行很多数据库管理的操作,包括创建数据库,

启动/关闭数据库,执行SQL脚本等。完成准备工作后,就可以启动并使用ij工具了。

在cmd中输入如下命令启动ij工具,java org.apache.derby.tools.ij运行情况如下图所示:

下面分别介绍几个常用的ij命令,如下所列:

①创建以及连接数据库

使用ij创建以及连接指定数据库命令命令的语法格式如下:

connect 'jdbc:derby:<数据库路径>[;create=True/False]';

        数据库路劲指的是指定数据库在磁盘上存放的位置,例如“E:\roway”。另外,路径也可以使用相对路径,

例如"roway",此路径表示当前执行目录下的roway子目录,若当前执行目录为“E:\”则实景路径为“E:\roway”。

       方括号的内容是可选的,也就是说可以不写,若不写相当于"create=False"。

"create=False"表示仅连接已经存在的数据库,而"create=True"表示若数据库不存在则创建数据库。

       提示:上面介绍的连接和创建数据库的命令,是用于derby的嵌入式工作模式的,

用于网络情况下的命令将在后面介绍。

例如,下面给出了一个在E盘下roway目录中创建数据库的命令

        connect 'jdbc:derby:e:/roway;create=True';

完成了数据库的创建和连接后,就可以使用其他命令或运行SQL脚本对数据库进行操作了。

        说明:第一次不存在数据库的时候使用"create=True"参数来创建并连接数据库,

以后就可以使用"create=False"参数仅连接数据库了。

②运行SQL语句


③运行SQL脚本

       上面介绍了在ij中直接输入执行SQL语句,在操作简单的情况下很好用,如果操作复杂直接进行输入

就很不方便了。因此,ij中还允许用户使用run命令执行指定的SQL脚本,基本命令格式如下:

        run '<SQL脚本文件的路径>';

在文本编辑器中输入如下SQL脚本,并保存为derby.sql脚本文件,例如“E:/derby.sql”.

[sql] view plaincopy

  1. create table students(  

  2.   id  numeric(20),  

  3.   name  varchar(30),  

  4.   age   numeric(6)  

  5. );  

  6. insert into students values(10001,'Aa',10);  

  7. insert into students values(10002,'Bb',20);  

  8. insert into students values(10003,'Cc',30);  

  9. select * from students;  

连接前面创建的数据库,并使用run命令执行"derby.sql"脚本文件,执行情况如下图所示:

④其他常用命令

除了前面介绍的几种比较重要的命令外,还有一些其他常用的命令,例如关闭数据库连接等,

        disconnect;-----------------------断开数据库连接

        Exit;---------------------------------退出ij 工具

三、Derby数据库的嵌入式应用

1、嵌入式derby的工作原理

        在嵌入式工作模式中访问derby数据库的java应用程序与derby的数据库引擎工作在同一个JVM中,

不像别的数据库(如oracle)的数据库连接时连接到JVM之外的数据库引擎中。这样做的优点是,

省去了数据库软件的安装、数据源的配置等步骤,随着java应用程序的启动数据库也启动工作,

特别适合进行单机小软件或测试程序的开发。

        但需要注意的是,嵌入式工作模式中应用程序访问数据库的连接是专有的,这就意味着其他

应用程序不可能在同一时刻访问该数据库。

2、嵌入式derby应用的开发步骤

       进行嵌入式derby应用的开发,与通常的JDBC数据库开发并没有很大的区别,基本步骤还是

加载数据库驱动、创建数据库连接、通过连接操作数据库,只是在细节稍有不同。

①加载数据库驱动

    需要连接的是derby数据库,需要加载derby数据库的jdbc驱动类,位于"lib"目录下的derby.jar文件中。

在运行程序时需要将derby.jar文件的路径添加到classpath路径中。

[java] view plaincopy

  1. //加载嵌入式derby的JDBC驱动类  

  2. Class.forName("org.apache.derby.jdbc.EmbeddedDriver");  

说明:网络模式derby的jdbc驱动类不是这个,在后面会介绍。

②数据库连接字符串

        成功地加载了数据库驱动类之后可以通过连接字符串来获取数据库连接了,

下面给出了连接字符串的基本格式:

        jdbc:derby:<数据库路径>[;create=True/False]

        另外,要注意的是由于介绍的derby工作在嵌入式模式,因此在应用程序退出之前应该关闭数据库。

关闭嵌入式的derby数据库也是使用连接字符串,下面给出了语法格式。

        jdbc:derby:;shutdown=True

[java] view plaincopy

  1. //连接指定的derby数据库  

  2. Connection conn = DriverManager.getConnection("jdbc:derby:e:/roway;create=False","","");  

  3. //关闭已经连接的数据库  

  4. DriverManager.getConnection("jdbc:derby:;shutdown=True");  

提示:在关闭数据库成功后,getConnection()方法将抛出异常来进行通知。

③操作数据库

        对derby数据库进行操作所采用的代码和访问其他数据库的完全相同,

也是使用通过数据库连接获取的Statement或PreparedStatement来执行指定的SQL语句。

        说明:从上述3个步骤的介绍中额可以看出,以嵌入式方式访问derby数据库与访问其他数据库基本相同,

想把使用其他数据库的应用移植到derby上市非常容易的。

3、使用嵌入式derby的简单案例

       提示:使用嵌入式derby数据库进行开发和使用其他数据库从编写代码的角度没有太大的不同,

但省去了安装与配置数据库的麻烦,这在特定的情况下将非常有用。

四、Derby数据库的网络模式应用

        derby数据库不但可以通过嵌入式模式工作,与其他的数据库相同,也可以工作在网络模式下

同时为多个应用程序服务,处理来自不同JVM的数据库操作请求。

1、网络模式derby的工作原理

        如果使用过其他的一些大型数据库,例如oracle、db2等,那么应该对数据库的网络

工作模式(c/s模式)的原理相当熟悉。

        在这种模式下derby与其他数据库一样作为一个独立的服务器工作在网络上,等待来自其他

java应用程序的连接请求。这种模式中derby可以同时为不同的java应用程序服务,处理来自不同JVM

的数据库操作请求,也就是说同一时刻可以有多个应用程序访问同一个derby数据库。

        说明:当不适合采用嵌入式进行操作时,例如应用程序与数据库不在同一台机器上,

或者数据库需要多用户并发访问时,就可以采用网络模式的的derby。

2、操作网络模式的derby

        接下来介绍如何对网络模式下的derby进行操作,主要包括以网络模式启动derby

以及使用ij工具连接网络模式的derby。

①以网络模式启动derby

        使用网络模式操作derby数据库前,首先要以网络模式启动derby数据库服务器,

下面给出了启动命令的基本格式:

        java org.apache.derby.drda.NetworkServerControl start [-h <host> [-p <port>]]

        NetworkServerControl是系统提供的一个用于启动derby服务器的类,位于derbynet.jar文件中。

因此需要将derbynet.jar文件路径添加到系统的classpath环境变量中。

        方括号中为可选参数,"-h <host>"用来指定主机,"-p <port>"用来指定端口号,

默认的主机为localhost,默认的端口号为1527。

        例如,下面给出了一个启动derby数据库服务器工作在本机1527端口的命令。

        java org.apache.derby.drda.NetworkServerControl start -h localhost -p 1572

        当成功启动derby数据库的网络服务后,可以从网路中的其他机器或本机来对该机器中的derby数据库

进行操作了。需要特别注意的是,在执行网路操作的过程中,cmd窗口不能关闭,一旦关闭则将断开网路服务。

②使用ij工具连接网络模式的derby

        当derby数据库的网路服务启动后,可以使用ij工具进行连接和操作,

下面给出了ij中连接网络模式derby的名称格式。

        connect 'jdbc:derby://<服务器主机地址>:<服务器端口号>/<数据库路径>[;create=True|False]';

        提示:使用上述命令连接derby数据库服务器之前首先需要将derbyclient.jar文件路径添加到系统的

classpath环境变量中,

例如,下面的命令连接上了上面启动的derby数据库服务。

         connect  'jdbc:derby://localhost:1572/E:/roway';

        如果上述命令在ij中成功执行,则与指定数据库的连接成功建立,接着就可以使用各种命令对所连接的

数据库进行操作了。对网络derby数据库进行操作的命令与嵌入式derby完全相同。

3、开发启动derby网络服务的程序

       实际应用中,不但可以通过前面介绍的命令来启动的derby数据库的网路服务,也可以通过自己开发的

java程序来启动derby数据库的网络服务。

       从前面的介绍中可以发现,通过命令启动derby数据库的网络服务需要使用

org.apache.derby.drda.NetworkServerControl类。同样,自己开发程序启动derby数据库的网络服务也需要

使用这个类,有兴趣的可以自行查阅API。

4、使用网络模式derby的简单案例

      客户端连接网络derby服务器需要的JDBC驱动类org.apache.derby.jdbc.ClientDriver


© 著作权归作者所有

共有 人打赏支持
奔跑的草根
粉丝 4
博文 40
码字总数 26348
作品 0
郑州
为何不使用Derby作为元数据库?

1.每次只能有一个内嵌的Derby数据块可以访问数据文件,这就意味着一次只能为metastore打开一次hive会话。 2.使用Derby时,在不同的目录下开始hive会有不同的元数据库。 Hive会为每个数据库创...

无精疯 ⋅ 04/21 ⋅ 0

Mybatis 分页插件 PageHelper 5.1.4 发布

如果你也在用 Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。 该插件目前支持以下数据库的物理分页 Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005+) I...

Liuzh_533 ⋅ 04/23 ⋅ 0

MyBatis 分页插件 - Mybatis_PageHelper

Mybatis分页插件 - PageHelper 如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。 该插件目前支持以下数据库的物理分页: Oracle Mysql MariaDB SQLite Hsqldb Post...

Liuzh_533 ⋅ 2014/05/20 ⋅ 20

使用sqoop从mysql导入数据到hive

stop-yarn.shstart-dfs.shstart-yarn.sh

wscrf ⋅ 05/28 ⋅ 0

【Hive】Hive结合MySQL的配置及操作

1、安装MySQL (1)解压mysql安装包: (2)切换到root用户,查询系统中是否已安装mysql: 如果已安装,删除已安装的mysql文件: (3)进入解压好的mysql-libs目录,对root用户赋予执行权限:...

gongxifacai_believe ⋅ 04/28 ⋅ 0

DBeaver 社区版 5.1 发布,数据库管理工具

DBeaver 社区版 5.1 已发布,主要更新内容如下: Results viewer: Groupings panel was added (GROUP BY generator) Results viewer: Aggregate panel was renamed to Calc Results viewer:......

局长 ⋅ 06/05 ⋅ 0

Hive系列(二)Hive环境安装

由于之前的Hadoop集群是用Docker搭建的,所以后面整个大数据环境,本人都会采用Docker构建,Hive环境安装需在之前的Hadoop基础上构建,参考文章如下: Hadoop系列(一)Docker部署Hadoop集群 ...

u012834750 ⋅ 05/29 ⋅ 0

通用数据库管理工具 DBeaver 5.0.3 发布

DBeaver 5.0.3 发布,DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL、PostgreSQL、Oracle、DB2、MSSQL、Sybase、Mimer、HSQLDB、Derby, 以及其他兼容 JDBC 的数据库。DBeav...

周其 ⋅ 04/16 ⋅ 0

Hive系列(三)Hive环境安装之MYSQL

前言 前面介绍了Hive的基本环境安装,Hive环境中的Metastore默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore,本篇将介绍安装MySQL来存储MetaStore; Hive系列(二)Hive基本环境安...

u012834750 ⋅ 05/30 ⋅ 0

OpenJ9 和 HotSpot 的对比 Part 2

简介 昨天我从内存和速度这两个维度比较了不同的 JDK 版本以及 OpenJ9 vs HotSpot。如果你问我,一个实际工作的服务于 REST 对象的 Spring Boot 应用程序,所测试的内存部分是真实的。 速度/...

oschina ⋅ 05/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 17分钟前 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 20分钟前 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 21分钟前 ⋅ 0

IT行业的变革就像世界杯德国对战墨西哥一样难以预测[图]

最近在观看世界杯,尤其是昨天的比赛,上一届卫冕冠军德国队居然0:1告负墨西哥,这创造了历史,首先是墨西哥从来没赢过德国队,其次是德国队36年来首站没输过,再差也是打平,而这次,德国队...

原创小博客 ⋅ 40分钟前 ⋅ 0

解决CentOS6、7,/etc/sysconfig/下没有iptables的问题

一、Centos 6版本解决办法: 1.任意运行一条iptables防火墙规则配置命令: iptables -P OUTPUT ACCEPT 2.对iptables服务进行保存: service iptables save 3.重启iptables服务: service ...

寰宇01 ⋅ 50分钟前 ⋅ 2

数据库备份和恢复

备份:mysqldump -u root -p 数据库>磁盘路径 恢复:mysql -u root -p 数据库<sql脚本的磁盘路径

anlve ⋅ 今天 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 今天 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部