Java:嵌入式数据库

Java:嵌入式数据库,java,Java,我想创建一个带有嵌入式数据库的desctop应用程序。数据库是JavaDB(Derby)。我已经将一个jar文件derby.jar连接到我的项目。问题是我不知道如何注册一个驱动程序来使用这个数据库。据说我应该用 Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”) 但是,如果这是另一个数据库,其驱动程序不在java标准包中,该怎么办? 如你所见,我对此感到困惑。我想知道,如何使用我连接的derby.jar,如何使用它的jdbc驱动程序,以及如

我想创建一个带有嵌入式数据库的desctop应用程序。数据库是JavaDB(Derby)。我已经将一个jar文件derby.jar连接到我的项目。问题是我不知道如何注册一个驱动程序来使用这个数据库。据说我应该用 Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”) 但是,如果这是另一个数据库,其驱动程序不在java标准包中,该怎么办? 如你所见,我对此感到困惑。我想知道,如何使用我连接的derby.jar,如何使用它的jdbc驱动程序,以及如何在指定目录中创建表


请尽可能详细地回答。(我在这个=)中是一个傀儡。

事实上,Derby不是“标准”Java包的一部分,它包含在Sun的Windows发行版中,但默认情况下,例如,它不包含在OS X中


要回答您的问题,您需要将所需数据库的jar文件添加到类路径中,并使用class.forName(“”)和该数据库的相应驱动程序。

您可以使用如下语句:

Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
加载并注册Derby的JDBC驱动程序类,以便JDBC
java.sql.DriverManager
可以在连接到数据库时找到驱动程序。如果要连接到不同的数据库或使用不同的驱动程序实现,则必须更改正在使用的驱动程序的名称。当然,您可以将信息放在配置文件中,而不是在程序中硬编码,这样您就可以在不重新编译程序的情况下更改驱动程序

例如,将必要的信息放入配置文件
数据库中。属性

jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver
jdbc.url=jdbc:derby:derbyDB;create=true
jdbc.username=dbusername
jdbc.password=dbpassword
然后将这些设置加载到程序中,并使用它们打开数据库连接:

InputStream in = new FileInputStream("database.properties");
Properties props = new Properties();
props.load(in);
in.close();

String driver = props.getProperty("jdbc.driver");
Class.forName(driver);

String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");

Connection conn = DriverManager.getConnection(url, username, password);

请参阅和Sun的。

如果您使用JDBC 4附带的Java 6,则根本不需要进行驱动程序注册。JDBC4从连接URL推断所需的驱动程序。当然,驱动程序应该在类路径上的某个地方。。。否则我会支持Jesper的回答。

要使用Derby在另一个目录中创建数据库,请在JDBC连接URL中指定目录,例如:

Connection conn = DriverManager.getConnection("jdbc:derby:c:/otherDirectory/myDB");

看,;这个例子来自Derby开发者指南的一节。

在本例中,
Class.forName()
用于加载驱动程序类:,我不知道这意味着什么…它也是Linux标准发行版的一部分。谢谢=)在指定目录中创建数据库怎么样?这些如何与嵌入式数据库一起工作?我的意思是如何处理嵌入式数据库?或者jvm在其连接的库中搜索可用的数据库?最后,如何在指定目录中创建数据库?嵌入式数据库是一个与应用程序本身在同一进程中运行的数据库(而不是在单独的进程中,甚至在不同的计算机上)。在JDBC中使用嵌入式数据库的方式与任何其他数据库相同。请注意,Apache Derby教程的第3步解释了如何将其用作嵌入式数据库。好的,但在这种情况下,我应该编程吗?我设置了一个类路径?通常在运行应用程序之前设置了正确的类路径。但是,如果我的程序将被其他人使用,该怎么办?