Ciao a tutti. Ho realizzato un software che effettua una sorta di catalogazione dei file scelti. Praticamente salva all'interno di un DB, in MySQL, la lista delle varie informazioni dei file scelti. Attenzione...non vengono salvati i file, ma solo le informazioni quali nome, dimensione, ecc...
Ho lanciato una catalogazione di 34680 file e ci ha messo a scriverli sul DB ben 14 minuti.
Premetto che il software è in Java e il DB è in MySQL e utilizzo l'ultimo driver mysql-connector-java-5.1.17. Vi posto inoltre i metodi principali per eseguire la query:
Per connettermi in una classe ho inserito questo metodo:
Fin qui tutto apposto e per lavorare sul DB invio questa query:codice:private Boolean Connessione(){ XML xml = new XML(); xml.getXML(); connesso=false; try{ Class.forName("com.mysql.jdbc.Driver"); connessioneDB = DriverManager.getConnection("jdbc:mysql://" + xml.parametriConnessioneDB[0] + ":" + xml.parametriConnessioneDB[1] + "/" + xml.parametriConnessioneDB[2] + "?user=" + xml.parametriConnessioneDB[3] + "&password=" + xml.parametriConnessioneDB[4]); connesso=true; }catch(Exception exc){ frmConfiguraConnessione frame = new frmConfiguraConnessione(); frame.setVisible(true); } return connesso; }
Che viene data in pasto al metodo presente sempre dentro la classe dove effettuo la connessione al DB:codice:for(int i = 0; i <arraySize; i++){ convertiNomeFilePerSQL = listaFile[i].getName(); convertiPathPerSQL = listaFile[i].getParent(); db.EseguiSQL("INSERT INTO precatalogati " + "(nomefile, tipofile, " + "dimensionefile, tiposupporto, nomesupporto, " + "datacatalogazione, path) VALUES " + "('" + convertiNomeFilePerSQL.replaceAll("'", "''") + "', " + "'" + getExtension(listaFile[i]) + "', " + "" + listaFile[i].length() + ", " + "'" + cmbTipoSupporto.getSelectedItem() + "', " + "'" + txtNomeSupporto.getText() + "', " + "'" + txtDataCatalogazione.getText() + "', " + "'" + convertiPathPerSQL.replaceAll("'", "''") + "');"); }
Premetto che il programma funziona alla perfezione, ma purtroppo ha questo enorme inconveniente relativo alla velocità di esecuzione delle query. Potreste aiutarmi? Grazie.codice:public void EseguiSQL(String sql){ try{ PreparedStatement ps = connessioneDB.prepareStatement(sql); ps.executeUpdate(); ps.close(); }catch(SQLException exc){ JOptionPane.showMessageDialog(null, exc.getMessage().toString(), "Errore!", JOptionPane.ERROR_MESSAGE); } }

Rispondi quotando