连接到基于文件的derby数据库

时间:2012-05-19 15:04:16

标签: java netbeans database-connection derby

我想使用apache derby处理基于文件的数据库。 我想知道是否有人可以知道如何连接&使用netbeans作为IDE创建此数据库。 我通过德比手册尝试解决这个问题,但我得到的只是“嵌入式Derby JDBC数据库连接”,我被告知这不是基于文件的方法,无论哪种方式,连接似乎都不起作用。 任何帮助将不胜感激

4 个答案:

答案 0 :(得分:5)

要创建一个,您的jdbc网址将为:jdbc:derby:foo;create=true,它将在derby系统目录中创建一个名为foo的数据库。如果要在硬盘驱动器上的绝对位置创建一个,请指定绝对路径。 jdbc:derby:/home/me/foo;create=true

创建数据库后,您可以使用相同的网址连接到该数据库,也可以关闭;create=true部分。

您可以通过系统属性设置derby系统目录,例如System.setProperty("derby.system.homeSystem.setProp", "/home/bar/whatever");。我认为在启动derby数据库之前你需要这样做,但我之后从未尝试过这样做。我发现将derby系统设置为应用程序的主页并指定相对数据库URL以更好地工作,但这是个人偏好。

答案 1 :(得分:2)

您最想要使用的驱动程序是derby.jar中的嵌入式驱动程序。有足够的例子运行,而不是进入“事物的编码方面”,我有点喜欢使用netbeans本身在开始编码之前完成所有工作。

由于我使用嵌入式方法将wireshark / tcpdump / nmap文件转换为数据库条目,因此我采用了稍微不同的方法。

由于我更喜欢​​使用Derby的最新稳定版本而不是安装版本,我有一个稍微不同的方法,它允许我使用我想要的任何版本,以及将数据库放在ar / w数据目录中我想要的地方在文件系统中。

  1. 创建:mkdir -p $ HOME / opt / derby和cd~ / opt / derby。
  2. 从db.apache.org下载最新版本,unbundle在$ HOME / opt / derby /
  3. 创建符号链接:ln -s pwd / 版本 pwd / latest。
  4. 创建符号链接:ln -s pwd / latest pwd
  5. 启动netbeans。
  6. 从这里开始,你可以用netbeans做任何事情:

    1. 创建一个Ant库并将其命名为“ASF-Derby-Emb。”:Tools-> Ant Libraries-> New Library。
    2. 在设置面板中,将类路径设置为/home/[loginid]/opt/derby/default/lib/derby.jar,并可选择添加derbytools.jar。
    3. 单击源选项卡,如果已下载,则添加到源代码的路径中。
    4. 点击javadoc标签,然后在/ home / [loginid] / opt / derby / default / javadocs
    5. 当您进入编码时,只需添加ASF-Derby-Emb库,它就会自动复制到您的“dist”中。

      现在设置JavaDB。

      1. 设置“服务”选项卡:“窗口” - >“服务”并选择该选项卡。
      2. 选择JavaDB并右键单击并停止可能正在运行的JavaDB。
      3. 选择JavaDB并右键单击并单击Properties菜单项,这将显示一个属性对话框。
      4. 浏览到JavaDB安装目录:$ HOME / opt / derby / default。
      5. 保持数据库安装目录位置不变或浏览到要放置它的目录,但请确保您具有读/写访问权限。
      6. 单击“确定”,现在您拥有不同的JavaDB安装和数据库位置。
      7. 只需更改数据库位置,您就可以将数据库放在任何您想要的位置。或者您可以在代码中完成相同的操作,因为url是:jdbc:derby:// 数据库位置目录。

        无论如何,现在我可以设置我的数据库了。

        1. 选择JavaDB并右键单击并选择“创建数据库”,然后填写对话框,数据库将在属性文件中设置的目录中初始化。
        2. 创建连接:选择JavaDB,然后选择已创建的数据库的名称。
        3. 从这一点来看,有三种选择:

          1. 不执行任何操作并创建创建表所需的代码等。
          2. 创建一个项目并创建一个名为sql的顶级项目目录,并将所有sql脚本定义在该目录中。
          3. 使用'内置设施:服务 - > jdbc:derby:// ???并使用出现的工具创建表,并允许您输入必要的sql。
          4. 就个人而言,(2)我发现最初是最好的方法。如果您预先存在带有.sql扩展名的sql脚本,只需在项目下打开它们,它们就会被加载到sql编辑器中并在那里执行。

            可以使用(3)并保存生成的脚本。

            任何方式,在编码开始之前可以创建很多。有很多方法可以做到这一点。我更愿意在编码之前创建所有内容 - 它使开发测试用例变得更加容易,并且使用前面的内容我不必跳入和退出netbeans来修改内容。

