簡體   English   中英

如何使用Java將Jtable中的選定復選框項保存到mysql?

[英]How to save the selected checkbox items in Jtable to mysql using java?

在我的項目中,我想安排課程,這是我的GUI。 PIC

有人可以指導我,如何將檢查的值保存到mysql數據庫中?

這是我的保存按鈕代碼:

 private void saveActionPerformed(java.awt.event.ActionEvent evt) {                                     
    try{
       String sql="insert into batch (course_code,batch_number,time,"+ time_table.getColumnName(time_table.getSelectedColumn()).toLowerCase()+")values(?,?,?,?)";

        pst=conn.prepareStatement(sql);

        String value1=course_code.getSelectedItem().toString();
        pst.setString(1,value1);

        String value2=course_code.getSelectedItem().toString();
        pst.setString(2, value2+"-"+year.getText()+"-"+group_no.getText());

        String value3=time_chooser.getSelectedItem().toString();
        pst.setString(3, value3);

       //String value4 = time_table.getModel().getValueAt(time_table.getSelectedRow(), 0).toString();
     //  pst.setString(4, value4);

    int a=time_table.getSelectedRow();
    int b=time_table.getSelectedColumn();
    String c=time_table.getModel().getValueAt(a, 0).toString();


            for(int i = 1 ; i < a ; i++)
                {
               for(int j = 1 ; j < b ; j++)
                    {
                  Boolean val1 = (Boolean)time_table.getModel().getValueAt(a, b);
                  if(Boolean.TRUE.equals(val1)) {
                   pst.setString(4, c );
                        }
                    }
                }

    pst.execute();
        JOptionPane.showMessageDialog(null, "Successfully Inserted");
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e); 
    }
} 

我想要這樣的東西。 在此處輸入圖片說明 彈出此錯誤。 在此處輸入圖片說明

我希望這就是您想要的(只要數據庫中的列與表中的列具有相同的名稱,它就應該起作用):

    String sql="insert into batch (course_code,batch_number,time,"+ time.getColumnName(time.getSelectedColumn()).toLowerCase() +")values(?,?,?,?)";

    String value4 = time.getModel().getValueAt(time.getSelectedRow, 0);
    pst.setString(4, value4);

一點解釋:

time.getColumnName(time.getSelectedColumn()).toLowerCase()

應該以小寫形式返回您選擇的日期。 它與數據庫中列的名稱相同(“星期一”,“星期三”)。 現在您可以將時間插入表格。 為此,您必須獲取選定的行,並與之對應,您可以從選中的行的第一個單元格中獲取該單元格的值,即您的時間。 最后,您可以將其插入數據庫。

編輯:

查看注釋(我無法測試代碼。如果其中有任何錯誤,請告訴我):

 private void saveActionPerformed(java.awt.event.ActionEvent evt) {
        try{
            for(int i = 0 ; i < time_table.getModel().getRowCount() ; i++)
            {
                for(int j = 1 ; j < time_table.getModel().getColumnCount() ; j++)
                {
                    String sql="insert into batch (course_code,batch_number,time,"+ time_table.getColumnName(j).toLowerCase()+")values(?,?,?,?)";

                    pst=conn.prepareStatement(sql);

                    String value1=course_code.getSelectedItem().toString();
                    pst.setString(1,value1);

                    String value2=course_code.getSelectedItem().toString();
                    pst.setString(2, value2+"-"+year.getText()+"-"+group_no.getText());

                    String value3=time_chooser.getSelectedItem().toString();
                    pst.setString(3, value3);

                    String c=time_table.getModel().getValueAt(i, 0).toString();
                    Boolean val1 = (Boolean)time_table.getModel().getValueAt(i, j);
                    System.out.println(val1 + "\t");
                    if(Boolean.TRUE.equals(val1)) {
                        pst.setString(4, c );
                        pst.executeUpdate();
                        pst.close();
                        JOptionPane.showMessageDialog(null, "Successfully Inserted");
                    }
                    System.out.println();
                }
                catch(Exception e){
                    JOptionPane.showMessageDialog(null, e);
                }
            }
        }

像字符串一樣將其保存在數據庫中的String變量中? 不太確定是否有可能。 希望能幫上忙。

暫無
暫無

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

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