2015-11-05 45 views
0

在我的程序中,我可以使用jTextfield“txtsearch”在程序中使用此代码在jTable中搜索数据。如何在jTable中使用带有jTextField的ComboBox使用MS Acess来搜索数据Netbeans

请看看我的实际计划。这里是一个图片:

http://i.stack.imgur.com/QZguC.png

这是我的JTextField “txtsearch” 代码。在此代码 中,我只能通过Name搜索jTable。我想通过使用jComboBox进行搜索。

String a=txtsearch.getText(); 
conn=MyConnection.ConnectDB(); 
String sql="Select* from StdRecord WHERE Name LIKE'"+a+"%'"; 
try{ 
    pst=conn.prepareStatement(sql); 
    rst=pst.executeQuery(); 
    jTable1.setModel(DbUtils.resultSetToTableModel(rst)); 
}catch(Exception e){} 

此外,基于我所上传的图片上,我的问题是:我怎样才能通过NameMiddleNameSurname使用组合框搜索的学生吗? 例如,我在组合框中选择MiddleName,然后当我输入jTextField“txtsearch”时,我只能在MiddleName表中搜索部分表格。

+0

**(1)**你可以有你的代码检查JComboBox的选择和价值在SQL命令文本中将'MiddleName'或'Surname'替换为'Name'。 **(2)**您应该使用*参数化查询*(即'... LIKE?'以及'pst.setString(...)')来保护自己免受SQL注入问题的困扰,姓氏'是'奥康纳'。 –

回答

1

这是我在jTextField“txtsearch”中的代码。在这段代码中,我只能通过Name来搜索jTable。我想通过使用jComboBox进行搜索。

您当前的SQL使用变量来搜索您想要搜索的数据,那么为什么您不能为要搜索的列使用变量?

String a=txtsearch.getText(); 
String column = comboBox.getSelectedItem().toString(); 
String sql="Select* from StdRecord WHERE " + column + "LIKE'"+a+"%'"; 

此外,为了使SQL更容易一些编码和维护你应该使用一个PreparedStatement

String sql = "Select* from StdRecord WHERE " + column + "LIKE ?"; 
PreparedStatement stmt = connection.prepareStatement(sql); 
stmt.setString(1, a + "%"); 
stmt.executeQuery(); 
+0

你好,先生@camickr。你是什​​么意思。对于我想要搜索的列?我只是一个初学者先生。请帮助我的项目:( –

+0

你有3列在你的数据库“姓名”,“中间名”,“姓氏”。你不能硬编码“姓名”在SQL中,因为你不知道用户的列想要搜索 – camickr

+0

我终于做到了,先生,我现在明白了,我的txtsearch字段是基于3列进行搜索的,谢谢先生,我明天可以通过我的项目!谢谢你的大力帮助sir camickr。 !! PS 对不起,语法。 –

相关问题