derby 使用小记

 很好的小应用适合的数据库。

 

关于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>

 

你可能感兴趣的:(apache,sql,SQL Server,jdbc,Derby)