java - 与 Jackcess 匹配的列数据子字符串

标签 java jackcess

在我的 Access 数据库表中,我有一个 cmt_data 列,其中包含一个字符串。例如:

Check in the packet TM(12,9) MRSS0319 'Monitoring List Report'.

我还有一个 List<String> ,其中包含 MRSS0319TRPP3006 等项目。我想要做的是在 List<String> 和表列之间执行子字符串匹配,但我不太清楚如何作为示例Jackcess 提供的方法相当简单。我发现 here 的一个示例显示:

Column col = table.getColumn("town");
cursor.beforeFirst();
while(cursor.moveToNextRow()) {
  if(cursor.currentRowMatches(columnPattern, valuePattern)) {
    // handle matching row here
  }
}

cursor.currentRowMatches(columnPattern, valuePattern) 方法看起来很有用。然而根据文档,该方法似乎只执行字符串相等匹配,所以现在我有点陷入了死胡同。

感谢您的帮助。

最佳答案

当然,您可以创建一个小方法来检查 cmt_data 值是否匹配:

public static void main(String[] args) {
    String dbPath = "C:/Users/Public/JackcessTest.accdb";
    try (Database db = DatabaseBuilder.open(new File(dbPath))) {
        Table table = db.getTable("cmt_table");
        Cursor cursor = table.getDefaultCursor();
        cursor.beforeFirst();
        while (cursor.moveToNextRow()) {
            Row row = cursor.getCurrentRow();
            if (stringContainsSpecialValue(row.getString("cmt_data"))) {
                // handle matching row here
                System.out.println(row);
            }
        }
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
}

private static boolean stringContainsSpecialValue(String str) {
    boolean rtn = false;
    List<String> specialValues = Arrays.asList("MRSS0319", "TRPP3006");
    for (String val : specialValues) {
        if (str.contains(val)) {
            rtn = true;
            break;
        }
    }
    return rtn;
}

您或许还可以创建自定义 ColumnMatcher对于你的光标,但这可能有点过分了。

关于java - 与 Jackcess 匹配的列数据子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42088061/

相关文章:

java - 传递对象引用变量

java - Genexus 生成的代码上的连接 URL 无效

Point 类的 Java hashCode

java - 尝试远程访问HBase时出错

java - 如何使用 Jackcess 选择色谱柱

java - 我的 ListView 不显示我的数据,但显示我的包名称

java - 在 jackcess 中查找带有是/否类型列的行

Java JTable 导出到现有的 MS Access 表

java.lang.ClassCastException : java. lang.String 无法转换为 java.lang.Boolean,使用 Table.addRow() 和 Jackcess

java - 使用 Jackcess 在 Java 中为条件循环结果集