六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 332|回复: 0

derby 使用小记

[复制链接]

升级  12%

172

主题

172

主题

172

主题

进士

Rank: 4

积分
560
 楼主| 发表于 2013-1-30 02:18:34 | 显示全部楼层 |阅读模式
 很好的小应用适合的数据库。
 
关于derby是什么以及什么优点:
Apache Derby 资源中心

使用过程:
 
1.下载 
2.解压缩至: x:/db-derby-10.5.1.1-bin/
3.两种使用方式
 
     3.1 client-server(cs) 使用 :
 
            3.1.1 运行 bin/startNetworkServer.bat  开始服务器监控 , 运行 bin/ij.bat 开始客户端操作。
        3.1.2 准备数据库   install.sql
 
connect 'jdbc:derby://localhost:1527/content_admin;create=true;';CREATE TABLE infos (        id int not null generated always as identity,type VARCHAR(32) not null, -- 类型info Clob  not null, --具体类型region VARCHAR(32) , -- 地区PRIMARY KEY(id));CREATE TABLE images (        id int not null generated always as identity,position VARCHAR(32) not null, -- 图片位置title VARCHAR(4000)  , --图片描述href VARCHAR(4000)  , -- 链接网址content Clob , -- 自设置内容region VARCHAR(32) , -- 地区,imageSrc VARCHAR(4000)  , --图片地址PRIMARY KEY(id)); 
注意 derby 的 connection url 格式 :jdbc:derby://localhost:1527/content_admin;create=true,create=true 表示如果本机不存在 content_admin 数据库就自动建立一个。
                3.1.3  在 ij 的命令行下  运行  run  "yourpath/install.sql"   ,yourpath 为 install.sql 所在目录。
                3.1.4  至此一个数据库以及它的两张表就建立起来了,可以看到 bin 下面 有一个 content_admin 目录,在derby 中一个数据库的内容放在以数据库命名的目录中,对于cs模式 ,默认则在server端建立 数据库对应目录。
 
                 3.1.5    修改 默认server端建立数据库目录路径
 
                          3.1.5.1  首先设置环境变量 DERBY_HOME 为 x:/db-derby-10.5.1.1-bin/
                   3.1.5.2  开启命令行 执行 bin/setNetworkServerCP.bat   ,接着执行
java -Dderby.system.home=XX:/org.apache.derby.drda.NetworkServerControl start
来启动数据库服务器端。其中 XX:/ 为 客户端建立数据库的话,数据库目录存放的位置,如 ij命令 执行:
 
connect 'jdbc:derby://localhost:1527/content_admin2;create=true;' 
则会建立对应数据库目录  XX:/content_admin2 存放 content_admin2 数据库的数据。
 
ps:也可在对应路径执行bat来指定数据库存储位置
 
假设derby目录为: x:/db-derby-10.5.1.1-bin/bin/startNetworkServer.bat
则在命令行到x盘执行: db-derby-10.5.1.1-bin/bin/startNetworkServer.bat 而不是直接点击 startNetworkServer.bat
则执行ij
 
connect 'jdbc:derby://localhost:1527/content_admin2;create=true;' 
在x:/content_admin2生成数据库。
根本原理为 startNetworkServer.bat 中根据DERBY_HOME将derby的lib下相应jar添加到classpath中,然后执行
 
java  org.apache.derby.drda.NetworkServerControl start
 
则默认在哪个目录下执行这条命令,server就将数据库生成在哪个目录下面。

 
       3.2  嵌入式 使用 
               一般用于程序控制,见下所述。
4:程序操纵数据库。
         4.1  cs 模式 
              这里采用 proxool 配置示意 , proxool 配置文件:
 
<proxool>    <alias>xml-test</alias>    <driver-url>jdbc:derby://localhost:1527/content_admin;create=true;</driver-url>    <!--<driver-url>jdbc:derby:content_admin;create=true;</driver-url>--><driver-class>org.apache.derby.jdbc.ClientDriver</driver-class><!--<driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>--><driver-properties>      <property name="useUnicode" value="true"/> <property name="characterEncoding" value="GBK"/></driver-properties><maximum-connection-count>10</maximum-connection-count><maximum-active-time>999999999</maximum-active-time><house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql></proxool>         数据库控制连接建立管理:
 
package content.db;import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.io.InputStreamReader;public class DBManager {    static {        initial();    }    public static void initial() {        try {            JAXPConfigurator.configure(Path.getFullPathRelateClass("../../datasource.xml", Path.class), false);        } catch (Exception e) {            e.printStackTrace();            System.exit(1);        }        // The false means non-validating    }    public static Connection getConnection() {        Connection t = null;        try {            t = DriverManager.getConnection("proxool.xml-test");        } catch (SQLException e) {            e.printStackTrace();        }        return t;    }}  则  DBManager.getConnection() 后 即可对 数据库进行操作了。


      4.2 嵌入模式


   可以按照前面的 ij命令 进行操作,注意: sql第一行改做 :
 
connect 'jdbc:derby:x:/content_admin;create=true;'; 
x:/content_admin  为你所希望数据库数据所存在的硬盘目录。一般可在 cs模式 建立数据库后 ,将 bin/content_admin (生成的数据库目录)  拷贝 某一目录,在程序中对其操作。
 
  仿照 4.1 只需要更改 proxool 的数据库配置文件即可。
 
<?xml version="1.0" encoding="ISO-8859-1"?><proxool>    <alias>xml-test</alias><!--  x:/content_admin 为数据库目录所在的位置。--> <driver-url>jdbc:derby:x:/content_admin;create=true;</driver-url>    <driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>    <driver-properties>            <property name="useUnicode" value="true"/>      <property name="characterEncoding" value="GBK"/>    </driver-properties>    <maximum-connection-count>10</maximum-connection-count><maximum-active-time>999999999</maximum-active-time>    <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>  </proxool> 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表