6

我想使用 apache derby 处理基于文件的数据库。我想知道是否有人可以carify如何使用netbeans作为IDE来连接和创建这个数据库。我通过 derby 手册试图弄清楚这一点,但我得到的只是“嵌入式 Derby JDBC 数据库连接”,我被告知这不是基于文件的方法,无论哪种方式,连接似乎都不起作用。任何帮助将非常感激

4

4 回答 4

5

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

创建数据库后,您可以使用相同的 url 连接到它,或者您可以删除该;create=true部分。

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

于 2012-05-19T15:30:10.210 回答
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/ version pwd /latest。
  4. 创建符号链接:ln -s pwd/latestpwd
  5. 启动netbeans。

从这里开始,您可以在 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

当您开始编码时,只需添加 ASF-Derby-Emb 库,它就会自动复制到您的“dist”中。

现在设置 JavaDB。

  1. 设置服务选项卡:Window->Services 并选择该选项卡。
  2. 选择 JavaDB 并右键单击并停止可能正在运行的 JavaDB。
  3. 选择 JavaDB 并右键单击并单击 Properties 菜单项,这将弹出一个属性对话框。
  4. 浏览到 JavaDB 安装目录:$HOME/opt/derby/default。
  5. 要么保留数据库安装目录位置,要么浏览到要放置它的目录,但请确保您具有读/写访问权限。
  6. 单击“确定”,现在您有了不同的 JavaDB 安装和数据库位置。

只需更改数据库位置,您就可以将数据库放在您想要的任何位置。或者您可以在代码中完成与 url 相同的操作:jdbc:derby://数据库位置目录。

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

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

从这一点来看,有三种选择:

  1. 什么都不做并创建创建表等所需的代码。
  2. 创建一个项目并创建一个名为 sql 的顶级项目目录,并将定义表等的所有 sql 脚本放在该目录中。
  3. 使用'内置设施:Service->jdbc:derby://??? 并使用出现的工具创建表并允许您输入必要的 sql。

就个人而言,(2)我发现最初是最好的方法。如果您有预先存在的带有 .sql 扩展名的 sql 脚本,只需在项目下打开它们,它们将被加载到 sql 编辑器中并可以在那里执行。

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

无论如何,在编码开始之前可以创建很多东西。有很多方法可以做到这一点。我宁愿在编码之前创建所有内容——它使开发测试用例变得更加容易,并且使用前面的内容我不必跳进跳出 netbeans 来修改东西。

于 2012-10-04T12:28:27.343 回答
1

当您下载 NetBeans 7.1.2 时,您将获得 glassfish 应用服务器的“全部”包。安装 w/glassfish 后,在 IDE 中,您应该能够选择 Services 选项卡 > Expand Databases,您应该会看到 Java DB。R. 单击 Java DB 并选择启动服务器。然后 R。再次单击并选择创建数据库。输入数据库名称、用户和密码。顺便说一句,我通常将 APP 用于用户和密码,因为这样它也成为默认模式,我不必为生产环境进行任何更改。

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

这是我用来在 derby 中创建表的 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 轻松删除您创建的数据库。单击要删除的数据库并选择删除。并重用您的脚本来重新生成它。

在此处输入图像描述

希望这可以帮助!:)

于 2012-06-29T06:08:42.540 回答
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 '在此处指定连接 url'

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

如果您想在不同的端口上运行 derby 服务器,请在 cmd 处执行以下命令:

启动网络服务器.bat -p 1234

于 2012-05-25T08:26:05.217 回答