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

标签 java sql jdbc prepared-statement

要使用准备好的语句在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 语句的值的顺序。标志。

现在我想做的是从用户表中选择其中角色不为空。像这样的事情:

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

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

最佳答案

使用带有以下 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

关于java - 设置准备好的语句参数 where NOT NULL java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46881680/

相关文章:

sql - 将十六进制数转换为带有破折号的 GUID

c# - 查询时防止丢失 [MEMNO] 值中的前导零?

java - 如何将从数据库收集的数据存储在对象数组中?

java - 读取txt文件。显示每行旁边的整数之和并找到其中最大的和

java - Android Horizo​​ntalScrollView 内容拉伸(stretch)

java - 使用new构造的String对象除了堆之外还驻留在哪里?

sql - ReportServer 和 ReportServerTempDB 的使用

java - Tomcat 6 的 JDBC 池

java - 无法将 JDBC-Hikari 连接到我的 Micronaut 应用程序

java - 与Excel链接的应用程序