gpt4 book ai didi

java - ReadyStatement "like"模式匹配不适用于文件路径

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:09 24 4
gpt4 key购买 nike

对于我的情况,我为每个文件存储了版本,试图找到目录下文件的最大版本。

将目录路径传递给以下方法始终返回 0,因为准备语句的模式匹配失败。

public int getMaxVersion(String path) {
int version = -1;
String query = "SELECT MAX(VERSION) FROM TABLE WHERE FILENAME LIKE ?";

Connection connection = database.getConnection();
PreparedStatement pstmt = null;
if(connection != null) {
try {
pstmt = connection.prepareStatement(query);
pstmt.setString(1, path + "%");
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
version = rs.getInt(1);
}
} catch (SQLException e) {
log(e.getMessage());
} finally {
database.close(connection, pstmt);
}
}
return version;
}

我已验证该目录下存在表文件。

SELECT * FROM TABLE;
FILENAME SIZE VERSION
C:\sb\pub\13.jpg 1032 2
C:\sb\pub\23.jpg 1562 3
(2 row, 2 ms)

我在嵌入模式下使用 h2 db。

任何人都可以帮我解决我在这里缺少的内容吗?

最佳答案

like-表达式中使用的反斜杠被视为转义字符,因此%_可以被转义。在您的情况下,您不希望出现这种情况,因此您必须使用额外的反斜杠转义反斜杠,或者通过将 SQL 更改为完全禁用转义:

SELECT MAX(VERSION) FROM TABLE WHERE FILENAME LIKE ? ESCAPE ''

...其中空字符串表示无转义。请参阅the H2 SQL grammar了解更多详情。

关于java - ReadyStatement "like"模式匹配不适用于文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com