2014-03-06 50 views
0

就像标题所示,我想搜索SQL数据库并使用jTextField在keyReleased上的JTable上显示它。 这是我已经试过:如何搜索SQL数据库并在JTable上显示

private void jTextField2KeyReleased(java.awt.event.KeyEvent evt) {           

try{ 
    int get = (int)jTable2.getModel().getValueAt(jTable2.getSelectedRow(), 0); 
     String query = "SELECT FName FROM roominfo WHERE FName LIKE '%" + jTextField2.getText() + "%'"; 

     String url = "jdbc:mysql://localhost:3306/adv"; 
     Connection conn = DriverManager.getConnection(url,"root","sa"); 
     Statement st = conn.createStatement(); 
     rs = st.executeQuery(query); 
     jTable2.setModel(DbUtils.resultSetToTableModel(rs)); 

    conn.close(); 

} 
    catch (Exception e) { 
     System.err.println("Got an exception! "); 
     JOptionPane.showMessageDialog(null,"Got an exception!"); 
     System.err.println(e.getMessage()); 
    }   // TODO add your handling code here: 
}  

但是,我不能做正确。什么似乎是问题?它仍然不搜索。

+1

你永远不会调用'rs.next()'。请阅读JDBC教程:http://docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/GettingStartedTOC.fm.html –

+1

为什么在世界上你每次都试图访问数据库密钥被释放?请解释你正在努力完成什么,也许我们可以提供更好/更正确的解决方案 –

+1

_不要在EDT上运行查询; _do_参见[* Swing中的并发*](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)和[*如何使用Swing定时器*](http://docs.oracle.com/ JavaSE的/教程/ uiswing /杂项/ timer.html)。 – trashgod

回答

2

keyPressed

try{ 
     String url = "jdbc:mysql://localhost:3306/adv"; 
     Connection conn = DriverManager.getConnection(url,"root","sa"); 
     Statement st = conn.createStatement(); 
     String query = "SELECT CustomerNo, FName, FROM roominfo WHERE FName LIKE '%" + jTextField2.getText() + "%'"; 
     rs = st.executeQuery(query); 
     jTable2.setModel(DbUtils.resultSetToTableModel(rs)); 

    conn.close(); 

} 
    catch (Exception e) { 
     JOptionPane.showMessageDialog(null,"Got an exception!"); 
     System.err.println(e.getMessage()); 
    }   
相关问题