Java 选择其特定字段不为空的所有记录
我有一个名为Java 选择其特定字段不为空的所有记录,java,mysql,select,prepared-statement,notnull,Java,Mysql,Select,Prepared Statement,Notnull,我有一个名为stars的MySQL表,其中一个字段是id\u num,默认值为NULL。我想通过中的PreparedStatement选择id\u num不为NULL的所有记录 现在我正在尝试: private final String idStarsSQL = "select * from `stars` where id_num is not ?"; ... preparedStatement = (PreparedStatement) connection.prepareStatemen
stars
的MySQL
表,其中一个字段是id\u num
,默认值为NULL
。我想通过中的PreparedStatement
选择id\u 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()));
Statement Statement=con.createStatement();
ResultSet result=statement.executeQuery(“从昵称不为NULL的用户中选择用户名、年龄、昵称”);
List allUserNullNickname=new ArrayList();
while(result.next()){
用户=新用户();
user.setUsername(result.getString(“用户名”);
user.setAge(result.getInt(“age”);
添加(用户);
}
System.out.println(“没有昵称的所有用户:”);
AllUserNull昵称.stream().forEach(用户->系统.out.println(“用户名:”+user.getUsername()+“年龄:”+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");
}
您可以在这里了解更多关于和关于preparedStatement的主要功能是在SQL语句中插入参数,在您的情况下,您不需要这样做,因为null不是参数,因此您可以清楚地执行以下操作:
PreparedStatement myRequest=
connection.prepareStatement("select * from `stars` where id_num is not NULL");
ResultSet myResult= preparedStatement.executeQuery();
你不需要在这里准备一份声明。只需使用id_num不为null的stars中的
select*
@Jens,我将如何将此字符串连接到数据库?我的意思是,现在我有了.executeQuery()代码>。声明此字符串后,我将做什么?.executeQuery(idStarsSQL)代码>。您也可以将其与准备好的语句一起使用,但不必使用parameter@Jens啊,那么你的意思是我应该删除语句preparedStatement.setString(1,NULL)代码>,对吗?在我的字符串中写NULL
。是的,这就是我的意思,这就是我要说的。。。根据你的回答,我确实需要一份准备好的声明。我知道了,非常感谢!!好了,现在你改了。