1
對於我的情況,我爲每個文件存儲了版本,試圖在目錄下查找最大文件版本。PreparedStatement「like」pattern matching not working for filepath
將目錄路徑傳遞給下面的方法始終返回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。
任何人都可以請幫我看看我在這裏失蹤了什麼?
如果什麼都找不到,它應該返回'-1'而不是'0' – silentprogrammer
hi singhakash max函數總是返回一條記錄,如果沒有匹配則返回null,如果沒有匹配,rs.getObject(1)返回null rs.getInt(1)返回0,這就是爲什麼我得到0不是-1。 – ranjeetcao
你如何調用這個方法,即什麼是'path'? –