如何使用SQLDeveloper连接到嵌入式Derby数据库

时间:2012-09-01 23:30:33

标签: derby oracle-sqldeveloper

我有一个使用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?

4 个答案:

答案 0 :(得分:7)

SQL Developer不支持Apache Derby。它只支持一组非常有限(且固定)的DBMS as documented on the WebSite

  • Oracle(显然)
  • MySQL(显然)
  • SQL Server
  • DB2
  • MS Access
  • 的Sybase
  • Teradata的

(所有第三方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连接”下的连接