SQL语法

时间:2017-10-26 23:40:45

标签: java mysql sql jdbc

我是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相对应。我在同一个类中写了几个方法,但只有这个我有问题。如果你知道如何解决它,请告诉我。也许这是一个简单的问题,但我无法注意到这一点。我在这个网站上寻找答案,但我找不到答案;(

问候:)

2 个答案:

答案 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()是更好的选择。