簡體   English   中英

Java-Swing:檢索和更新數據庫中的詳細信息

[英]Java-Swing: Retrieve and update details in DB

我是初學者,我正在開發一個帶有一些 CRUD 功能的 Swing 桌面應用程序。 雖然我的插入和刪除工作正常,但更新和檢索卻沒有。

這些是服務方法:

  public void select(){
        String sql = "SELECT num_of_working_days FROM working_days_and_hours";
        
         try {
            connection = SQLite_Connection.connect();
            stmt = connection.createStatement();
             resultSet = stmt.executeQuery(sql);
            System.out.println("DB status: "+ resultSet);
        } catch (Exception ex) {
            System.out.println(ex.toString());
            //Logger.getLogger(Services.class.getName()).log(Level.SEVERE, null, ex);
        }finally {      
                 // Services.colsedConnections();
        }  
    }
    
   
     
     public void update(int id, String num) {
        String sql = "UPDATE working_days_and_hours SET num_of_working_days = '"+num+"' WHERE id = '"+id+"'";

        try {
            connection = SQLite_Connection.connect();
            preparedStatement = connection.prepareStatement(sql);
            
            preparedStatement.setInt(1, id);
            preparedStatement.setString(2, num);

            preparedStatement.executeUpdate();
            
            System.out.println("DB status: "+ preparedStatement);
            
        } catch (Exception ex) {
            System.out.println(ex.toString());
            //Logger.getLogger(Services.class.getName()).log(Level.SEVERE, null, ex);
        }finally {      
                 // Services.colsedConnections();
        }  
    }
        

我只想檢索文本字段的值並更新文本字段中的值。

到目前為止,這是我嘗試實現它的方式:

   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   
//here I have set id as 1 for the sake of testing                                     
            numberOfDays.update(1, jTextField1.getText());
    }   

   private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        jTextField2.setText(numberOfDays.select());
    }   

但是對於更新,我收到 ArrayIndexOutBounds 錯誤。 對於檢索,我不允許無效。

String sql = "UPDATE working_days_and_hours SET num_of_working_days = '"+num+"' WHERE id = '"+id+"'";

這不是您為PreparedStatement構建 SQL 的方式。 PreparedStatement是添加一個“?” 作為令牌,然后用有效數據替換令牌。

這使得 SQL 更易於編碼和閱讀,並且會減少出現語法錯誤的機會。

PreparedStatement的格式類似於:

String sql = "UPDATE Page SET Title = ? WHERE Name = ?";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString( 1, title );
stmt.setString( 2, name );
stmt.executeUpdate();
stmt.close();

其中“title”和“name”是包含數據的變量。

所以這不是 Swing 的問題。 首先讓 SQL 處理硬編碼數據。 然后擔心從文本字段或其他 Swing 組件獲取數據。

暫無
暫無

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

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