posts - 23,comments - 66,trackbacks - 0
Derby快速上手
by lostfire

Derby是IBM送给开源社区的又一个礼物,是一个pure java的数据库,现在已经被列入到java1.6中。
不知道对于大数据量的性能如何,但传说中启动derby只会给JVM添加2M的内存,对那些小数据库应用,比如像用access那种应该是挺有诱惑力的。
另外,麻雀虽小,五脏俱全,功能要比access多得多咯,包括事务处理,并发,触发器都有,管理又简单,因此自己用来做点工具正好合适。
废话少说,介绍一下我折腾了半天的经验吧。
我的Derby配置过程:
1,下载db-derby-10.1.3.1-bin.tar.gz,derby_core_plugin_10.1.3.zip和derby_ui_plugin_1.1.0.zip,把两个插件安装到eclipse上
2,打开ecllipse,新建一个project
3,右键这个project,选择Apache Derby,再选择add apache derby native,发现只是给我的project添加了几个derby的jar,还不是在我看着顺眼的lib目录里,索性干掉,换上db-derby- 10.1.3.1-bin.tar.gz解压出来以后lib目录下的jar文件,在Build Path里设置一下;
4,右键Project,在apache derby里选择start apache derby network server,控制台可以看到derby启动后打出的“服务器准备在端口 1527 上接受连接。”
5,右键Project,在apache derby里选择ij(Interactive SQL),启动SQL控制台;
6,输入connect 'jdbc:derby:testdb;create=true'; 注意要有单引号,可以在工程跟目录下创建testdb数据库,可以看到一个新建的目录testdb,那里的文件就是数据库咯;
7,用标准的SQL语句来建一个数据库试试:
create table test (a varchar(4) not null, b char(2) primary key);
居然可以用,太神奇了,呵呵
8,再插入一条语句试试呢,insert into test(a,b) values('a','11');,嗯,不错,可以用select 查出来的哦。
9,再插一下:insert into test(a,b) values('a','11');,哦哦,报错了,“错误 23505:语句异常终止,因为它导致“TEST”上所定义的“SQL060710092132480”标识的唯一或主键约束或唯一索引中出现重复键值。” 呵呵。
10,好了,现在可以像你控制的其他数据库一样来控制Derby了。


如果上述方法不行,或者你习惯了在eclipse之外使用和管理数据库,那么可以很方便的把Derby“装”在系统里。下面我说一下步骤:
1,把db-derby-10.1.3.1-bin.tar.gz解压到c:\derby,使lib和framework两个目录在c:\derby下边即可
2,设置环境变量
  • 设置一个c:\derby\framework\embeded\bin或c:\derby\framework\NetworkServe\bin到Path中,这样我们就可以直接执行上边介绍的connect这样的命令而不用每次钻到那个目录下去执行了
  • 设置c:\derby\lib\derby.jar;c:\derby\lib\derbytoos.jar到CLASSPATH中,以便让这些java编成的命令能够正确执行;
3,打开cmd
4,敲入startNetworkServer,可以看到像在eclisp中提示的那样启动了server
5,再打开一个cmd,敲入sysinfo,可以看到derby的环境信息了,注意在java user dir这一项,也许是java用户目录上和上边看到的会有所不同哦,这样在connect 'jdbc:derby:testdb;create=true';的建的数据库目录就不一样咯。
6,敲入ij,好了,进入到上边的交互界面,可以建一个数据库看看了。
7,最后在另外一个cmd中敲入stopNetworkServer就可以关闭数据库了。

如果你两种方法都试过了,那么需要注意的,还是上边步骤5的问题,这个问题是你可能随时会启动一个数据库或新建一个数据库,但如果你刚刚使用derby,你可能还没有察觉。
derby实际上有两种启动方式,一种是嵌入式的,一种是网络服务器的启动。
1,我们在eclipse中右键start apache derby network server那个,就是网络服务器的启动方式,在这种方式下可以用另外一台计算机在ij中以:
connect 'jdbc:derby://192.168.0.28:1527/testdb'
的方式进行链接。
2,第二种启动方式是在ij里边就直接
connect 'jdbc:derby:testdb'
这实际是在连当前配置环境java user dir下那个目录的数据库。

看到这里可能有点糊涂了,这么就会出问题了那?
实际上derby的访问更像是一种使用derby driver对本地文件系统的访问,不管启动不启动网络服务器,都可以用driver访问本地的数据库。这样,在ij里边像第二种方式那样建立连接是完全可以的。启动了网络服务器,只不过是能够让其他主机访问罢了。

另外一个问题是,在eclipse中和在系统中连接服务器,在connect的时候这个当前配置环境是不一样的,eclipse默认工程所在路径是数据库的所在路径,而在系统中“装”derby则会认为 c:\document and settings下边那个用户目录是数据库的所在路径。

未完待续.....
posted on 2006-07-10 22:47 rd2pm 阅读(2159) 评论(3)  编辑  收藏 所属分类: other

FeedBack:
# re: Derby快速上手
2006-08-23 19:11 | 朱江波
我刚接触jsp,请教一下。
我用的wtp all in one 的eclipse,如果用derby数据库,还用上面的那些配置 吗?  回复  更多评论
  
# re: Derby快速上手
2006-08-24 08:45 | lostfire
这样连是很好用的方法,也很方便调试,wtp是否需要要看里边有没有db connector吧  回复  更多评论
  
# re: Derby快速上手
2007-02-05 00:08 | cxz
怎么装derby呀,我什么方法都诗了,为什么我点击右键就出不来那个Apache Derby菜单呀 :cry: :cry: :cry: 我的邮箱pire_cao@163.com,帮忙呀~~~~~~~~~~~  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: