当前位置: 首页 > 知识库问答 >
问题:

derby 10.15.2.0的JDBC驱动程序?

况野
2023-03-14

我需要在Java中使用JDBC做一些简单的实验,我认为运行derby数据库应该是实现这一点的简单途径。

我已经安装了derby,并使用“ij”工具创建了一个表并将一些数据放入其中。我也可以用ij读回数据。

然而,当我试图使用实际的Java代码连接到此时,事情变得很糟糕。这是我尝试了几件事情的情况之一,每件事都以不同的方式失败,所以我希望你们都能原谅这有点模糊。但这些是我迄今为止尝试/失败的要点。

  • 这是一个maven项目,并且有一个对artifactId"derbyClient"版本的依赖10.15.2.0
  • ij工具使用url jdbc: derby: firstdb成功连接到我的数据库(localhost,但不是嵌入式)
  • 我找到的文档(终于!)谈到非嵌入式模式时,说驱动程序应该org.apache.derby.jdbc.ClientDriver,但是没有找到那个类。我在liquibase项目的gihub中找到了注释,上面写着这是现在org.apache.derby.client.ClientAutoloadedDriver。使用该类名,不会抛出类未找到错误,这似乎是向前迈出的一步。
  • 虽然上面的驱动程序加载,上面显示的jdbc url失败,没有适合jdbc: derby: firstdb的驱动程序
  • 我发现其他注释建议url应该是jdbc的形式:derby://localhost/firstdb但是,它说“连接被拒绝,因为没有找到数据库firstdb”。我尝试了几种命名数据库的变体,但它们再次导致“没有合适的驱动程序”。
  • 在g00se的提示下,我去寻找上面提到的客户端驱动程序没有找到。我在一个文件derbytools.jar的主要derby发行版中发现了这一点,但没有在maven加载的任何罐中发现。我尝试使用一个手工构建的命令行来执行它,这样我就可以把derby工具放在类路径上。这允许它作为驱动程序加载,但它连接到JVM内数据库(工作,我可以用它做些事情)。然而,它没有连接到正在运行的网络服务器,这是我想要实现的。当我试图通过使用jdbc:derby://localhost:1527/firstdb形式的URL来强制它的手时,它再次失败,告诉我没有找到数据库
  • 我还发现,似乎没有必要做"Class.forName"的事情,也不必担心在类路径上有ClientDriver。不知何故,当我做DriverManager.get连接时,驱动程序被加载并可用。然而,在我尝试过的网址中,我完全无法使它连接到网络服务器,它总是连接到JVM内服务器(可以工作,但不是我想要连接的地方)。)

谁能告诉我怎么让这个工作?

共有1个答案

阎俊英
2023-03-14

(代表问题作者发布,将解决方案移动到答案空间)。

我现在明白了这一点,这有效地解决了我的问题:

  • Derby不需要显式地加载任何驱动程序,它使用服务机制来处理这个问题(服务早于JPMS,所以是的,它可以在没有模块的情况下工作)。当然,仍然描述加载驱动程序的过时文档并没有真正的帮助
  • 我的实际问题是我未能理解两件事,第一,DerbyJDBCURL的格式,第二,ij工具可以创建嵌入式数据库
  • 特别是我在ij中使用的url(下面提到jdbc:derby:firstdb)是一个嵌入式url。这意味着试图从客户端代码中使用网络url连接到它是伪造的。客户机创建了自己的新数据库,但没有与ij数据库交互

祈祷有人能抽出时间更新Derby文档,特别是《入门指南》,让这些关键概念从一开始就更清晰。

 类似资料:
  • 问题内容: 有人告诉我,加载JDBC驱动程序的首选方法是: 我知道,这对于从XML配置文件或用户输入中读取多个驱动程序之间的动态决策更好。我很好奇的是,调用此语句如何将指定的驱动程序加载到我们什至没有将生成的“ Class”对象存储在任何地方的环境中。JavaDocs条目说: 返回与具有给定字符串名称的类或接口关联的Class对象 在那种情况下,Java开发人员仅凭此语句如何设法促进驱动程序对象的

  • 主要内容:JDBC驱动程序是什么?,JDBC驱动程序类型,应该使用哪个驱动程序?JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互。 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数据库连接并与数据库进行交互。 JDK附带的包包含各种类,其类的行为被定义,实现在第三方驱动程序中完成。 第三方供应商在其数据库驱动程序中实现接口。 JDBC驱动程序类型 JDBC驱动程序实现因Java

  • 问题内容: 我很难确定应该如何在我的debian 6.0服务器上为PostgreSQL安装JDBC驱动程序。我已将驱动程序.jar移至以下目录: 然后,教程讨论如何使用此代码: 但是,由于我是PostgreSQL的新手,所以我不知道应该把这行放在哪里,或者这是否正确。 我的问题是,除了将jar文件移动到此位置之外,为了在我的postgreSQL安装上安装JDBC驱动程序,我实际上需要做什么? 编辑

  • 问题内容: 输出 >无法连接到数据库服务器java.lang.ClassNotFoundException 问题答案: 看来您应该将MySQL驱动程序jar放入 类路径中 。

  • 问题内容: 我目前正在为大学的一个班级做项目。我正在学习有关连接和操作数据库的信息,我们正在使用Microsoft .accdb文件。 这是我到目前为止所拥有的。 当寻找“ sun.jdbc.odbc.JdbcOdbcDriver”时,我得到以下输出。 似乎很容易解决。看来我想念司机或类似的东西。但是,我很难找到解决方法。JDK随附驱动程序吗?我需要单独下载吗?是否取决于我的操作系统?(Mac O

  • 因此,我一直在使用sbt with assembly将所有依赖项打包到一个jar中,用于spark工作。我做了几个工作,使用设置连接池信息,将其广播出去,然后在RDD上使用获取连接,并将数据插入数据库。在我的sbt构建脚本中,我包括 这确保JDBC连接器与作业打包在一起。一切都很好。 因此,最近我开始使用SparkSQL,并意识到使用中的新特性,简单地获取一个dataframe并将其保存到jdbc