【问题标题】:Java UCanAccess doesn't detect all itemsJava UCanAccess 未检测到所有项目
【发布时间】:2014-07-26 19:56:09
【问题描述】:

我有问题。我使用这个查询:

SELECT prodeje.datum, 
       prodeje.prodejce, 
       prodeje.pocet, 
       prodeje.cena, 
       produkty.autor_music, 
       produkty.autor_text, 
       produkty.skladba, 
       produkty.isrc, 
       produkty.cd, 
       produkty.ean 
FROM   prodeje 
       INNER JOIN produkty 
           ON prodeje.id_produktu = produkty.id 

但它不会返回所有项目。应该有 59 个结果,但它会(随机)跳过 9 个结果。当我在 Microsoft Access 中尝试相同的查询时,它起作用了……所以我很绝望。

我正在使用 UCanAccess JDBC 驱动程序。

【问题讨论】:

  • 尝试将INNER JOIN 更改为LEFT JOIN,看看它是否能恢复所有结果。
  • 您能否将包含这两个表的 Access 数据库文件上传到像 wikisend.com 这样的网站,然后在此处的评论中发布下载链接,以便我们尝试重新创建问题?
  • 我尝试了 LEFT JOIN,它也不起作用。当我使用旧的 JDBS 驱动程序时没有问题。所以我认为这可能是由 UCanAcces 引起的
  • 哦,我明白了..当我尝试从 produkty 中全选时,它没有.. 缺少这 9 个结果

标签: java sql ucanaccess


【解决方案1】:

最后,(也许)鬼被抓住了。 已经报告了这个问题(但不幸的是,没有人向我提供损坏的 mdb): http://sourceforge.net/p/ucanaccess/discussion/help/thread/0b85dea2/ 与 SQL 引擎无关。 此问题的级别低于 UcanAccess(由于 mdb 中的格式错误导致的 IO 问题)。尽管有这些错误,但看起来 Ms Access 可以正常工作,而 Jackcess(UCanAccess 使用的库)却不行。 您的 mdb 版本是 1997 (UCanAccess 部分支持只读),如果您在更高版本中转换它,UCanAccess 一切都可以正常工作。 此外,使用 MS Access“修复和修复”工具也应该可以解决问题。

【讨论】:

  • +1 我同意这是一个有点损坏的 Access 97 文件的情况。我可以确认,如果在 Access 97 中执行“修复”然后执行“压缩”(在该版本中它们是单独的操作),那么 UCanAccess 将在 [produkty] 表中报告正确的行数。 (UCanAccess 在 Access 97 中只能“看到”修复/压缩之前的 38 行,但之后它可以“看到”所有 54 行。)
  • 由于表元数据与损坏的 mdb/accdb 中的数据未对齐,该问题已在 UCanAccess 2.0.9 中得到解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 2015-05-07
  • 2017-07-26
  • 1970-01-01
  • 2021-01-31
  • 2019-12-11
  • 2018-01-17
相关资源
最近更新 更多