You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fillo库含单引号的查询/更新操作提示无效,求修复方案

解决Fillo库SQL查询中单引号导致的"Invalid query"错误

问题场景

使用Fillo 1.22版本执行SQL查询时,若WHERE条件值或更新内容包含单引号('),会触发"Invalid query"错误。例如:

String query = "Select * from Messages Where message='Let's hangout somewhere.'";

移除字符串中的单引号后查询可正常执行,常规的Java字符串转义(\')无法解决该问题。

可行解决方案

1. 使用参数化查询(推荐)

Fillo支持参数化查询,通过占位符?传递参数,彻底避免单引号转义问题,同时还能防范SQL注入风险。示例代码:

Fillo fillo = new Fillo();
Connection conn = fillo.getConnection("your_excel_file_path.xlsx");

// 用?作为参数占位符
String query = "Select * from Messages Where message=?";
PreparedStatement stmt = conn.prepareStatement(query);
// 设置参数值
stmt.setString(1, "Let's hangout somewhere.");

ResultSet rs = stmt.executeQuery();
// 处理查询结果
while (rs.next()) {
    System.out.println(rs.getString("message"));
}

// 关闭资源
rs.close();
stmt.close();
conn.close();

2. 手动转义单引号(替换为两个单引号)

Fillo底层遵循SQL风格的单引号转义规则:用两个连续的单引号('')表示实际的一个单引号,而非Java中的反斜杠转义。示例代码:

String targetMessage = "Let's hangout somewhere.";
// 将单个单引号替换为两个
String escapedMessage = targetMessage.replace("'", "''");
String query = "Select * from Messages Where message='" + escapedMessage + "'";

Fillo fillo = new Fillo();
Connection conn = fillo.getConnection("your_excel_file_path.xlsx");
ResultSet rs = conn.executeQuery(query);

// 处理结果...

处理后的查询语句为Select * from Messages Where message='Let''s hangout somewhere.',可被Fillo正确解析。

内容的提问来源于stack exchange,提问作者Akshay_Nayak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:35:19