Java UCanAccess 未检测到所有项目
Posted
技术标签:
【中文标题】Java UCanAccess 未检测到所有项目【英文标题】:Java UCanAccess doesn't detect all items 【发布时间】: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 这样的网站,然后在此处的评论中发布下载链接,以便我们尝试重新创建问题?
当然,这里是:wikisend.com/download/392154/data_prodej.mdb
我尝试了 LEFT JOIN,它也不起作用。当我使用旧的 JDBS 驱动程序时没有问题。所以我认为这可能是由 UCanAcces 引起的
哦,我明白了..当我尝试从 produkty 中全选时,它没有.. 缺少这 9 个结果
【参考方案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 中得到解决。以上是关于Java UCanAccess 未检测到所有项目的主要内容,如果未能解决你的问题,请参考以下文章
ucanaccess SQL 异常:游标状态无效:已识别游标未打开
不使用 UCanAccess 从 Java 8 连接到 Access 数据库
使用 UCanAccess 创建表后,ms 访问未强制执行非空约束