将mysql中的数据库列值与java中的另一个String进行比较

时间:2013-07-11 10:55:58

标签: java mysql jframe

我有一个包含以下布局的数据库

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);
    }
}

4 个答案:

答案 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();