derby_derby数据库 - CSDN
  • Derby入门教程

    2008-06-22 22:36:25
    Derby是一个理想的,并且开源的,100% Java编写的,容易管理的关系数据库管理系统,它可以和一些商业产品的特性进行交付。这篇文章是关注Apache Derby项目——一个两全其美的关系数据库管理系统。Derby是一个名为...

          Derby是一个理想的,并且开源的,100% Java编写的,容易管理的关系数据库管理系统,它可以和一些商业产品的特性进行交付。这篇文章是关注Apache Derby项目——一个两全其美的关系数据库管理系统。Derby是一个名为Cloudscape的小公司构思的;当Cloudscape卖给Informix后,该产品得到了加强;当IBM加入时,在“big blue”期间,它的高端工程特性得到增强;现在已经成为一个有最自由的许可的开源项目而存在。
    两种灵活的使用模式 
          Derby可以工作在嵌入式模式下,或在完全的客户端/服务器模式下。

     

          Derby引擎可以嵌入在你的应用程序里。当工作在嵌入式模式,你的应用程序访问数据库是直接和专有的。这就意味着其他应用程序不可能在同一时间访问该数据库。嵌入式模式的主要优点是不需要进行网络和服务器设置。因为你的应用程序包含了Derby引擎,使用者并不知道你使用了一个关系数据库。

    当使用Derby的嵌入式模式时,并没有复杂的配置和特殊的API需要你去学习。实际上,你仅仅需要做:
    1. 确保Derby JARs文件在你的应用程序classpath里
    2. 使用嵌入式JDBC驱动
    3. 写数据库访问代码到JDBC 

    Derby根本没有特殊的APIs。只需要为你的应用程序编码到JDBC,然后Derby会为你工作得很好。事实上,如果你已经有了JDBC代码,而想把代码转换到Derby嵌入式模式下运行是十分容易的。

     

    如果你使用过ORACLE,DB2,SQL Server或MySQL,你应该对网络模式(客户端/服务器模式)的工作原理相当熟悉。一个独立的Java进程运行作为Derby的网络服务器,通过网络监听客户端的连接。该Derby网络服务器能唯一的访问数据库存储器,并能同时接受多个客户端连接。这就允许多个用户在同一时间通过网络方式访问该关系数据库管理系统。
    当不适合使用嵌入式模式进行操作时(例如:你必须运行和管理个别的服务器进程,或许在不同的机器上),当你需要多用户访问数据库时,Derby的客户端-服务器模式能提供一个有效的解决方案。

     

    配置Derby数据库 


          为了完全体会Derby设置和使用的好处,你需要自己亲身体验它。首先,下载和安装Derby。然后,确保你的classpath环境变量包含:
    derby_installation_directory\lib\derby.jar;和derby_installation_directory\lib\derbytools.jar;
    你也可以编辑提供给你的sp.bat文件,设置你的Derby安装目录,然后运行设置你的classpath。
    一旦你设置好了classpath,就修改工作目录。数据库将被创建在这个目录里面。从db\createdb目录复制createdb.sql文件到工作目录。然后,启动命令行界面(执行ij)进入Derby:
    字串2
    java org.apache.derby.tools.ij
    你也可以使用在batch子目录下提供的ij.bat,在使用前一定要编辑该批处理文件,添加你的Derby安装目录路径。这样才能进入正确的命令行,使用嵌入式Derby引擎。你看到的提示将与下面的类似:
    ij version 10.0
    ij>
    你可以输入“help”;来查看可以使用的命令。要创建数据库和表来使用,仅仅需要运行createdb.sql文件。使用ij命令: run ‘createdb.sql’;
    run命令将调用一个脚本文件并执行它里面的Derby命令,类似于Windows的批处理文件。下面显示的是createdb.sql文件的内容。
    connect
    'jdbc:derby:vsjdb;create=true';
    drop table orders;
    drop table custs;
    create table custs
    (id char (5) not null,
    name char(40) not null, 字串1
    primary key(id));
    create table orders
    (id char(8) not null,
    custid char(5) not null,
    total integer,
    primary key(id,custid));
    字串9
    insert into custs values (
    '1', 'John Smith');
    insert into custs values (
    '2', 'Mary Todd');

    insert into orders values(
    '0001', '1', 39999);
    insert into orders values(
    '0002', '1', 2999);
    insert into orders values(
    '0003', '1', 1904);
    insert into orders values(
    '0004', '2', 3232);
    insert into orders values(
    '0005', '2', 109900);
    在每一行都需要一个分号,这与命令行输入命令是一样的。脚本的第一行是连接命令,指明连接的嵌入式Derby驱动名字。在脚本里的连接命令为:
    connect
    ‘jdbc:derby:vsjdb;create=true’;
    字串1
    使用jdbc:derby说明Derby驱动是使用的JDBC协议,而vsjdb是一个数据库的名字,它能通过嵌入式驱动创建和访问。create=true属性说明如果该数据库不存在时,就创建该数据库。
    该createdb.sql脚本将创建一个名为vsjdb(当它不存在时)的数据库,并在该数据库中创建custs和orders表。它将在表中添加两个用户和五个定单。如果你使用过其他数据库的SQL语句,你应该相当熟悉在脚本里的SQL语句。
    你可以查看你的工作目录,现在你将看到一个vsjdb子目录。数据将保存在里面。数据库可以很简单的的进行备份,就是复制这个子目录。
    表格1和表格2是custs和orders表的信息
    Table 1: The custs table

    Field Name
    Data Type
    Note

    Id
    char(5)
    primary key

    Name
    char(40)

    Table 2: The orders table

    Field Name
    Data Type
    Note

    Id
    char(8)
    primary key (compound)

    Custid
    char(5)
    primary key (compound) 字串7

    Total
    int

    与关系数据库管理系统数据操作

    要查看顾客记录信息,在ij提示行后使用SQL SELECT语句:
    select * from custs;
    要查看定单,使用下面的命令:
    select * from orders;
    要删除顾客,尝试使用下面的命令:
    delete from custs where id=’1’;
    你可以选择custs表里的某一行,并能查看到哪个用户被删除。要删除与这个用户相关联的定单信息,使用下面的命令:
    delete from orders where custid=’1’; 字串8

    你现在可以查看orders表,并能看见所有关于一号顾客的定单都被删除了。
    在你离开ij前,删除数据库里的所有记录:
    delete from custs;
    delete from orders;
    着它将是一个空数据库,在下一部分,将写入自定义的Java代码。
    使用exit命令离开ij:
    exit;
    自从连接URL指定了嵌入式驱动,只有ij能唯一的访问这个数据库。

     

    嵌入Derby到你的Java应用程序中
    时间加速我们的Java编译和编写某些代码。这些代码将放入Derby做一个小测试,给你一个关系数据库管理系统能处理现实世界大量数据能力的信心。
    下面是名为FillTable.java的代码,将创建1000个用户,每个用户有10条定单——总共10000条定单。在嵌入子目录下你可以找到FillTable.java的源代码。
    import java.sql.*;
    public class TableFiller {
    Connection conn = null;
    PreparedStatement insertCust 字串2
    = null;
    PreparedStatement insertOrder
    = null;
    上面的申明是标准的JDBC申明。conn控制JDBC连接。insertCust和insertOrder将分别处理插入记录到custs和orders表里的SQL语句。PreparedStatement的使用使关系数据库管理系统得到优化的可能。

    其次,下面的代码,driverName包含我们装载和使用的JDBC驱动器的类名。这是一个嵌入式驱动器。连接的URL是url值。你可以看见是使用的绝对路径定位这个数据库(注意:你必须要使用正斜线来分离路径)。如果你总是在你的工作目录运行这个程序的话,你可以仅使用”jdbc:derby:vsjdb”。也可以可以设置derby.system.home属性来改变Derby数据库文件的位置(例如:java –D derby.system.home=c:\mydbdir org.apche.derby.tools.ij)。

    字串7

    String driverName =
    "org.apache.derby.jdbc.EmbeddedDriver";
    String url =
    "jdbc:derby:c:/derby1021/vsjdb";

    loadDrivers()方法装载JDBC驱动类并创建获得一个Derby的JDBC连接。并准备两个插入语句。
    public void loadDrivers()
    throws SQLException,
    ClassNotFoundException {
    Class.forName(driverName);
    conn = DriverManager.getConnection(
    url);
    insertCust = conn.prepareStatement(
    字串2

    "INSERT INTO custs VALUES(
    ?, ?)");
    insertOrder =
    conn.prepareStatement(
    "INSERT INTO orders VALUES(
    ?, ?, ?)"); 字串3
    }

    TableFiller的main()方法创建一个TableFiller的实例,并调用它的addCustomer()方法去创建1000个用户。它也调用addOrder()方法去创建10000条定单信息。为了显示进度,它打印顾客编号和’.’到系统输出中。
    public static void main(String args[])
    throws Exception {
    TableFiller tf = new TableFiller();
    tf.loadDrivers();
    int orderNum = 1;
    for (int i=1; i<1001; i++) {
    String custNum = "" + i; 字串3
    tf.addCustomer(
    custNum, "customer #" + i);
    System.out.print("\n"
    + custNum); 字串1
    for (int j=1; j<11; j++) {
    tf.addOrder( ""+ orderNum,
    custNum, j * 99);
    orderNum++;
    System.out.print(".");
    }
    }
    tf.closeAll(); 字串5
    } 字串9

    addCustomer()方法获得参数并执行insertCust的预编译语句。
    public void addCustomer(
    String id, String custname)
    throws SQLException {
    insertCust.setString(1, id);
    insertCust.setString(2, custname);
    insertCust.executeUpdate();
    }

    addOrder()方法获得参数并执行insertOrder的预编译语句。
    public void addOrder(String id,
    String custid, int total)
    throws SQLException { 字串6
    insertOrder.setString(1, id);
    insertOrder.setString(2, custid);
    insertOrder.setInt(3, total);
    insertOrder.executeUpdate();
    }
    closeAll()整理和关闭两个预编译语句和JDBC连接,通知Derby释放被控制的资源。
    public void closeAll()
    throws SQLException {
    insertCust.close();
    insertOrder.close();
    conn.close();
    字串2
    }
    }
    当顾客和定单被创建,程序将打印顾客编号到屏幕上。编号从1到1000表明每个顾客被创建。而打印的每个’.’则表明定单被创建。
    要编译这个代码,你仅仅需要确信你已经设置了classpath,并且使用标准的Java编译命令:
    java TableFiller.java 字串4

    你要确保没有ij或其他Derby会话在运行。在嵌入式模式你需要唯一的访问数据库。在编译成功后,需要复制TableFiller.class文件到你的工作目录下,然后从那里运行TableFiller:
    java TableFiller
    你应该看见打印出来的状态和写入数据库的记录。
    检验被创建的记录
    现在,去看看你创建的顾客和定单信息,确保你在工作目录并再次登录到ij。连接vsjdb数据库。
    connect ‘jdbc:derby:vsjdb’;
    然后使用下面的SELECT语句查看所有1000条顾客信息。
    select * from custs;
    同样的使用下面的SELECT语句查看所有10000条定单信息。
    select * from orders;
    当然,使用类似于FillTable.java里的标准JDBC代码,你可以整合Derby的关系数据库的访问功能到你的任何一个工程中。当你的项目需要一个嵌入式数据库时,有能力简单和快速处理产生大量的数据的Derby是你最好的选择。Derby的自由Apache许可允许你绑定它到你的程序上,即使你决定把你的产品进行商业买卖。

     

    配置Derby的网络模式
    要访问Derby的网络服务器模式,首先你需要把下面的JAR文件地址添加到你的classpath值里。
    字串6
    derby_installation_directory\lib\derbynet.jar
    你还需要为客户端访问下载一个网络JDBC驱动。如果你使用IBM DB2 JDBC普通驱动,你则需要把下面的JAR文件地址添加到你的classpath值里:
    derby_installation_directory\lib\db2_jcc.jar
    derby_installation_directory\lib\db2_jcc_license_c.jar
    batch子目录里的sp.bat文件里的classpath值已经包含了这些JARs文件地址。

    启动网络服务器,使用下面的命令:
    java org.apache.derby.drda.NetworkServerControl start
    你也可以使用batch子目录下的netsvr.bat文件。
    在默认情况下,服务器将监听TCP1527端口来接收客户端请求。你可以使用”-p <port number>”参数来改变端口。
    如果你需要关闭服务器,使用下面的命令:
    java org.apache.derby.drda.NetworkServerControl shutdown
    或者你可以使用batch子目录下的netstop.bat文件。


    现在服务器已经准备好了,为我们下面的探究铺上了台阶。
    自动层叠删除
    现在你有超过一万条的定单数据,你需要保证这些在数据库里的数据没有被破坏。固定这些数据是毫无疑问的。
    让我举例说明一个潜在的问题,这个问题的中心是围绕在删除一个顾客后。问题就有可能会出现。
    使用标准的SQL语句,只从custs表中删除顾客信息: 字串7
    delete from custs where id='838';
    这是从数据库中删除顾客编号为838的消费者。好极了!
    如果这是你所做的,数据库的数据正式被破坏了。为什么呢?这是因为在数据库里有10定单信息没有关联到消费者!
    这可能引起应用程序各种各样的错误。所有应用程序取得定单信息并尝试打印顾客信息时,都会涉及到这个异常。当你列出所有用户和他们的定单信息时,有些定单信息永远都不会显示出来。
    在关系数据库管理系统的条款中,数据库引用完整性是不允许这样的情况的。这是因为一条顾客记录被删除,而没有删除相应的定单信息。
    因此,我们需要这样做:
    delete from custs where id='838';
    delete from orders where custid='838';
    而且,我们需要确保两条删除命令在同一个事务中执行。要么两条语句都执行成功,要么都执行失败。
    这个称为删除层叠,因为删除顾客记录导致删除定单信息。
    字串5
    Derby有能力处理引用完整性。
    字串4
    Derby触发器

         保证引用完整性的方法是定义一个触发器。一个触发器是一段代码或SQL语句,当数据发生修改或存取时,它将在数据库服务器里执行。Derby支持定义触发器(使用SQL语句或Java代码),当顾客记录被删除时,可以编码实现删除关联的定单信息。然而,在Derby里有一个更简单的方法。
    它可以告诉Derby,使用标准的SQL DDL(数据定义)语句,这涉及到orders表和custs表。你也可以告诉Derby去完成自动层叠删除。
    添加参考约束
    要添加自动层叠删除,就要修改原始的createdb.sql里的语句。在db\ref子目录下找到createdbref.sql文件。你需要对orders表定义进行修改。添加下面兰色字体的内容:
    create table orders
    (id char(8) not null,
    custid char(5) not null
    references custs (id) on delete
    cascade, total integer,
    字串7
    primary key(id,custid));
    另外一个不同是连接数据库的URL值。这时,网络驱动器是指定的。一定要注意网络驱动器是需要用户名和密码的,默认的用户名和密码都是APP,所以URL值将修改为:
    connect 'jdbc:derby:net://localhost/
    vsjdb:user=APP;password=APP;';

    你现在可以强行创建带参考约束的新表。确保复制createdbref.sql到你的工作目录。再次启动ij。现在,使用下面的命令可以删除所有记录并创建新表:
    run 'createdbref.sql';
    在创建了表后,你可以再次运行TableFiller.java文件去在表中添加10000条定单数据。使用network子目录的修改版本。在原始的TableFiller.java里修改的部分如下面兰色字体显示的:内容:
    import java.sql.*;
    import java.util.Properties;
    public class TableFiller {
    Connection conn = null;
    字串8
    PreparedStatement insertCust
    = null;
    PreparedStatement insertOrder
    = null;
    String driverName=
    “com.ibm.db2.jcc.DB2Driver”;
    String url =“jdbc:derby:net://localhost/
    vsjdb:user=APP;password=APP;”;
    ...
    装载的驱动器将要改为网络驱动器(com.ibm.db2.jcc.DBDriver),URL值最好还是改成访问网络JDBC驱动器的值。否则,这个代码将与原始的TableFill.java文件一样。如果你要写你自己的JDBC代码,你可以设置一个string从外部文本文件里读取参数,这样你将不需要修改代码就能在嵌入式关系数据库管理系统和网络关系数据库管理系统之间转换。
    多用户并发访问
    现在,来关注多用户连接,在另一个控制台窗口启动ij会话,并连接到服务器使用下面的命令:
    connect 'jdbc:derby:net://localhost/
    vsjdb:user=APP;password=APP;';
    在原始的控制台窗口,编译并运行新的TableFiller.java文件。这将创建1000个顾客记录和10000条定单记录。当这些操作执行完毕后,回到新的ij窗口并使用下面的命令:
    字串5
    select * from custs;
    …and:
    select * from orders;
    当你执行这个命令的时候,你将发现所有用户和定单信息都已经被创建。网络服务器允许多用户并发访问数据。

    测试层叠删除
    一旦你创建了数据记录,试着在ij里执行下面的语句:
    select * from custs where id='700';
    接着执行下面的语句:
    select * from orders where
    custid='700';
    你将看到顾客记录和这个顾客的10条定单信息。
    现在,尝试删除顾客,使用下面的命令:
    delete from custs where id='700';
    这将删除用户记录,层叠将会删除关联的定单信息。现在尝试再次使用上面的select语句查看,你将发现那10条定单信息也被删除了。
    写一个Derby存储过程 字串4
    在实验的最后,你将用Java编程语言创建一个Derby存储过程。你也可以存储代码到存储过程进入Derby数据库内部,Derby能轻松的区分数据和代码。
    该存储过程将调用deleteAll(),从它的名字可以理解到,它将删除数据库里的所有记录。在stored子目录下可以找到实现该存储过程的Java代码,它的名字为CleanTables.java。代码内容如下:
    import java.sql.*;
    public class CleanTables {
    public static void delAll ()
    throws SQLException {
    Connection conn = 字串6
    DriverManager.getConnection(
    "jdbc:default:connection");
    Statement delCusts =
    conn.createStatement(); 字串9
    delCusts.executeUpdate(
    "delete from custs");
    delCusts.close();
    conn.close();
    return;
    }
    }
    你可以看到,该存储程序在Java类里是一个public static的方法。JDBC连接器的内容是代码里url的值:
    jdbc:default:connection
    这会告诉Derby服务器提供一个默认的连接到代码。Derby将管理这些连接。实际上的语句是执行:
    delete from custs;
    自从层叠删除生效,删除custs表的任何数据,也将删除orders表里相关联的数据。
    在Derby数据库里存储Java代码
    要在Derby数据库里存入Java代码,你首先需要编译该代码并创建成JAR文件。编译CleanTables.java代码:
    字串4
    javac CleanTables.java
    创建JAR文件:

    jar cvf vsjstproc.jar *.class
    或者你可以使用makejar.bat文件来完成上述操作,复制生成的vsjstporc.jar文件到工作目录。
    在工作目录,你需要设置该JAR文件到数据库中。在ij中使用下面的命令(确保你的连接会话是通过网络驱动器获得的):
    call sqlj.install_jar('vsjstproc.jar',
    'APP.cleanTable', 0);
    这个命令实际上是调用一个存储过程,它将设置vsjstporc.jar文件到数据库并为它设置是内部名cleanTable。APP引用应用程序计划。让JAR文件在数据库里是非常方便的。当你复制数据库时,这些代码将跟着被移动。
    如果你需要从数据库里删除该JAR文件,你可以使用:
    call sqlj.remove_jar(
    'APP.cleanTable', 0); 字串6
    在删除调用中仅仅需要内部名。
    当把JAR设置到数据库里后,当它需要读取Java代码时,你需要告诉Derby去识别该JAR文件。这些都需要通过存储过程设置一个属性:
    call syscs_util.syscs_set_database_
    property('derby.database.
    classpath', 'APP.cleanTable');
    当装载Java类时,Derby都会查看内部的APP.cleanTable JAR文件。你最后准备定义一个名为deleteAll()的存储过程。使用下面的命令:
    create procedure deleteAll() parameter
    style java language java modifies
    sql data external name
    字串4
    'CleanTables.delAll';
    Derby将从APP.cleanTable JAR文件找到CleanTable类,并锁定该类的static delAll()方法。如果你需要删除该存储过程,你可以使用下面的命令:
    drop procedure deleteAll;
    有了该存储过程,你可以删除这两个表的所有数据,只需要简单的在ij下调用存储过程deleteAll():
    call deleteAll();
    在这个存储过程执行完毕后,你将发现这两个表是空的了。
    结论
    Derby是一个具有丰富特性的关系数据库系统,并能集成到你的项目中。
    它支持嵌入式模式和客户端-服务器模式操作,它能适应部署多变的情况。它是100%用Java实现的,并与你的Java应用程序一样的享受‘随时发布’。它能快速执行和处理大量数据,同时也支持高级特性,例如引用完整性和存储项目,它以达到理想化的持久化的数据存储所必须的。最后但并不是最小,它自由的Apache许可让你自由的绑定它到你的产品中。
    字串1

    下载和安装Derby
    你可以在incubator area of the Apache site里找到Derby
    一旦你解压下载的Derby,注意你的解压目录,这是你的Derby安装目录。你需要使用这个目录去设置的你的classpath。
    下载Derby JDBC的网络驱动器
    为了在网络模式下访问Derby,你将需要一个JDBC网络驱动器。IBM捐赠了这个驱动器给Derby项目,但是直到写本文时,它都不是一个标准版本。
    暂时,你将需要下载IBM DB2 JDBC Universal driver for Apache Derby Network Server。根据地址里的说明去设置你的classpath。

     

    展开全文
  • derby.jar包下载

    2020-07-28 23:30:17
    derby-jdbc-driver.jar包下载,这个东西我在网上找了很久,可能各个版本都有不适用的地方,上传这里希望能帮助到大家
  • Derby 使用的2种方式:内嵌和独立

    万次阅读 2009-11-19 15:18:00
    Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。Derby数据库有两种运行...

    Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。
    Derby数据库有两种运行模式:
    1) 内嵌模式。Derby数据库与应用程序共享同一个JVM,通常由应用程序负责启动和停止,对除启动它的应用程序外的其它应用程序不可见,即其它应用程序不可访问它;
    2) 网络模式。Derby数据库独占一个JVM,做为服务器上的一个独立进程运行。在这种模式下,允许有多个应用程序来访问同一个Derby数据库。
    在Apache上,Derby有4种发布包,这里以bin发布包为例。bin发布包中含有包含了执行derby数据库工具、设置derby数据库环境的脚本文件、Demo、jar文件等。

    1、 安装Derby数据库
    只需要从Derby官方网站下载Derby的zip或者tar包,解压就可以了。这里以db-derby-10.4.1.3-bin版本为例,解压后得到以下目录:
    1) bin目录,包含了一些工具脚本和设备环境的脚本;
    2) demo目录,包含了一些实例程序;
    3) docs目录,包含了Derby的文档;
    4) javadoc目录,包含了Derby的API文档;
    5) lib目录,包含了Derby数据库的jar文件;
    6) test目录,Derby的一些测试jar包;
    2、 使用Derby脚本
    Derby提供了几个脚本来操作Derby数据库,在使用这些脚本前,你必须先设置好Derby的运行环境。
    下面的例子都是在命令行下设置环境变量,这些设置都是临时的,如果你新开一个命令行窗口,则需要重新设置一遍,如果想要使环境变量永久生效,可以在我的电脑中进行设置。
    首先设置好DERBY_HOME这个环境变量,为DERBY_HOME指定你的derby目录,假如你的derby解压到了E:/ db-derby-10.4.1.3-bin目录下,则可以在命令行中如下设置:
    set DERBY_HOME=E:/ db-derby-10.4.1.3-bin
    将DERBY_HOME/bin目录添加到PATH环境变量中:
    set path=%DERBY_HOME%/bin;%PATH%
    这样可以简化你稍后在命令行中的输入,否则你每次都必须使用脚本的全路径或者你必须到DERBY_HOME/bin目录中才能执行脚本。
    最后需要Derby的jar包添加到classpath环境变量中,在DERBY_HOME%/bin目录中提供了几个脚本用于设置classpath,以简化你手工在classpath中添加jar包的麻烦:
    1) setEmbeddedCP。当使用内嵌模式来运行Derby时,可以使用该脚本来设置。该脚本将derby.jar和derbytools.jar添加到环境变量中;
    2) setNetworkServerCP。当使用网络模式来运行Derby时,用该脚本来设置Derby服务端的classpath变量。该脚本将derbynet.jar添加到环境变量中;
    3) setNetworkClientCP。当使用网络模式来运行Derby时,用该脚本来设置Derby客户端的classpath变量。该脚本将derbyclient.jar和derbytools.jar添加到环境变量中。
    一般只有当你通过derbyrun.jar来运行Derby工具时才会使用这些脚本。
    Derby提供了三个工具脚本:1)sysinfo;2)ij;3)dblook。运行这三个脚本时,如果你没有设置classpath环境变量,这些脚本会自动进行设置。
    1) sysinfo
    使用sysinfo可以显示你的Java环境信息和Derby的版本信息。使用方法就是在命令行下直接输入:
    sysinfo.bat
    2) dblook
    使用dblook可以将全部或者部分数据库的DDL定义导出到控制台或者文件中。使用方法:
    dblook.bat -d <sourceDBUrl> [Options]
    3) ij
    使用ij工具来进行数据库交互,执行SQL脚本,如查询、增删改、创建表等等。在命令行下输入:
    ij.bat
    即可启动ij工具,然后就可以开始执行SQL脚本了。当要退出ij工具时,在命令行下输入
    exit;
    即可。
    3、 使用ij脚本
    1) 运行内嵌模式的Derby数据库
    在命令行中输入ij.bat后启动ij工具。然后通过如下命令创建数据库,并与数据库创建连接:
    connect ‘jdbc:derby:firstdb;create=true';
    通过connect命令可以与指定数据库创建连接,通过一个JDBC URL来指定与哪个数据库创建连接。ij命令是不区分大小写的。
    参数中jdbc:derby是Derby数据库的驱动协议;firstdb是数据库命,由于没有指定路径,数据库将会被创建在当前你命令行下所在的目录下;create=true表示如果数据库不存在,则创建该数据库;";"是ij命令的终止符。
    当数据库创建成功时,Derby会在当前你命令行下所在的目录下创建一个与数据库命一致(这里是firstdb)的目录,其中存放了数据库的文件。
    与数据库连接上后,就可以开始执行SQL脚本了,如创建一个表格:
    create table firsttable(id int primary key, name varchar(20));
    然后插入记录:
    insert into firsttable values(1, ‘Hotpepper');
    也可以执行查询:
    select * from firsttable;
    也可以通过run命令来执行sql文件:
    run 'E:/derby/demo/programs/toursdb/ToursDB_schema.sql';
    最后通过exit;来退出ij工具。
    你可以在当前你命令行下所在的目录中找到一个derby.log的日志文件,derby在其中记录的数据库启动、关闭的信息。
    2) 运行网络模式的Derby数据库
    这种模式下,需要使用两个控制台窗口,一个用于启动Derby数据库服务端,另一个做为访问Derby数据库的客户端。
    可以通过DERBY_HOME/bin目录下的startNetworkServer.bat来启动Derby数据库服务端,只需要在命令行中输入:
    startNetworkServer.bat
    数据库就启动了,启动成功会在控制台输出如下信息:
    已使用基本服务器安全策略安装了安全管理程序。
    Apache Derby Network Server - 10.4.1.3 - (648739) 已启动并且已准备好 2008-09-06
    00:38:12.540 GMT 时在端口 1527 上接受连接
    在另一个控制台使用ij命令访问Derby数据库服务端,在输入ij.bat启动ij工具后,通过如下命令建立与服务端的连接,并创建一个数据库:
    connect 'jdbc:derby://localhost:1527/seconddb;create=true';
    参数中的数据库命部分和内嵌模式不同,这里使用了"//localhost:1527/",访问网络模式的URL需要指定服务器的IP地址和端口,其它的就和内嵌模式一样了。
    与服务端连接上后,就可以开始执行SQL脚本了,如创建一个表格:
    create table firsttable(id int primary key, name varchar(20));
    然后插入记录:
    insert into firsttable values(1, ‘Hotpepper');
    也可以执行查询:
    select * from firsttable;
    也可以通过run命令来执行sql文件:
    run 'E:/derby/demo/programs/toursdb/ToursDB_schema.sql';
    最后通过exit;来退出ij工具
    4、 在Java应用程序中访问Derby数据库
    使用Java代码访问Derby数据库与访问其它数据库的区别如下:
    1) JDBC驱动的不同;
    2) 数据库连接URL的不同;
    3) 在访问内嵌模式数据库时,需要显示关闭数据库。
    下面分别实例访问内嵌模式和网络模式Derby数据库的代码
    1) 访问内嵌模式Derby数据库
    String driver = "org.apache.derby.jdbc.EmbeddedDriver";
    String url = "jdbc:derby:firstdb;create=true";
    Connection conn;
    try {
    Class.forName(driver);
    conn = DriverManager.getConnection(url);
    }catch(Exception e) {
    ......
    }finally {
    ......
    DriverManager.getConnection("jdbc:derby:;shutdown=true");
    }
    建立好连接后,其它的数据操作,如查询、更新数据都和其它数据库一样,这里不详述。有一点需要注意,通过Java应用程序访问内嵌模式Derby数据库时,应用程序有责任需要在程序结束时关闭Derby数据库,如上面代码finally中的
    DriverManager.getConnection("jdbc:derby:;shutdown=true");
    shutdown参数用于关闭Derby数据库,如果url中指定了数据库命,则只会关闭指定的数据库,而不会关闭整个Derby数据库。数据库关闭成功时,Derby会抛出一个错误码为XJ015和一个08006的异常表示关闭成功,应用程序可以不处理这两个异常。
    2) 访问网络模式Derby数据库
    网络模式和内嵌模式的不同出在于:
    A. 数据库连接URL的不同;
    B. 应用程序退出时无效关闭Derby数据库;
    C. 数据库驱动的不同;
    String driver = "org.apache.derby.jdbc.ClientDriver";
    String url = "jdbc:derby: //localhost:1527/firstdb;create=true";
    Connection conn;
    try {
    Class.forName(driver);
    conn = DriverManager.getConnection(url);
    }catch(Exception e) {
    ......
    }
    由于网络模式下,Derby数据库做为一个独立运行的数据库,可以被多个应用程序所访问,所以应用程序在运行结束时不应该关闭Derby数据库。

    5、 使用derbyrun.jar
    通过derbyrun.jar也可以使用上面提到的sysinfo、ij、dblook三个脚本的功能,在使用derbyrun.jar前,除了DERBY_HOME环境变量外,你必须显示设置好classpath环境变量,可以通过上面提到的setEmbeddedCP、setNetworkServerCP、setNetworkClientCP几个脚本来设置,具体使用哪个脚本取决于你如何使用Derby数据库。
    可以通过java -jar %DERBY_HOME%/lib/ derbyrun.jar来运行derbyrun中的工具:
    1) 使用sysinfo。java -jar %DERBY_HOME%/lib/ derbyrun.jar sysinfo
    2) 使用ij。java -jar %DERBY_HOME%/lib/ derbyrun.jar ij
    3) 使用dblook。java -jar %DERBY_HOME%/lib/ derbyrun.jar dblook

     

    6、 在Embedded模式下指定生成的数据库文件存放目录,可以通过url来指定

    例如: jdbc:derby:d:/temp/test;create=true 这样一个url 来连接embedded derby数据库。就会在d:/temp/目录下生成一个test目录。在test目录下存放整改数据库test的文件。

    展开全文
  • 首先是Java环境变量要配置: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0 变量名:CLASSPATH ...

    首先是Java环境变量要配置:

    1.打开我的电脑--属性--高级--环境变量 
    
    2.新建系统变量JAVA_HOME 和CLASSPATH 
    变量名:JAVA_HOME 
    变量值:C:\Program Files\Java\jdk1.7.0
    变量名:CLASSPATH 
    变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
    
    3. 选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。 
    变量名:Path 
    变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
    这是java的环境配置,配置完成后直接启动eclipse,它会自动完成java环境的配置


    1:官方下载地址http://db.apache.org/derby/derby_downloads.html


    2:配置环境变量

    1.打开我的电脑--属性--高级--环境变量   

    Name:DERBY_HOME   

    Value:E:\Java\derby\db-derby-10.10.1.1-bin   

    在Path加入:%DERBY_HOME%\bin   

    在CLASSPATH加入:%DERBY_HOME%\lib \derby.jar;%DERBY_HOME%\lib\derbyclient.jar;%DERBY_HOME%\lib\derbytools.jar;%DERBY_HOME%\lib\derbynet.jar

    2:测试看看Derby是否安装成功  

    开始—Run—CMD  

    运行 sysinfo  

    如果安装成功,将会看到相关信息,下面是截取的部分信息     

    ------------------ Java 信息 ------------------
    Java 版本:        1.6.0_10-rc2
    Java 供应商:      Sun Microsystems Inc.
    Java 主目录:      C:\Program Files\Java\jdk1.6.0_10\jre
    Java 类路径:      E:\Java\derby\db-derby-10.10.1.1-bin\lib \derby.jar;E:\Java\d
    erby\db-derby-10.10.1.1-bin\lib\derbyclient.jar;E:\Java\derby\db-derby-10.10.1.1
    -bin\lib\derbytools.jar;E:\Java\derby\db-derby-10.10.1.1-bin\lib\derbynet.jar;C:
    \Program Files\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_10\lib
    \tools.jar;E:\Java\derby\db-derby-10.10.1.1-bin/lib/derby.jar;E:\Java\derby\db-d
    erby-10.10.1.1-bin/lib/derbynet.jar;E:\Java\derby\db-derby-10.10.1.1-bin/lib/der
    byclient.jar;E:\Java\derby\db-derby-10.10.1.1-bin/lib/derbytools.jar
    OS 名:            Windows XP
    OS 体系结构:      x86
    OS 版本:          5.1
    Java 用户名:      Administrator
    Java 用户主目录:C:\Documents and Settings\Administrator
    Java 用户目录:    E:\Java\derby\db-derby-10.10.1.1-bin\bin
    java.specification.name: Java Platform API Specification
    java.specification.version: 1.6
    java.runtime.version: 1.6.0_10-rc2-b32
    --------- Derby 信息 --------
    [E:\Java\derby\db-derby-10.10.1.1-bin\lib\derby.jar] 10.10.1.1 - (1458268)
    [E:\Java\derby\db-derby-10.10.1.1-bin\lib\derbytools.jar] 10.10.1.1 - (1458268)
    [E:\Java\derby\db-derby-10.10.1.1-bin\lib\derbynet.jar] 10.10.1.1 - (1458268)

    [E:\Java\derby\db-derby-10.10.1.1-bin\lib\derbyclient.jar] 10.10.1.1 - (1458268)   

    ......

    3:创建和使用数据库 

    数据库的目录默认情况下在,E:\Java\derby\db-derby-10.10.1.1-bin\bin 目录下,(命令输出的位置) 

    然后输入ij

    E:\Java\derby\db-derby-10.10.1.1-bin\bin>ij;
    ij 版本 10.1


    下面是创建数据库。

    例:创建mydb数据库:

    ij> connect ‘jdbc:derby:mydb;create=true’;

    连接mydb数据库:

    ij> connect'jdbc:derby:mytestdb';

    查询数据库等操作,只需要输入相应的Sql语句即可。 

    创建一个table:

    ij(CONNECTION1)> create table mytable(id int primary key,name varchar(20));

    插入数据:
    ij(CONNECTION1)> insert into mytable values(1,'Test');

    在命令行测试一下:

    ij(CONNECTION1)> select * from mytable;
    ID         |NAME
    --------------------------------
    1          |Test

    其它命令

    断开连接:

    ij> disconnect;

    退出ij:

    ij> exit;   


    二:在JAVA中使用Derby

    NOTE:记得将derby.jar包加进去



    package com.db.test;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class Test {
        private static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
        private static String protocol = "jdbc:derby:";
        String dbName = "E:\\Java\\derby\\db-derby-10.10.1.1-bin\\bin\\mydb";

        static void loadDriver() {
            try {
                Class.forName(driver).newInstance();
                System.out.println("Loaded the appropriate driver");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public void doIt() {
            Connection conn = null;
            Statement s = null;
            ResultSet rs = null;

            System.out.println("starting");
            try {
                conn = DriverManager.getConnection(protocol + dbName
                        + ";create=true");
            } catch (SQLException e) {
                e.printStackTrace();
            }

            System.out.println("Connected to and created database " + dbName);

            try {

                s = conn.createStatement();
                rs = s.executeQuery("select * from mytable");

                while (rs.next()) {
                    System.out.println(rs.getInt(1));
                    System.out.println(rs.getString(2));
                }
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            try {
                conn.close();
                conn = null;
                s.close();
                s = null;
                rs.close();
                rs = null;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static void main(String[] args) {
            Test t = new Test();
            t.loadDriver();
            t.doIt();
        }
    }


    sourece: http://www.joyzhong.com/archives/558


    展开全文
  • derby性能测试

    千次阅读 2014-11-24 14:33:47
    derby测试条件 次数 运行ms   derby测试条件 次数 运行ms 网络,磁盘模式 1 1360   嵌入式,磁盘模式 1 906 全部删除数据 2 1000   全部删除数据 2 875 1000数据写入 3 984 ...
  • Derby--jdk自带数据库的使用

    万次阅读 2018-02-13 22:14:49
    本文章主要是针对derby内嵌java的开发,主要步骤有:1.ij工具使用的的环境配置。2.使用ij对数据库进行操作。3.如何通过java连接上数据库。一.第一步:先找到自己安装jdk的地址,并在地址里面找到如下目录,下图是我...
  • derby启动

    2019-05-09 14:10:46
    derby启用网络模式时使用命令 ./NetworkServerControl start -h 0.0.0.0 -p 1527 例如: nohup ./NetworkServerControl start -h 0.0.0.0 -p 1527 >derby_start.log 2>&1&
  • derby的优点和缺点

    千次阅读 2017-02-09 14:15:02
    Derby优点和缺点 概述:  Derby是一个完全用java编写的数据库,非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。 具体如下:  1、Derby定位是...
  • derby数据库基本语法

    千次阅读 2017-01-12 11:10:50
    1表操作语法1.1创建/连接数据库网络服务器模式connect 'jdbc:derby://localhost:1527/MYDB;create=true;user=root;password=123';(1)“jdbc:derby:”derby数据库URL的头部,必须有; (2)“//localhost:1527/...
  • apache derby 抽象 Apache Derby很棒! 尤其是在微服务环境中,服务的数据(可能)会缩减,并且不需要强大的RDBMS。 Derby很棒,因为它非常易于使用,特别是在涉及用户和权限时,您不需要任何东西! 但是,您可能...
  • 前言 进入Derby 的应用开发之前,浏览一下derby的功能集,这样在真正选择的时候,可以决定Derby是不是适合你的应用。 本篇的是【Derby 系列】初级的第3篇。 1. Derby 是关系型数据库管理系统,所有源代码用java ...
  • 一、Derby介绍:Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。Derby...
  • 远程连接derby被拒绝的解决办法

    千次阅读 2018-10-21 12:35:38
    ...  你用startnetworkserver 命令的时候,开启的网络服务,虽然允许多客户端多进程,但仅限本机使用  如希望使用 ip地址 远程连接,必须强制指定...1. 进入derby数据库安装包下: derby/目录下的derby.drda...
  • macOS 环境下配置 Derby 数据库

    千次阅读 2020-05-26 18:37:58
    Mac os环境下配置环境变量(以配置Derby数据库为例) Mac OS环境下配置环境变量(以配置Derby数据库为例) Mac OS配置环境方法: 1、打开终端(即terminal)。 2、输入touch ~/.bash_profile创建新的.bash_profile文件...
  • 最近使用了Derby 觉得特轻量级,特舒服啊,以前都用的Oracle(安装使用啥的你懂的),MySQL也用过,好些但还是觉得安装啥的麻烦。1,首先下载Derby http://db.apache.org/derby/derby_downloads.html  下载最新...
  • Apache Derby很棒! 尤其是在微服务环境中,服务的数据(可能)会缩减,并且不需要更强大的RDBMS。 Derby很棒,因为它非常易于使用,尤其是在涉及用户和权限时,您不需要任何东西! 但是,您可能想要创建一个具有...
  • Java操作Derby数据库

    2020-08-10 01:21:38
    3.1 新建系统变量 DERBY_HOME = derby的解压目录 3.2 在PATH环境变量中添加%DERBY_HOME%\bin 4、打开命令行窗口键入以下值进入 ij java -jar %DERBY_HOME%\lib\derbyrun.jar ij 此时可以看到窗口输出连接工具...
  • DERBY数据库环境搭建以及简单使用

    千次阅读 2014-09-09 18:54:40
    derby数据库 Apache Derby 项目的目标是构建一个完全用 Java 编程语言编写的、易于使用却适合大多数应用程序的开放源码数据库。   特点: l 程序小巧,基础引擎和内嵌的JDBC驱动总共大约2MB ; l ...
  • 学习JDK内置纯JAVA数据库Derby

    千次阅读 2016-07-03 12:12:34
    JDK内置纯JAVA数据库Derby从学习JAVA到现在好多年了,不过中间有很长一段时间没怎么用JAVA和相关技术了,都不清楚原来JDK本身内置了Derby数据库。Derby数据库特点1.纯JAVA编写2.极其小巧,核心只有2M左右3.JDK内置...
1 2 3 4 5 ... 20
收藏数 21,627
精华内容 8,650
关键字:

derby