簡體   English   中英

SQL語法中的JDBC問號

[英]JDBC Question Mark in SQL Syntax

我在Java上是n00b,這是我使用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 = 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();

您還需要設置minId

好了,您正在使用Statement執行查詢,但是Statement不支持占位符(?)。 但是, Prepared Statement支持占位符。

采用

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

對於DQL, executeQuery()是更好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM