gpt4 book ai didi

java - SQL 语法中的 JDBC 问号

转载 作者:行者123 更新时间:2023-11-29 18:16:41 27 4
gpt4 key购买 nike

我是 Java 新手,这是我使用 JDBC 的第一步(4 天,每天约 12 小时... <3 Java ;))。简单的查询有问题。我想编写一个返回 id 大于参数的记录列表的方法。所以写道:

    public List<Person> whereId(int id) {


List<Person> persons = new ArrayList<Person>();
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;

try {
connection = DBConnection.getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery("SELECT * FROM person WHERE id>?");

while(resultSet.next()) {
Person person = new Person();
person.setId(resultSet.getInt("id"));
person.setfirstName(resultSet.getString("firstName"));
person.setlastName(resultSet.getString("lastName"));

persons.add(person);
}

} catch (Exception e) {
e.printStackTrace();
}finally {
if(resultSet!= null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(statement!=null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection!=null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

return persons;
}
}

控制台告诉我,我的手册中与我的 MariaDB 对应的语法错误。我在同一个类中编写了几个方法,但只有这个我遇到了问题。如果您知道如何解决请告诉我。也许这是一个简单的问题,但我没有注意到。我正在这个网站上寻找答案,但没有找到答案;(

问候:)

最佳答案

您正在使用 Statement 执行查询,但 Statement 不支持占位符(?)。但是,Prepared Statement 支持占位符。

使用

PreparedStatement preparedstatement= connection.PreaparedStatement("SELECT * FROM person WHERE id > ?");

对于 DQL 查询,executeQuery() 是更好的选择。

关于java - SQL 语法中的 JDBC 问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46965408/

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