gpt4 book ai didi

java - 在 SQLite 数据库上使用 Java 的 JDBCPreparedStatement 查询 NOT NULL

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:18 26 4
gpt4 key购买 nike

我是Java中PreparedStatement的新手,我似乎无法找出解决我的问题的最佳解决方案。我想查询表中 NULL 或 NOT NULL 的记录。

阅读PreparedStatement (Java Platform SE 6)时,我意识到我需要使用setNull方法,但我没有看到设置 NOT NULL 的方法?

例如:

SELECT * FROM table WHERE column IS NULL

我认为我会做的是:

public void query(boolean getNull) {
String querySql = "SELECT * FROM table WHERE column IS ?";
sqlStatement = connection.prepareStatement(querySql);
if(getNull)
sqlStatement.setNull(1, Types.VARCHAR);
else
???;
}

但是我该如何执行 else 语句呢?没有 setNotNull 方法。我想我可以做到这一点:

public void query(boolean getNull) {
String querySql = "SELECT * FROM table WHERE column IS ? NULL";
sqlStatement = connection.prepareStatement(querySql);
sqlStatement.setString(1, (getNull ? "" : "NOT"));
}

但这看起来非常“hackish”。有没有更好的方法来做到这一点?

谢谢

最佳答案

?用于传递参数,而不是构建 SQL。 (taken partially from here)

我建议您仅对值使用参数,而不是对字段或[IS] NULL(类似的东西)使用参数。

只需连接字符串即可。如果您有多个参数,您应该查看 StringBuilder .

public void query(boolean getNull) {
String querySql = "SELECT * FROM table WHERE column IS ";
if(getNull) {
querySql += "NULL";
} else {
querySql += "NOT NULL";
}
sqlStatement = connection.prepareStatement(querySql);
}

还有一种可能的方法是使用 String.format(...) ,例如:

public void query(boolean getNull) {
String querySql = String.format("SELECT * FROM table WHERE column IS %s NULL", (getNull ? "" : "NOT"));
sqlStatement = connection.prepareStatement(querySql);
}

关于java - 在 SQLite 数据库上使用 Java 的 JDBCPreparedStatement 查询 NOT NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15235376/

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