问题标签 [jackcess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 Jackcess 中使用多列索引来匹配第一列
我使用 Jackcess 2.1.5 从 Access 2003 表中读取数据,该表在 colA 和 colB 上具有多列索引。给定 colA和colB 的值,这可以正常工作。
现在理论上,这样的索引可用于获取与 colA 值匹配的所有行。但是如何用 Jackcess 做到这一点呢?我无法通过使用newEntryIterable
或EntryIterableBuilder
目前我有另一个仅涵盖 colA 的索引。这是唯一的解决方案吗?
java - Jackcess如何用java插入图像
我是 Jackcess 的新用户。
我使用 addRowFromMap 方法在 MS Access 表中插入新行,但我不能在其中插入图像。
表格列具有正确的格式,但我不能这样做。
我尝试插入java文件格式,java bytearray,但无事可做。
您有任何建议或文档链接吗?
提前致谢, 埃米利亚诺
java - 如何开始使用 Jackcess?
我是java的初学者。今天我尝试制作一个应用程序来编辑 mdb 数据库。我决定使用 Jackcess,但我总是遇到一些错误。我是一个初学者,所以我使用文本编辑器编写代码,然后从 cmd 使用 javac(这不是最有效的解决方案,但它可以让您更好地理解关于 java 的整个想法)。我的问题是我无法制作任何可编译和正常工作的应用程序。
Example_1: 在此链接中使用 Java 创建 Access 数据库文件(.mdb 或 .accdb) Sarath Kumar Sivan 告诉您需要安装 Jackcess、commons-logging、commons-lang jars,并尝试代码。我下载了这些罐子。然后我把它们移到这个目录:
之后,我尝试编译代码,但出现此错误:
我不知道它是什么意思。
Example_2:在 Jackcess 的官方页面上你可以看到你可以从简单的命令开始:
所以我写了这个:
这给了我这个错误:
所以我将其编辑为:
现在我可以编译它但运行它后我有这个消息:
我想我需要包含 Jackcess 类,但我不知道该怎么做。我以前从未见过这样的事情。
我尝试了其他各种使用 Jackcess 的方法,但没有任何方法可以正常工作。你能解释一下如何使用 Jackcess 以及我错过了什么吗?
java - 在 OSX 中使用 rJava 来自 R 的 Jackcess
我尝试了这个相关问题中的所有建议,但仍然得到最后一个错误
这是 .jclassPath() 的结果
“/Users/JS/Dropbox/R_packages/library/rJava/java” “/Users/JS/Dropbox/R_packages/JavaJS/commons-codec-1.10” “/Users/JS/Dropbox/R_packages/JavaJS/commons-lang- 2.6" "/Users/JS/Dropbox/R_packages/JavaJS/commons-logging-1.1.3" "/Users/JS/Dropbox/R_packages/JavaJS/hsqldb-2.2.8.jar" "/Users/JS/Dropbox/ R_packages/JavaJS/jackcess-2.1.6.jar" "/Users/JS/Dropbox/R_packages/JavaJS/log4j-1.2.7.jar" "/Users/JS/Dropbox/R_packages/JavaJS/poi-3.9" "/用户/JS/Dropbox/R_packages/JavaJS/ucanaccess-3.0.7.jar"
会话信息()
R 版本 3.3.2 (2016-10-31) 平台:x86_64-apple-darwin13.4.0 (64-bit) 运行于:OS X El Capitan 10.11.6
语言环境: 1 en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
附加的基础包: 1 stats graphics grDevices utils datasets methods base
其他附加包: 1 rJava_0.9-8 tibble_1.2 datapasta_1.0.0 rlist_0.4.6.1 pipeR_0.6.1.3 janitor_0.2.1 data.table_1.10.0
通过命名空间加载(未附加): 1 magrittr_1.5 R6_2.2.0 assertthat_0.1 tools_3.3.2 DBI_0.5-1 dplyr_0.5.0 Rcpp_0.12.8
谢谢你的帮助!
java - 与 Jackcess 匹配的列数据子字符串
在我的 Access db 表中,我有一cmt_data
列包含一个字符串。例如:
Check in the packet TM(12,9) MRSS0319 'Monitoring List Report'.
我也有List<String>
诸如 , 等的项目MRSS0319
。TRPP3006
我要做的是在 myList<String>
和 table 列之间执行子字符串匹配,但我不太清楚 Jackcess 提供的示例是如何简单的。我在这里找到的一个例子显示:
该方法cursor.currentRowMatches(columnPattern, valuePattern)
看起来可能有用的地方。但是根据文档,该方法似乎只执行字符串相等匹配,所以现在我有点走投无路了。
感谢你的帮助。
java - 在 MS Access 表行中查找和替换文本不起作用
.mdb
给定一个目录,我的应用程序使用 Jackcess API遍历并加载MS Access dbs。在每个数据库内部,都有一个名为的表,该表的名称为包含一些文本GCMT_CMT_PROPERTIES
的列。cmt_data
我还有一个Mapper
对象(本质上类似于 aMap<String,String>
但允许重复的键),当我从字符串中替换某个单词时,我将其用作字典。
例如,如果mapper
包含fox -> dog
,则句子:"The fox jumps"
变成"The dog jumps"
。
我为这个程序准备的设计如下:
TaskMdbUpdater
负责在给定的 db 文件中找到适当的表和列,并在表的每一行上迭代运行“查找和替换”例程,以检测字典中的单词并替换它们(如上例所示),最后在关闭数据库之前更新该行。每个实例TaskMdbUpdater
都是一个分配有 Jackcess API 的后台线程DatabaseBuilder
,因此它能够操作数据库。
在当前状态下,代码正在运行而不会引发任何异常,但是当我通过 Access“手动”打开数据库并检查给定行时,它似乎没有改变。我试图在没有任何运气的情况下确定问题的根源,并希望得到任何支持。如果您需要查看更多代码,请告诉我,我会相应地更新我的问题。
更新 1:
为了验证我的自定义StringUtils.findAndReplace
逻辑,我执行了以下单元测试(在 JUnit 中),它正在通过:
我在TaskMdbUpdater
这里单独包括我的课程,其中包括一些日志记录代码,因为我怀疑故障点位于call
:
这是我日志中的一个小例子。如您所见,打开桌子后它似乎没有做任何事情,这让我有点困惑:
此后,日志中不再有任何条目,并且处理器以 100% 的负载达到峰值,一直保持这种状态,直到我强制终止应用程序。这可能意味着程序陷入无限的while循环 - 但是如果是这种情况,那么文件中不应该有日志条目吗?
更新 2
好的,我通过将日志打印TRACE
到stdio
. 似乎我performFindAndReplaceOnString
的效率非常低,它永远不会超过这些 dbs 的第一行,因为它只是在长字符串上磨掉。关于如何有效地为此用例执行字符串替换的任何建议?
java - 使用 Java 创建 .accdb 数据库
我正在尝试自动创建一个 .accdb 数据库,但使用该create()
函数时出现编译错误:
我使用这个 SO 答案中的代码: Create an Access database file (.mdb or .accdb) using Java
java - jackcess - databasebuilder.open 中的数据库路径名
我有一个名为 perso.accdb 的 Microsoft Access 数据库。我使用 Jackcess 库尝试使用以下从官方文档中获取的代码打开它
数据库 db = DatabaseBuilder.open(new File("mydb.mdb")); 听起来很简单,但我到底应该把我的“perso.accdb”放在哪里?!否则如何写一个绝对路径名?
提前致谢
ucanaccess - UCanAccess 升级 Apache Commons Lang 版本
您可以将 Apache Commons Lang 2.6 升级到 Apache Commons Lang 3.5 吗?
请参阅https://commons.apache.org/proper/commons-lang/download_lang.cgi。
java - Jackcess:MSAccess 数据库的字符集错误
我有一个 MS-Access 数据库,其中包含“加密”字符串。这些看起来像这样:
但是,我很快注意到这些字符串的长度与明文的长度完全匹配(我知道明文)。因此,通过对 Excel 的一些尝试,我发现如果您使用=CODE(<char>)
-function(因此您可以在默认字符集中获得字符代码,=CHAR(<number>)
反之亦然)并将这个数字与符号应该代表的字母的字符代码进行异或你总是得到相同的结果。这意味着我只需要在 java 中创建一个包含这些值的数组,瞧。Excel 示例(右侧提到的“数组”):
示例:“>>”的索引为 (dec) 187,因此 187xor253 产生 70 =>“F”
现在,我使用 jackcess 访问这些值,并且“解密”大部分都很好,但有时我会从字符串中得到错误的字符。在 Excel 中一切正常。具有最佳结果的代码:
但正如我所说,有些字符仍然是错误的,但在 Excel 中一切都很好。当我打印出getBytes("cp1272")
给出的数字时,它与 Excel 完全不同。
您有什么想法吗,我可能做错了什么以及为什么 java 有时会给出与 Excel 不同的值?什么是更好的方法?我已经尝试了所有字符集组合,其中一些在其他失败的情况下有效,但随后出现了其他错误的结果。