在大学任务中,我使用JDBC访问数据库。我编写了一个finder方法,可以通过任何具有整数值的列中的任何值查找表中的对象。
public ResultSet findSampleByAnyCol(String colName, Integer sampleId, Connection con) {
ResultSet rs = null;
String sql = "SELECT * FROM sample WHERE ? = ?";
try(PreparedStatement pstmt = con.prepareStatement(sql)) {
pstmt.setString(1, colName);
pstmt.setInt(2, sampleId);
rs = pstmt.executeQuery();
}catch(SQLException e) {
e.printStackTrace();
}
return rs;
}
我测试了它,我确定问题是"?"因为colum nname不起作用。堆栈跟踪表示"无效的数字"。但是,如果我将SQL语句更改为SELECT * FROM sample WHERE sampleid = ?
,它可以正常工作。