我需要通过Access数据库中的搜索来修复对动态jTable的更新

时间:2014-12-28 18:27:44

标签: java swing jtable

我在从Microsoft Access数据库更新单个jtable时遇到问题。 我没有任何错误消息。我尝试使用类似的数据库查询,但我的jtable不会填充与数据库中存储的数据有关。

public TableModel setAuthorSearchEjournalTableValues(){
            String eJournalAuthor = jTextField30.getText();
            ResultSet tableData = DCE.searchEjournalbyAuthor(eJournalAuthor);
            try {
            ResultSetMetaData md = tableData.getMetaData();
            int columnCount = md.getColumnCount();
            Vector columns = new Vector(columnCount);
                for (int i = 1; i <= columnCount; i++) {
                    columns.add(md.getColumnName(i));
                }


            Vector data = new Vector();
            Vector row;

            while (tableData.next()) {

            row = new Vector(columnCount);
                for (int i = 1; i <= columnCount; i++) {
                row.addElement( tableData.getString(i) );

            }
            data.add(row);
            }
            DefaultTableModel tableModel = new DefaultTableModel(data, columns);
            return tableModel;

        //Debugging                

        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return null;

}` 

我的结果检索查询在这里

public ResultSet searchEjournalbyAuthor(String author){
            conn = Connect();
            try{
                String myQuery = "select AuthorDetails,Year,Titleofarticle,Journaltitle,volume,pagenumbers,URL,AccessedDate from Ejournalcitation where AuthorDetails = '"+author+"'";
                pst = conn.prepareStatement(myQuery);
                rs = pst.executeQuery();
                return rs;
            }catch(SQLException ex){
                ex.printStackTrace();
            }
            return null;
        }

将代码显示为

private void jTextField30KeyReleased(java.awt.event.KeyEvent evt) {                                         
    // TODO add your handling code here:
    if(jComboBox1.getSelectedIndex()==0&&jComboBox2.getSelectedIndex()==0){//BookTitle
            jTable1.setModel(setTitleSearchBookTableValues());
        }
        else if(jComboBox1.getSelectedIndex()==0&&jComboBox2.getSelectedIndex()==1){//BookAuthor
            jTable1.setModel(setAuthorSearchBookTableValues());
        }
        else if(jComboBox1.getSelectedIndex()==1&&jComboBox2.getSelectedIndex()==0){//WebSiteTitle
            jTable1.setModel(setTitleSearchWebSiteTableValues());
        }
        else if(jComboBox1.getSelectedIndex()==1&&jComboBox2.getSelectedIndex()==1){//WebSiteAuthor
            jTable1.setModel(setAuthorSearchWebSiteTableValues());
        }
        else if(jComboBox1.getSelectedIndex()==2&&jComboBox2.getSelectedIndex()==0){//Ejournaltitle
            jTable1.setModel(setTitleSearchEjournalTableValues());
        }
        else if(jComboBox1.getSelectedIndex()==3&&jComboBox2.getSelectedIndex()==1){//EjournalAuthor
            jTable1.setModel(setAuthorSearchEjournalTableValues());
        }
        else{
            JOptionPane.showMessageDialog(null, "Please enter a value and select the type of search");
        }
}

帮帮我!!提前致谢

1 个答案:

答案 0 :(得分:0)

你必须包括

DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
tableModel.fireTableDataChanged();

使用更正后的查询

String myQuery = "select AuthorDetails,Year,Titleofarticle,Journaltitle,volume,pagenumbers,URL,AccessedDate from Ejournalcitation where AuthorDetails like '%"+author+"%'";