【问题标题】:Conflict between Netbeans IDE 8.0 and UCanAccess?Netbeans IDE 8.0 和 UCanAccess 之间的冲突?
【发布时间】:2014-06-05 06:23:57
【问题描述】:

我必须在 Netbeans 的“服务”选项卡中定义一个新的驱动程序
服务->数据库->驱动程序->新驱动程序...
因为我想在 UCanAccess 的上下文中使用“数据库中的实体类”-向导。
第一步:“新驱动程序”确实有效(仅声明 ;-))

  • 驱动程序文件:f:\WorkspaceNetbeans\MSAccessDB\lib\UCanAccess-2.0.4-bin\ucanaccess-2.0.4.jar
  • 驱动类:net.ucanaccess.jdbc.UcanaccessDriver
  • 名称:msaccess

第二步:“使用...连接”

  • JDBC URL:jdbc:ucanaccess://F:/WorkspaceNetbeans/MSAccessDB/data/Datanbank2.accdb
  • “用户名”和“密码”留空

“测试连接”按钮导致错误消息:

无法建立连接 jdbc:ucanaccess://F:\WorkspaceNetbeans\MSAccessDB\data\Datanbank2.accdb 使用
net.ucanaccess.jdbc.UcanaccessDriver(无法初始化类
net.ucanaccess.jdbc.UcanaccessDriver)

我从http://ucanaccess.sourceforge.net/site.html 获得了最新的 ucanaccess Netbeans 类路径中的 ucanaccess-2.0.4.jar、commons-lang-2.6.jar、commons-logging-1.0.4.jar、hsqldb.jar、jackcess-2.0.3.jar。

通过 jdbc 连接到 ucanaccess 的老式方式工作正常。

public static void main(String[] args) throws ClassNotFoundException, SQLException {
   String connectString = "jdbc:ucanaccess://" + "f:/WorkspaceNetbeans/MSAccessDB/data/Datenbank2.accdb";
   Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
   Connection conn = DriverManager.getConnection(connectString, "", "");
   conn.createStatement().execute("CREATE TABLE example1 (id COUNTER PRIMARY KEY,descr text(400), number numeric(12,3), date0 datetime) ");
}

相同的连接字符串也可以正常工作,使 DBeaver 能够连接到 MSAccess 数据库。

我的设置:
Windows 7 专业版 64 位
微软 Office 2013
NetBeans IDE 8.0
Java 1.8

问题类似于:“JT400 和 UCanAccess 之间的冲突?” Conflict between JT400 and UCanAccess?
但那里的答案对我的问题没有帮助。

有什么想法可以解决我的问题吗?

【问题讨论】:

  • 我能够在 Win8.1_Pro 32 位、NetBeans IDE 8.0、JDK 1.7、UCanAccess 和 Jackcess 2.0.4 版本上重现该问题
  • 我正在研究这个似乎与 netbeans 相关的棘手问题。应列出所有依赖项(commons-lang-2.6.jar、commons-logging-1.0.4.jar、hsqldb.jar、jackcess-2.0.3.jar)以及 ucanaccess.jar 作为驱动程序文件。 .但我仍然面临着另一个问题。我希望尽快让你知道我的发现。

标签: java jdbc connection netbeans-8 ucanaccess


【解决方案1】:

UCanAccess 2.0.4.1 已经发布,现在您可以将UCanAccess 配置为NetBeans 服务。 正如 UCanAccess 网站(标签“jdbc 客户端工具”)中所述,您必须:

-在驱动程序文件字段中,添加 ucanaccess.jar 和所有依赖项。我已将 UCanAccess 发行版中的 commons-logging 升级到 1.1.1,因此您可以将该 jar 与 NetBeans8 一起使用。

-对 jdbc url 使用以下模式: jdbc:ucanaccess://;showschema=true Showschema 连接属性必须设置为 true。

【讨论】:

  • 我测试了新版本,与db的连接正常。
  • 生成实体类的向导也部分工作。但是元数据中可能存在另一个问题,因为生成的类没有相关表(类)列表之类的关系。并且对另一个表的引用只有 ID 而不是另一个表作为一个类。我知道在 Oracle 数据库的上下文中使用此向导的正确行为。
  • 好吧,我来分析一下这种行为的原因。我会尽快通知你的。
  • 小提示:当向导启动时,选择“数据库连接”,你必须选择要转换为实体类的表。如果您选择了一个有关系的表并且选中了“包括相关表”复选框,则应将相关表添加到。
  • 是的,现在(重新修补 UcanAccessMetaData 后),如果我选择带有外键的表,我可以看到添加的相关表。之后,我可以在生成的实体的代码中看到 OneToMany 和 ManyToOne 注释。你可以在 svn 主干中找到补丁代码(如果你想重建 ucanaccess.jar):sourceforge.net/p/ucanaccess/code/HEAD/tree/ucanaccess/trunk/…。 UCanAccess 2.0.5 将于 5 月发布。
【解决方案2】:

我错了,这不是一个棘手的任务,但是... 要建立连接,您必须在驱动程序文件中列出: ucanaccess-2.0.4.jar, commons-lang-2.6.jar, hsqldb.jar, jackcess-2.0.3.jar 和 不同版本的 commons-logging,您可以在 NetBeans 中找到它: NetBeans 8.0\ide\modules\org-apache-commons-logging.jar(UCanAccess 发行版中的 commons-logging 与 NetBeans 使用的冲突)

但不幸的是,在建立连接后,您将无法通过此 IDE 执行查询,因为 UcanaccessDatabaseMetadata 中的一个小错误对我测试的其他 IDE jdbc 客户端(Openoffice、Libreoffice、 DBeaver、Squirrel、SQLeo 等)。 所以,要做到这一点,你必须等待几天(我想我会在下周发布一个修补过的 Ucanaccess 2.0.4.1)。另外,我将在 UCanAccess 网站中添加一条关于 UCanAccess 配置为 NetBeans 服务的说明。

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 2012-06-27
    • 2012-03-06
    • 2011-05-02
    • 2012-11-25
    • 2013-10-27
    • 2014-03-02
    • 2016-11-15
    • 2012-11-02
    相关资源
    最近更新 更多