设置准备好的语句参数 where NOT NULL java

Posted

技术标签:

【中文标题】设置准备好的语句参数 where NOT NULL java【英文标题】:set prepared statement parameter where NOT NULL java 【发布时间】:2017-10-23 03:49:23 【问题描述】:

要在 java 中使用准备好的语句执行 sql 查询,我知道你是这样做的:

Connection con=UserModel.getConnection();  
String sql = "UPDATE users SET firstname=?,lastname=? WHERE id=?";
PreparedStatement ps=con.prepareStatement(sql); 

ps.setString(1,u.getFirstname());  
ps.setString(2,u.getLastname());  
ps.setString(3,u.getId());

setString 方法中的第一个参数在哪里表示在您有 ? 的地方进入 sql 语句的值的顺序。签名。

现在我要做的是从用户表中选择 其中角色不是 NULL。像这样的:

Connection con = UserModel.getConnection();  
PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE role=?");
ps.setString(1,not_null); // ***here***

如何选择角色不为空的位置?那是我的问题。

【问题讨论】:

【参考方案1】:

使用带有 where 子句的 sql:

where role is not null 

使用 = 将某些内容与 null 进行比较是行不通的。 PreparedStatement 上的 setNull - 请参阅 JDBC:Inserting null to Integer column - 替换 null,但这在这里没有帮助,因为 where 子句条件始终为 false。原因见Why does NULL = NULL evaluate to false in SQL server

【讨论】:

【参考方案2】:

连接 con = UserModel.getConnection(); PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE role is NOT NULL"); ps.executeQuery();

【讨论】:

您需要在查询本身中指定NOT NULL并直接执行。

以上是关于设置准备好的语句参数 where NOT NULL java的主要内容,如果未能解决你的问题,请参考以下文章

准备好的语句,`WHERE .. IN(..)` 查询和排序 - 使用 MySQL

如何使用准备好的 PDO 语句设置 ORDER BY 参数?

如何使用准备好的 PDO 语句设置 ORDER BY 参数?

在 where 子句中具有多个条件的 PDO 准备语句

准备好的语句语法错误

JDBC驱动程序为准备好的语句转义参数?