【问题标题】:Java-Paradox Driver - can select but can't modifyJava-Paradox 驱动程序 - 可以选择但不能修改
【发布时间】:2020-01-27 15:53:53
【问题描述】:

我需要在 java 代码中对 paradox 数据库进行一些 DB 操作

(我什至不知道悖论的存在)

所以我下载了这个驱动程序,如下所示: https://github.com/leonhad/paradoxdriver,并创建了一个代码来查询悖论数据库。它工作正常。

但是当我尝试删除同一张表上的一些记录时,我可以成功地进行选择,我得到这个错误:

java.sql.SQLFeatureNotSupportedException:不支持的操作。

使用“myStatement.execute(delete)”命令执行SQL,如下:

delete from mytable where field1 = 3 or field1= 4

我很困惑,因为在使用驱动程序连接到数据库时,我没有提供任何用户名/密码,只是

Class.forName("com.googlecode.paradox.Driver");
java.sql.Connection conn = DriverManager.getConnection("jdbc:paradox:./db");

这个驱动不允许删除操作吗?

【问题讨论】:

  • 您的用户有删除权限吗?你用了什么 SQL?
  • 我已经编辑了原始问题

标签: java driver paradox


【解决方案1】:

如果您查看驱动程序的代码,则未实现 executeUpdate() 方法。请改用 execute()。

还可以使用 isReadOnly() 检查您的连接对象,如果它是只读的,请尝试使用 setReadOnly(false)。

编辑

在对源代码进行更多挖掘之后,看起来这个驱动程序还没有实现删除。最好再找个司机。

【讨论】:

  • 感谢您的提示,但仍然无法正常工作(我已经编辑了原始问题)
  • 连接是只读的。我已使用您建议的命令对其进行了修改,但仍然出现相同的错误(java.sql.SQLFeatureNotSupportedException:不支持的操作。)
  • @Maik 你还在尝试使用 executeUpdate() 吗,因为那仍然行不通。使用执行()。
  • 不,我按照您的建议使用执行: String delete = "delete from mytable where field1 = 3 or field1= 4"; boolean esito = statTC.execute(delete);
  • @Maik 深入挖掘源代码,看起来除了选择之外什么都没有。我建议你找一个不同的驱动程序。
【解决方案2】:

您尝试使用的驱动程序不完整,我也尝试过。开发者两三个月前说要重写驱动(我需要join select语句不起作用)。我找到的最好的悖论驱动程序是http://www.hxtt.com/paradox.html,但它不是免费的。但是,它一次最多可用于 50 个查询。现在我使用 jdbc-odbc 驱动程序很好。它在 Java 8 中被删除但仍然可以使用:https://stackoverflow.com/a/36875001/12298400

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多