答案 2 :(得分:1)

当您下载NetBeans 7.1.2时,您将获得带有它的Glassfish应用服务器的“All”软件包。安装w / glassfish后,在IDE中,您应该可以选择“服务”选项卡>展开数据库,您应该看到Java DB。 R.单击Java DB并选择Start Server。然后R.再次单击并选择“创建数据库”。输入数据库名称,用户和密码。 BTW我通常使用APP作为用户和密码,因为这样它也成为默认架构,我不必为生产环境改变任何东西。

现在,在Java DB组中,您应该看到您创建的新数据库。 R.单击它并选择连接。您应该会在“数据库”组下看到一个连接项。展开此项,您应该看到以粗体显示的APP架构,表明它是默认架构。展开它和R.点击Tables选择Create Table,你会得到一个帮助你填充表格的ui。重复,直到创建所有表。使用ide创建表的其他方法是右键单击Tables并选择Execute Command,您可以在其中运行DDL来定义表模式。这是我创建数据库的方式,通过将我的脚本保存为.sql文件,这样我就可以删除数据库并根据需要重新运行它。

以下是我用于在德比中创建表格的dbinit.sql脚本示例。

create table usertable (
    username varchar(128) NOT NULL CONSTRAINT USER_PK PRIMARY KEY ,
    password varchar(128) NOT NULL,
    email varchar(128) NOT NULL,
    firstname varchar(128) NOT NULL,
    lastname varchar(128) NOT NULL
);

create table grouptable(
    username varchar(128) NOT NULL,
    groupid  varchar(128) NOT NULL,
    CONSTRAINT GROUP_PK PRIMARY KEY(username, groupid),
    CONSTRAINT USER_FK FOREIGN KEY(username) REFERENCES usertable(username)
        ON DELETE CASCADE ON UPDATE RESTRICT
);

insert into usertable(username,password,firstname,lastname) 
    values ('admin', '21232f297a57a5a743894a0e4a801fc3','','');
insert into grouptable(username,groupid) values ('admin', 'USER');
insert into grouptable(username,groupid) values ('admin', 'ADMIN');

您可以通过右键单击数据库R来轻松删除您创建的数据库。单击要删除的数据库,然后选择删除。并重用你的脚本来重新生成它。

enter image description here

希望这有帮助! :)

答案 3 :(得分:0)

如果您想在Derby中拥有基于文件的数据库,则应下载Derby

解压缩文件。 在bin目录中运行startNetworkServer.bat。 它将启动derby服务器,它将侦听1527端口。

现在在你的java代码中:

  

DriverName = org.apache.derby.jdbc.ClientDriver

     

ConnectionString = jdbc:derby:// localhost:1527 / schema_name; create = true

Morover,你也可以像在oracle中一样查询derby DB。

运行位于bin目录中的ij.bat。 然后在提示符上:

  

connect'在此处指定连接网址'

你可以像oracle提示一样触发sql查询。

如果要在不同端口上运行derby服务器,请在cmd:

执行以下命令
  

startnetworkserver.bat -p 1234