2016-03-21 6 views
0

Dies ist der Code, den ich Daten aus jtable zur Datenbank einfügen verwendet:Einfügen von Daten aus jtable zu SQLite-Datenbank

for(int i=1 ; i <= table.getRowCount() ; i++){ 

    String productid = table.getValueAt(i, 0).toString(); 
    String name = table.getValueAt(i, 1).toString(); 
    String quantity = table.getValueAt(i, 2).toString(); 
    String totalprice = table.getValueAt(i, 4).toString(); 

    try { 

     String query = "insert into sales (productid,customerid,name,quantity,discount,totalprice,paymentmethod) values (?,?,?,?,?,?,?)"; 
     pst = con.prepareStatement(query); 
     pst.setString(1, productid); 
     pst.setString(2, customerid.getText()); 
     pst.setString(3, name); 
     pst.setString(4, quantity); 
     pst.setString(5, discount.getText()+"%"); 
     pst.setString(6, String.valueOf(totalprice)); 
     pst.setString(7, paymethod.getSelectedItem().toString()); 
     pst.execute(); 

     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 

und wenn ich auf die Schaltfläche Speichern klicken, um es ist mir ein Fehler.

Exception in thread "AWT-Eventqueue-0" java.lang.ArrayIndexOutOfBoundsException: 1> = 1 bei java.util.Vector.elementAt (unbekannte Quelle) bei javax.swing.table.DefaultTableModel. getValueAt (Unknown Source) bei javax.swing.JTable.getValueAt (Unknown Source) bei gestioner.Sale $ 8.actionPerformed (Sale.java:332) bei javax.swing.AbstractButton.fireActionPerformed (Unknown Source)

+2

pls Fehler stacktrace – Cootri

+0

Exception in thread "AWT-Eventqueue-0" java.lang bieten. ArrayIndexOutOfBoundsException: 1> = 1 \t bei java.util.Vector.elementAt (Unknown Source) \t bei javax.swing.table.DefaultTableModel.getValueAt (Unknown Source) \t bei javax.swing.JTable.getValueAt (Unknown Source) \t bei gestioner.Sale $ 8.actionPerformed (Sale.java:332) \t bei javax.swing.AbstractButton.fireActionPerf ormed (Unbekannte Quelle) –

+0

Wenn Sie zwei Zeilen haben, zählen Sie von 1 bis 2? – hagello

Antwort

1

Iterate durch Deafault Tabelle Modell

public String getTableData (JTable table) { 
DefaultTableModel dtm = (DefaultTableModel) table.getModel(); 
int nRow = dtm.getRowCount(), nCol = dtm.getColumnCount(); 
String tableData = " "; 
for (int i = 0 ; i < nRow ; i++) 
    for (int j = 0 ; j < nCol ; j++) 
     // tableData = dtm.getValueAt(i,j); 

String productid = table.getValueAt(i, j).toString(); 
        String name = table.getValueAt(i, j).toString(); 
        String quantity = table.getValueAt(i, j).toString(); 
        String totalprice = table.getValueAt(i, j).toString(); 

        try { 

         String query = "insert into sales (productid,customerid,name,quantity,discount,totalprice,paymentmethod) values (?,?,?,?,?,?,?)"; 
         pst = con.prepareStatement(query); 
         pst.setString(1, productid); 
         pst.setString(2, customerid.getText()); 
         pst.setString(3, name); 
         pst.setString(4, quantity); 
         pst.setString(5, discount.getText()+"%"); 
         pst.setString(6, String.valueOf(totalprice)); 
         pst.setString(7, paymethod.getSelectedItem().toString()); 
         pst.execute(); 

        } catch (Exception e) { 
         JOptionPane.showMessageDialog(null, e.getMessage()); 
        } 
return tableData; 
    } 
+0

es gibt mir doppelte Daten auf der Datenbank, es gibt mir 5 Zeilen, und auf der JTable seine einzige Zeile –

+0

@ FadelD könnten Sie Stellen Sie uns Screeshots Ihrer Jtable mit Daten zur Verfügung und wählen Sie Statement von SQL-Abfragen –

+0

Ich löste das Problem, indem ich die Schleife mit j löschte und die Anzahl der Spalten um 0 1 2 3 4 änderte –

0

basierend auf der Fehlermeldung "ArrayIndexOutOfBoundsException" versuchen Sie ein Element aus dem Zeilenbereich zu lesen; Ihre for-Schleife von 0 nicht 1 ist, und zu stoppen, bevor Zeilenanzahl beginnen sollte, sollte wie folgt aussehen Ihre for-Schleife:

for(int i=0 ; i <table.getRowCount() ; i++){... 
Verwandte Themen