我有一个包含以下布局的数据库
databasename:macfast
table name:users
columns
id,
user_name,
password,
fullName
我想从列user_name中检索所有值,并使用另一个已从TEXTFIELD
检索到的字符串检查每个值。但我不能(NullpointerException
)。请帮帮我。
public void deleteFclty() {
PreparedStatement stmt = null;
ResultSet rs = null;
String username=removeText.getText();
String qry = "SELECT user_name From users ";
try {
stmt = (PreparedStatement) connection.prepareStatement(qry);
rs = stmt.executeQuery();
while (rs.next()) {
String check=(rs.getString("user_name"));
System.out.println(check);
if(check.equals(username)){
Util.showErrorMessageDialog("EQUAL");
}else{
Util.showErrorMessageDialog("NOT EQUAL");
}
}
}catch (SQLException ex) {
Logger.getLogger(RemoveFaculty.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:2)
问题在于准备好的声明(你没有把id放到声明中,而不是问号)。
另外我建议将条件设置为“username.equals(check)”,这可以防止空指针异常。
答案 1 :(得分:1)
"SELECT user_name From users where id=?"
此查询有一个参数,您没有为其设置任何值。使用PreparedStatement#setInt()
或类似设置,例如:
stmt.setInt(1, 1);
答案 2 :(得分:0)
以下评论中的问题:
List<String> values = new ArrayList();
while (rs.next()) {
values.add(0,rs.getString(<>))
}
// here do whatever you want to do...
// for example
for ( String value: values )
{
// check if value == TEXTFIELD
// if true then do something..
// else don't do anything
}
答案 3 :(得分:0)
问题在于PreparedStatement,因为您正在使用问号?在您的查询中,您必须设置Id值。
String qry = "SELECT user_name From users where id=?";
stmt = (PreparedStatement) connection.prepareStatement(qry);
stmt.setInt(1,1001);
rs = stmt.executeQuery();