【发布时间】:2024-05-29 17:00:01
【问题描述】:
我一直在尝试使用preparedStatement 选择数据并传递这些参数,但是发生了异常。
谁能帮帮我?这是我的代码。
Connection connection = DBConnection.getConnection();
String query = "select * from integrantes where nome like '?' or rm like '?'";
ArrayList<Integrante> list = new ArrayList<>();
try {
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, ('%' + term + '%'));
preparedStatement.setString(2, ('%' + term + '%'));
JOptionPane.showMessageDialog(null, ((OraclePreparedStatement) preparedStatement).getOriginalSql());
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
list.add(new Integrante(resultSet.getInt(1), resultSet.getString(2), resultSet.getString(3), resultSet.getInt(4)));
}
} catch(SQLException e) {
JOptionPane.showMessageDialog(null, "Erro ao listar o(s) integrante(s)." + e);
} catch(NullPointerException e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro inesperado.");
} catch(Exception e) {
JOptionPane.showMessageDialog(null, "Ocorreu um erro no código.");
}
return list;
【问题讨论】:
-
select *是一种构建 SQL 语句而不是列出列的糟糕方法。我猜您的查询不会返回 4 列,但不可能知道。 -
从 integrantes 中选择 id_integrante、nome、rm id_grupo;当我在 Oracle SQL Developer 中执行时它也能正常工作
-
这是 3 列而不是 4 列(
id_grupon是rm列的别名)。
标签: java sql oracle jdbc prepared-statement