我想使用apache derby处理基于文件的数据库。 我想知道是否有人可以知道如何连接&使用netbeans作为IDE创建此数据库。 我通过德比手册尝试解决这个问题,但我得到的只是“嵌入式Derby JDBC数据库连接”,我被告知这不是基于文件的方法,无论哪种方式,连接似乎都不起作用。 任何帮助将不胜感激
答案 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数据目录中我想要的地方在文件系统中。
pwd
/ 版本 pwd
/ latest。pwd
/ latest pwd
从这里开始,你可以用netbeans做任何事情:
当您进入编码时,只需添加ASF-Derby-Emb库,它就会自动复制到您的“dist”中。
现在设置JavaDB。
只需更改数据库位置,您就可以将数据库放在任何您想要的位置。或者您可以在代码中完成相同的操作,因为url是:jdbc:derby:// 数据库位置目录。
无论如何,现在我可以设置我的数据库了。
从这一点来看,有三种选择:
就个人而言,(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来轻松删除您创建的数据库。单击要删除的数据库,然后选择删除。并重用你的脚本来重新生成它。
希望这有帮助! :)
答案 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