cs_Taz1984
Messages postés47Date d'inscriptionlundi 20 juillet 2009StatutMembreDernière intervention13 mars 2013
-
22 sept. 2009 à 14:30
padela007
Messages postés10Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention25 mai 2010
-
22 mai 2010 à 00:36
Bonjour,
J'ai une table nomée fichiercomplet, j'ai besoin de copier certains champs de cette table vers la table table_transaction_journal.
Pour cela voici ce que j'ai effectué :
public void RecuperLesChamps() throws SQLException{
bdd.lire("SELECT * FROM fichiercomplet");
ResultSetMetaData resultMeta = (ResultSetMetaData) bdd.resultat.getMetaData();
String VALUES ;
VALUES="";
//System.out.println(resultMeta.getColumnCount());
int i = 1;
int j = 0;
while(bdd.resultat.next()){
VALUES = "'"+bdd.resultat.getObject(1).toString()+"'," + "'"+bdd.resultat.getObject(9).toString()+"',"+
"'"+bdd.resultat.getObject(4).toString()+"'," + "'"+bdd.resultat.getObject(3).toString()+"',"+
"'"+bdd.resultat.getObject(10).toString()+"',"+ "'"+bdd.resultat.getObject(2).toString()+"',"+
"'"+bdd.resultat.getObject(14).toString()+"'";
bdd.miseAJour("insert into table_transaction_journal values ("+VALUES+")");
System.out.println("Insertion de la ligne n° "+i+" Réussi \n");
i++;
}
}
Et j'ai cette erreur je comprend pas trop, je me suis dit peux etre que lorsque je met par exemple bdd.resultat.getObject(1).toString() il prennait le premier champ de la premiere ligne dans result ensuite le premier champ de la deuxième ligne or j'ai l'impression qu'il veux prendre toujours le premier champ de la premiere ligne malgré que l'on soit passer dans la deuxiéme.
J'aimerai bien savoir comment faire pour résoudre mon problème si quelqu'un a une idée !
Merci d'avance
A voir également:
Java.sql.sqlexception: operation not allowed after resultset closed
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 sept. 2009 à 14:55
Salut,
Pourquoi vouloir copier ligne à ligne avec autant de requête INSERT qu'il y a de ligne ? Ca va être lent, source de bugs, et pas très joli à coder (la preuve !).
Fais plutôt une requête SQL qui te fera l'insert en une seule requête de toutes tes données... Ce sera bien plus rapide et bien plus sûr !
______________________________________
DarK Sidious
cs_Taz1984
Messages postés47Date d'inscriptionlundi 20 juillet 2009StatutMembreDernière intervention13 mars 2013 22 sept. 2009 à 15:07
tu as raison mais je vois pas comment faire.
je veux pas tout prendre de la première table uniquement 7 champs de 14 !
pourrai tu me donner un exemple STP.
Merci
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 22 sept. 2009 à 15:35
Salut,
Et bien au lieu de faire un select * (qui est plus lent qu'un select avec les champs nomme ceci dit au passage), il te suffit de faire un select avec les champs que tu veux récupèrer.
En gros, ca donne :
insert into TABLE_DESTINATION select CHAMP9, CHAMP4, CHAMP3, CHAMP10, CHAMP2, CHAMP14 from SOURCE
______________________________________
DarK Sidious
jButton3.setText("Afficher la liste des ports critiques ouverts");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
port_crit_ouvert(evt);
}
});
private void port_crit_ouvert(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_port_crit_ouvert
String port_crit[][] = new String[600][600];
String resultat[][] = new String[600][600];
String menace[][] = new String[600][600];
String requete="SELECT * FROM port_critique";
String requete2="SELECT Num_port,Application,Resultat FROM resultat";
String requete3="INSERT INTO menace VALUES(?,?,?,NOW())";
String requete4="SELECT Num_port FROM menace";
String requete5="DELETE FROM menace WHERE Resultat = "fermé"";