我是Java的n00b,这是我的第一步(4天约12小时/天......< 3 Java;))使用JDBC。简单的Query需要有问题。 我想编写一个返回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相对应。我在同一个类中写了几个方法,但只有这个我有问题。如果你知道如何解决它,请告诉我。也许这是一个简单的问题,但我无法注意到这一点。我在这个网站上寻找答案,但我找不到答案;(
问候:)
答案 0 :(得分:0)
尝试替换......
#!/bin/bash
echo '#!/usr/bin/expect -f' > expect_file
echo 'expect "\[RETURN\]" {send "\r"}' >> expect_file
echo 'expect ":" {send "q"}' >> expect_file
echo 'expect "otherwise:" {send "y\r"}' >> expect_file
echo 'expect eof {exit}' >> expect_file
与
statement = connection.createStatement();
resultSet = statement.executeQuery("SELECT FROM person WHERE id>?");
您还需要设置statement = connection.prepareStatement("SELECT * FROM person WHERE id > ?");
statement.setInt(1, minId);
resultSet = statement.executeQuery();
。
答案 1 :(得分:0)
您正在使用Statement
执行查询,但Statement
不支持占位符(?)。但是,Prepared Statement
支持占位符。
使用
PreparedStatement preparedstatement= connection.PreaparedStatement("SELECT * FROM person WHERE id > ?");
对于DQL quires executeQuery()
是更好的选择。