我有一个使用derby和JPA的项目。我可以在我的应用程序中很好地连接到数据库。我想用SQL Developer连接到嵌入式数据库,这样我就可以轻松地浏览/查询数据库中的数据。
这是我正在使用的德比依赖:
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.7.1.1</version>
</dependency>
以下是我用于JPA的连接信息:
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:derby:fs-hash-database;create=true"/>
使用SQL Developer 3.2.09我尝试在Tools&gt;中添加驱动程序。偏好&gt;数据库&gt;具有以下条目的第三方JDBC驱动程序:
C:\Users\axiopisty\.m2\repository\org\apache\derby\derby\10.7.1.1\derby-10.7.1.1.jar
但是当我尝试创建新连接时,SQL Developer仍然只向我显示Oracle和Access的选项卡。我无法获得第三方驱动程序的JDBC选项卡。
我认为问题在于我作为第三方驱动程序添加的jar是整个derby jar,而不仅仅是驱动程序。然而,驱动程序包含在罐子里。
有没有人知道如何配置SQL Developer以使用derby-10.7.1.1.jar中包含的org.apache.derby.jdbc.EmbeddedDriver?
答案 0 :(得分:7)
SQL Developer不支持Apache Derby。它只支持一组非常有限(且固定)的DBMS as documented on the WebSite:
(所有第三方DBMS在网站上列为“只读” - 无论这意味着什么)
您将需要一个“真正的”通用JDBC客户端来对抗Derby,如Squirrel,DbVisualizer或SQL Workbench / J.
答案 1 :(得分:1)
通过将驱动程序文件添加到类路径,然后编辑目录AppData \ Roaming \ SQL Developer \ system4.0.2中的connections.xml文件,我能够使用网络驱动程序在sql developer 4.0.2.15上使用它.15.21 \ o.jdeveloper.db.connection.12.1.3.2.41.140418.1111
我是通过复制sql server连接来完成的,但它似乎很高兴地认为它是一个sql server数据库。
我在文件中添加了以下内容:
<Reference name="DATABASENAME" className="oracle.jdeveloper.db.adapter.DatabaseProvider" xmlns=""\> <Factory className="oracle.jdevimpl.db.adapter.DatabaseProviderFactory1212"/> <RefAddresses> <StringRefAddr addrType="port"> <Contents>1527/DATABASENAME</Contents> </StringRefAddr> <StringRefAddr addrType="user"> <Contents>USERNAME</Contents> </StringRefAddr> <StringRefAddr addrType="NoPasswordConnection"> <Contents>TRUE</Contents> </StringRefAddr> <StringRefAddr addrType="subtype"> <Contents>SQLServer</Contents> </StringRefAddr> <StringRefAddr addrType="RaptorConnectionType"> <Contents>Microsoft SQL Server</Contents> </StringRefAddr> <StringRefAddr addrType="ConnName"> <Contents>DATABASENAME</Contents> </StringRefAddr> <StringRefAddr addrType="hostname"> <Contents>HOSTNAME</Contents> </StringRefAddr> <StringRefAddr addrType="customUrl"> <Contents>JDBCURL</Contents> </StringRefAddr> <StringRefAddr addrType="SavePassword"> <Contents>false</Contents> </StringRefAddr> <StringRefAddr addrType="driver"> <Contents>org.apache.derby.jdbc.ClientDriver</Contents> </StringRefAddr> </RefAddresses> </Reference>
您必须为数据库配置适当的DATABASENAME,USERNAME,HOSTNAME和JDBCURL值。
我希望这会有所帮助
答案 2 :(得分:1)
Oracle SQL Developer可以手动配置为使用JDK自Java 8开始附带的驱动程序与Derby一起使用。
步骤1:在Oracle SQL Developer中,包括Derby相关库。
Oracle SQL Developer - &gt;工具 - &gt;偏好 - &gt;数据库 - &gt;第三方JDBC驱动程序。我只是[添加条目...] C:\ Program Files \ Java \ jdk1.8.0_92 \ db \ lib
下的所有库第2步:手动编辑connections.xml
编辑C:\ Users \ USERNAME \ AppData \ Roaming \ SQL Developer \ system4.1.2.20.64 \ o.jdeveloper.db.connection.12.2.1.0.42.151001.541 \ connections.xml
在本例中,我使用的是嵌入式Derby驱动程序。
<Reference name="DerbyConn" className="oracle.jdeveloper.db.adapter.DatabaseProvider" xmlns="">
<Factory className="oracle.jdevimpl.db.adapter.DatabaseProviderFactory1212"/>
<RefAddresses>
<StringRefAddr addrType="OracleConnectionType">
<Contents>BASIC</Contents>
</StringRefAddr>
<StringRefAddr addrType="RaptorConnectionType">
<Contents>Microsoft SQL Server</Contents>
</StringRefAddr>
<StringRefAddr addrType="customUrl">
<Contents>jdbc:derby:firstdb;create=true</Contents>
</StringRefAddr>
<StringRefAddr addrType="driver">
<Contents>org.apache.derby.jdbc.EmbeddedDriver</Contents>
</StringRefAddr>
<StringRefAddr addrType="subtype">
<Contents>SQLServer</Contents>
</StringRefAddr>
<StringRefAddr addrType="ConnName">
<Contents>DerbyDB</Contents>
</StringRefAddr>
</RefAddresses>
注意:
1. XML设置可以如上所示
2. customUrl是 jdbc:derby:firstdb; create = true 。这将在C:\ sqldeveloper \ bin \ firstdb中初始化firstdb模式。您可以使用 jdbc:derby:D:\\ Project \\ derbydb \\ firstdb 将架构初始化为绝对位置。
答案 3 :(得分:0)
在经过许多“错误的URL格式”和一些“空指针异常”之后,我终于成功地使该连接正常工作了!在我的上下文中,不是嵌入式DERBY数据库,而是Derby launched as a network server。这是清单:
使用带有JDK 8的SQL开发人员版本20.x(可能更早-未选中)(SQL开发人员要求高于171)。后者包含的JavaDB一直是Apache DERBY 10数据库。
DERBY已启动,并监听端口1527(其默认值)。权限确实必须根据您的上下文允许localhost和/或远程连接。我强烈建议您准备好数据库,然后使用诸如本地Derby command line tool 'ij'。例如,在ij提示符下:
ij> connect 'jdbc:derby://localhost:1527/MyDB;user=MYUSER;password=abcd';
确保将Derby JDBC驱动程序添加到SQL Developer>工具>首选项>数据库>第三方JDBC驱动程序。浏览并添加 您的JDK路径 \ db \ lib \ derbyclient.jar ;这个罐子就足够了。
创建一个新的连接,只是为了在连接配置文件中创建条目,而我们将必须手动编辑该条目。确保使用适当的用户名和密码为它提供所需的名称。填写其他字段的任何数据并保存您的连接。它还行不通。
退出SQL开发人员并手动编辑连接元数据。在最新的SQL开发人员版本中,此文件为JSON,以前的版本为XML,在两种情况下,属性名称均相同。路径就像:
C:\Users\YourNAME\AppData\Roaming\SQL Developer\system20.2.0.175.1842\o.jdeveloper.db.connection\connections.json
打开文件并标识您刚刚创建的连接。编辑它以获得类似的内容:
{
"info": {
"role": "",
"SavePassword": "true",
"OracleConnectionType": "BASIC",
"RaptorConnectionType": "Microsoft SQL Server",
"customUrl": "jdbc:derby://localhost:1527/MyDB",
"NoPasswordConnection": "TRUE",
"password": "123456789PLVEC4wxu80ijhx5ALU4ZpRgo123456789=",
"hostname": "localhost",
"port": "1527",
"subtype": "SQLServer",
"ConnName": "DerbyDB",
"driver": "org.apache.derby.jdbc.ClientDriver",
"IS_PROXY": "false",
"OS_AUTHENTICATION": "false",
"KERBEROS_AUTHENTICATION": "false",
"user": "MYUSER"
},
"name": "local DERBY",
"type": "jdbc"
}
是的,您可能已经注意到对“ Microsoft SQL Server”的引用是 RaptorConnectionType ,而对“ SQLServer”的引用是 subtype 。这是魔术。当然,客户端 driver 类路径也很关键,对于Derby网络模式客户端,它的路径是“ org.apache.derby.jdbc.ClientDriver”,而 connectionUrl 也是。
启动SQL Developer并打开将出现在“ SQLServer连接”下的连接