0
我遇到了从我的数据库返回单个记录的问题。我每次运行代码时都会返回null。 代码在下面带星号的行上失败。 我的代码是:Java - 用准备好的语句从数据库中提取
public Map<String,Object> retrieveRecordById(String tableName,
String column, int primaryKey)
throws ClassNotFoundException, SQLException {
Map<String,Object> record = null;
PreparedStatement pStmt = null;
ResultSetMetaData metaData = null;
ResultSet rs = null;
String query = "SELECT * FROM " + tableName + " WHERE " + column + "=?";
try{
openDatabaseConnection();
pStmt = conn.prepareStatement(query);
pStmt.setObject(1, primaryKey);
*********** pStmt.executeQuery(query); ***********
rs = pStmt.executeQuery(query);
metaData = rs.getMetaData();
int colCount = metaData.getColumnCount();
if(rs.next()) {
record = new HashMap<>();
for(int i=1; i < colCount; i++) {
record.put(metaData.getColumnName(i), rs.getObject(i));
}
}
} catch(IllegalArgumentException | ClassNotFoundException | SQLException e){
e.getLocalizedMessage();
}finally{
pStmt.close();
closeDatabaseConnection();
}
return record;
}
而且从控制台输出为:
空
和错误消息是:
您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在'?'附近使用正确的语法。在1号线
失败的原因?任何异常堆栈? – kosa
为什么问号在“=?” ? – APH
@APH是一个参数化查询APH – Asura