2016-09-29 3 views
0

Ich möchte einige Daten aus einer MySQL-Datenbanktabelle auswählen und diese ausgewählten Daten mithilfe JAVA in eine andere Tabelle in derselben Datenbank einfügen. Beide Tabellen haben die gleiche Struktur. Bis jetzt kann ich Daten auswählen, aber ich kann diese Daten nicht einfügen.Kopieren Sie eine Tabelle Daten und fügen Sie diese in eine andere Tabelle in der gleichen Datenbank mit JAVA?

Test und test_t sind die Tabellen.

item_id ist die einzige Spalte in der Tabelle.

Ich möchte auch Test Tabellendaten löschen, nachdem ich sie auf den Tisch test_t eingefügt. Diese Testtabelle ist wie eine temporäre Tabelle.

Dies ist meine Methode.

private void testM() throws Exception { 

     pooler = DBPool_SF.getInstance(); 
     dataSource = pooler.getDataSource(); 
     Connection con = dataSource.getConnection(); 
     con.setAutoCommit(false); 

     PreparedStatement ps,ps1 = null; 
     ResultSet rs = null; 

     String SEL_QUERY = "select item_id from test"; 
     String UPDATE_QUERY = "insert into test_t values(?)"; 

     ps = con.prepareStatement(SEL_QUERY); 
     rs = ps.executeQuery(); 
     ps1 = con.prepareStatement(UPDATE_QUERY); 

     while (rs.next()) { 

      String id = rs.getString("item_id"); 
      System.out.println(id); 
      ps1.setString(1,id); 
      ps1.addBatch(); 
      } 

      ps1.executeBatch(); 
     con.close(); 
    } 
+0

Haben Sie irgendwelche Fehler oder irgendeinen Hinweis darauf, dass etwas schief läuft? Abgesehen davon, warum tun Sie das nicht in der Datenbank mit ['INSERT ... SELECT '] (https://dev.mysql.com/doc/refman/5.7/en/insert-select.html)? – Thomas

+0

Was ist der Fehler, den Sie bekommen? – user5478656

+0

vor dem Schließen der Verbindung Commit verwenden. con.close(); con.commit(); – Prasath

Antwort

1

Der folgende Code wird funktionieren. Wenn Sie setAutoCommit (false) angeben, müssen Sie am Ende ein Commit durchführen.

 con.setAutoCommit(false); 
     PreparedStatement ps, ps1 = null; 
     ResultSet rs = null; 
     Statement st = null; 

     String SEL_QUERY = "select item_id from test"; 
     String UPDATE_QUERY = "insert into test_t values(?)"; 
     String DELETE_QUERY = "delete from test"; 

     st = con.createStatement(); 
     ps = con.prepareStatement(SEL_QUERY); 
     rs = ps.executeQuery(); 
     ps1 = con.prepareStatement(UPDATE_QUERY); 

     while (rs.next()) 
     { 

      String id = rs.getString("item_id"); 
      System.out.println(" item_id : " + id); 
      ps1.setString(1, id); 
      ps1.addBatch(); 
     } 

     ps1.executeBatch(); 
     st.execute(DELETE_QUERY); 

     con.commit(); 
     con.close(); 
+0

Vielen Dank, du hast meinen Tag gerettet. –

Verwandte Themen