簡體   English   中英

選擇特定字段不為NULL的所有記錄

[英]Select all records whose specific field is not NULL

我有一個名為starsMySQL表,其中一個字段是id_num ,默認值為NULL 我想通過PreparedStatement選擇id_num 不為 NULL所有記錄。

現在我正在嘗試這個:

private final String idStarsSQL = "select * from `stars` where id_num is not ?";
...

preparedStatement = (PreparedStatement) connection.prepareStatement(idStarsSQL);
preparedStatement.setString(1, NULL);
set = preparedStatement.executeQuery();

但它不起作用。

private final String idStarsSQL = "select * from `stars` where id_num is not NULL";

你不需要PreparedStatement

從我的角度來看,PreparedStatement應該用於帶參數的SQL語句。 使用帶參數的SQL語句的優點是,您可以使用相同的語句,並在每次執行時為其提供不同的值。

Statement statement = con.createStatement();
    ResultSet result = statement.executeQuery("select username, age, nickname from user where nickname is not NULL");
    List<User> allUserNullNickname = new ArrayList<>();
    while(result.next()){
        User user = new User();
        user.setUsername(result.getString("username"));
        user.setAge(result.getInt("age"));
        allUserNullNickname.add(user);
    }
    System.out.println("All user without nickname:");
    allUserNullNickname.stream().forEach(user -> System.out.println("username: "+user.getUsername()+" Age: "+user.getAge()));

因為null不是值,所以它更多是SQL中的關鍵字,因此您必須將其硬編碼到sql語句中

private final String idStarsSQL = "select * from `stars` where id_num is not NULL";

您可以使用 :

PreparedStatement preparedStatement = 
            connection.prepareStatement("select * from `stars` where id_num is not NULL");
ResultSet result = preparedStatement.executeQuery();

while (result.next()) {
    result.getString("attribute1");
    result.getString("attribute2");
}

您可以在此處了解有關PreparedStatementResulSet的更多信息

preparedStatement的主要功能是將參數插入到SQL語句中,在您的情況下,您不需要這樣做,因為null不是一個參數,所以您可以清楚地做到:

PreparedStatement myRequest= 
            connection.prepareStatement("select * from `stars` where id_num is not NULL");
ResultSet myResult= preparedStatement.executeQuery();

暫無
暫無

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

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