簡體   English   中英

帶有GUI的Java ResultSet SQL

[英]Java ResultSet SQL with GUI

我在下面的代碼中遇到一個奇怪的問題,它在沒有if else語句的情況下運行時可以正常工作,但是在使用if else時在jtable中不顯示任何結果。 我在這里缺少什么愚蠢的東西嗎?

        try {
        Class.forName(dbClass);
        Connection con = DriverManager.getConnection (dbUrl,dbUsername, dbPassword);
        Statement stmt = con.createStatement();

        String userQuery = "SELECT p_id AS 'Patient ID', forename AS 'Forename', surname AS 'Surname', address AS 'Address' FROM Patient WHERE surname LIKE '%"+s+"%'";
        ResultSet userResult = stmt.executeQuery(userQuery);

        if(!userResult.next())
        {
            JOptionPane.showMessageDialog(null, "No Results.");
        {
        else{
        ResultSetMetaData rsMetaData =userResult.getMetaData();
        DefaultTableModel dtm = new DefaultTableModel();
        int cols = rsMetaData.getColumnCount();
        Vector colName = new Vector();
        Vector dataRows = new Vector();

        for (int i=1; i<cols; i++){
        colName.addElement(rsMetaData.getColumnName(i));
        }
        dtm.setColumnIdentifiers(colName);

        while(userResult.next()){
            dataRows = new Vector();
            for(int j = 1; j<cols; j++){
                dataRows.addElement(userResult.getString(j));
            }
            dtm.addRow(dataRows);
        }
        searchTable.setModel(dtm);
        con.close();
        }
    } //end try

    catch(ClassNotFoundException e) {
        JOptionPane.showMessageDialog(null, "Database Error.");
        e.printStackTrace();
    }

    catch(SQLException e) {
        JOptionPane.showMessageDialog(null, "Database Error.");
        e.printStackTrace();
    }

我將netbeans用於GUI。

謝謝

連接對象(con)應該在if / else塊外部關閉。

此外,在else語句塊中兩次調用了userResult.next()。

您可以通過用do while循環替換while()來修復它:

do {
        dataRows = new Vector();
        for (int j = 1; j < cols; j++) {
            dataRows.addElement(userResult.getString(j));
        }
            dtm.addRow(dataRows);
    }
while (userResult.next());

請最后包括處理關閉連接並刪除其他資源的步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM