2015-01-21 94 views
1

我正在使用Java,Postgres,并试图使用select查询从数据库中选择一些数据,并将结果设置在表上。但我得到一张空桌子!即使选择的值是数据库PostgreSQL SELECT查询堆栈?

这里是代码:

JButton btnNewButton = new JButton("Rechercher"); 
     btnNewButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 

       Connection conn = conectar(); 
       String b = "Ordre"; 
       String a = (String) comboBox.getSelectedItem(); 
       System.out.println("ordre = " + a); 

       if(a == b) { 

        String sql2 = "select * from ordre where num_ordre = '" +textArea.getText()+"'"; 
        Statement stm2; 

        try { 

         stm2 = conn.createStatement(); 
         ResultSet rs1 = stm2.executeQuery(sql2); 
         while (rs1.next()) { 

          table.setModel(DbUtils.resultSetToTableModel(rs1)); 

         } 
         rs1.close(); 
         stm2.close(); 
        } 

        catch(SQLException e2) { 

         System.out.println("Error = " + e2.getMessage()); 

        } 
       } 

       else { 

        System.out.println("LA CONDITION N EST PAS SATISFAITE"); 
       } 

      } 
+1

您是否确定textArea.getText()包含您所期望的内容? num_ordre是一个varchar列吗?另外,用'=='进行字符串比较在Java中是不可以的。改用'if(a.equals(b))'。 – adamdc78 2015-01-21 00:57:41

+0

请勿将用户输入的字符串连接到SQL语句中。改用'PreparedStatement'。 – 2015-01-21 07:16:07

+0

关于如果条件确定,它不会堆叠在这里,否则它会自动移动到“其他”!即使我删除if条件我得到一个空表,所以我认为问题来自sql查询,我会尝试Preparestatement并回答你非常感谢你的帮助 – geosevda 2015-01-21 09:07:11

回答

0

你不应该使用==运营商在Java中比较String秒 - 它会检查两个对象都是同一参考 ,而不是他们的内容是平等的。相反,您应该使用equals(Object)方法:

if (a.equals(b)) { // Instead of using ==