Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1719 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  probleme mise a jour de ma base de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme mise a jour de ma base de données

n°2182433
bloomingda​ls
Posté le 26-03-2013 à 12:06:08  profilanswer
 

voila ca fait deux jour que j'essaie de faire marcher mon code, il est trop compliqué.
 
au fait je veux mettre a jour une table de ma base de données a partir d'informations qui sont stockées dans un fichier (le fichier est mis a jour grace à une autre classe java). lorsque le nombre de lignes du fichiers reste le meme, tout se passe très bien car il suffit de comparer les lignes du fichiers et celle de la table.
 
le problème apparait lorsque le nombre de lignes du fichier augmente.
 
ce que je veux c'est faire c'est comparer la table et le fichier tant que le nombre de lignes et le meme puis pour les nouvelles lignes du fichier, faire une simple insertions dans la table
 
exemple si ceci est mon fichier 000000   et ceci est ma table 11111
                                              000000                                 11111
                                              000000
alors comparer les lignes 1 et 2 du fichier et de la table puis ajouter la 3eme ligne à la table , dans ce cas la table aura le contenu suivant
 
000000
000000
000000
 
si vous pouvez m'aider ca sera tres gentil  
 
merci bcp

mood
Publicité
Posté le 26-03-2013 à 12:06:08  profilanswer
 

n°2182435
gelatine_v​elue
Posté le 26-03-2013 à 12:13:48  profilanswer
 

En gros tu veux effacer ta table et insérer toutes les lignes du fichier?
C'est quoi qui te bloque exactement?

n°2182442
bloomingda​ls
Posté le 26-03-2013 à 12:30:04  profilanswer
 

non je ne veux pas effacer ma table.  
supposons que ma table contient 10 lignes et que mon fichier a été mis à jour et qu'il contient maintenant 15 lignes. ce que je veux faire c'est comparer les 10 premiere lignes du fichier et de la table, si elle sont identiques ne rien faire, sinon remplacer la ligne de la table par celle de du fichier
pour les cinq dernieres lignes  du fichier les insererer dans la table directement
 
voila un exmemple de ce que je veux faire
 
fichier        table
00000       111111
00000        000000
00000        111111
22222
 
000000 != 111111 alors remplacer 111111 par 00000
000000 = 000000 alors ne rien faire
000000 != 111111 alors remplacer 111111 par 00000
222222 n'existe pas dans table alors inserer 22222 dans la table

n°2182449
gelatine_v​elue
Posté le 26-03-2013 à 12:45:50  profilanswer
 

Oui, ça revient a effacer la table et insérer les lignes du fichier. Mais en plus compliqué.

n°2182450
bloomingda​ls
Posté le 26-03-2013 à 12:48:24  profilanswer
 

oui par ce que c'est optimisé la mise a jour n'est declenché que s'il y a mise a jour
 

n°2182454
gelatine_v​elue
Posté le 26-03-2013 à 12:58:04  profilanswer
 

Je sais pas si faire whatmille requêtes est plus optimisé que faire un batch insert, mais soit.
 
Voici l'algo en pseudocode:

Code :
  1. File fic = new File ("fichiertexte.txt" )
  2. Recordset rs  = new Sql("select * from matable" ).execute();
  3. String lignefichier;
  4. String ligneTable;
  5. while (fin de fichier non atteint)
  6. {
  7.   ligneficheir = nouvelle ligne du fichier;
  8.   lignetable = rs.next(); //nouvelle ligne de la table
  9.   if (lignetable == null) //fin de table
  10.     insérer la nouvelle valeur
  11.   else  if(rs.next() != ligne)
  12.     update la ligne
  13.   else
  14.     //ne rien faire, les lignes sont identiques
  15. }


 
Tu bloques sur quoi précisément?

n°2182456
willy le k​id
Posté le 26-03-2013 à 13:02:28  profilanswer
 

Tu es sûr que les nouvelles lignes sont toujours en fin de fichier ?
Que faire, si, dans le fichier, il y a de nouvelles lignes au milieu de celles déjà insérées ???
 
La solution est de trouver des clés :
- identifiant une ligne du fichier de manière unique
- identifiant un enregistrement en base de manière unique  
 
Tu lis une ligne du fichier
Tu formes la clé (par exemple, nom + adresse ip) pour la ligne
Tu cherches la clé dans les enregistrements en BDD
- si la clé est trouvée, tu remplaces les infos à remplacer (UPDATE)
- si non tu crées un enregistrement (INSERT)
 

n°2182457
bloomingda​ls
Posté le 26-03-2013 à 13:05:38  profilanswer
 

merci pour ta reponse,
 
en fait ce qui me bloque c'est que je veux mettre a jour ma table a partir d'un fichier et détecter aussi les changement sur cette table c'est à dire:
 
- lorsqu'il y une nouvelle ligne ajouté, (en indiquant laquelle)
- une ligne supprimé (en indiquant laquelle)
- une ligne qui existait avant mais où quelques un de ses champs ont changé de valeur

n°2182460
bloomingda​ls
Posté le 26-03-2013 à 13:08:15  profilanswer
 

willy c'est exactement ce que je veux faire

n°2182461
gelatine_v​elue
Posté le 26-03-2013 à 13:08:21  profilanswer
 

bloomingdals a écrit :

merci pour ta reponse,
 
en fait ce qui me bloque c'est que je veux mettre a jour ma table a partir d'un fichier et détecter aussi les changement sur cette table c'est à dire:
 
- lorsqu'il y une nouvelle ligne ajouté, (en indiquant laquelle)
- une ligne supprimé (en indiquant laquelle)
- une ligne qui existait avant mais où quelques un de ses champs ont changé de valeur


 
 
Ah mais oui mais non. C'est pas le même problème. Il te faut un identifiant unique permettant d'identifier une ligne, dans ton fichier et dans ta table.
C'est expliqué là: http://en.wikipedia.org/wiki/Primary_Key

mood
Publicité
Posté le 26-03-2013 à 13:08:21  profilanswer
 

n°2182464
bloomingda​ls
Posté le 26-03-2013 à 13:11:49  profilanswer
 

merci je vais essayer ca

n°2182474
bloomingda​ls
Posté le 26-03-2013 à 13:37:21  profilanswer
 

j'ai trouvé une autre methode, un peu plus simple  
 
je peux a chaque fois avant de mettre a jour ma table en creer une nouvelle a partir de mon fichier. puis calculer la difference entre ces deux tables ce qui me donnera les lignes qui ont changé celle qui ont disparues et celles qui on été ajouté
 
voici la structure de mes deux tables  
 
test  
 
id int (clé pimaire)
adresse (varchar)
system (int)
 
meme chose pour ma dexième table test3
 
comment je peux calsuler la différences en les deux tables???

n°2182492
willy le k​id
Posté le 26-03-2013 à 14:49:27  profilanswer
 

Mauvaise méthode.
Il est déconseillé d'utiliser des vues ou des tables intermédiaires dans la résolution des problèmes de base de données.
 
Par ailleurs, il n'y a pas de méthode miracle faisant le diff entre deux tables, tu dois coder cela à la main.

n°2182506
bloomingda​ls
Posté le 26-03-2013 à 15:31:23  profilanswer
 

merci,
 
est ce que tu peux me dire comment je fais si je veux tester si une entrée existe dans ma table et ci c'est vrai la récupérer ou bien donner sa position???

n°2182508
willy le k​id
Posté le 26-03-2013 à 15:32:14  profilanswer
 

Tu as déjà fait du sql ?

n°2182513
bloomingda​ls
Posté le 26-03-2013 à 15:37:29  profilanswer
 

oui mais j'ai du mal quand les requetes deviennt imbriquée.
 
j'ai essayé avec cette requuete  
select * from test where '10.0.0.0' in (select adresse from test);
 
mais ca me renvoie toute la table or ce que je veux c'est juste l'entrée de la table qui correspond a 10.0.0.0

n°2182516
willy le k​id
Posté le 26-03-2013 à 15:42:42  profilanswer
 

Il faut que tu te trouve un cours de sql
 
matche l'adresse exacte :  
  select * from test where adresse='10.0.0.0'
matche 10.0.0.* :
  select * from test where adresse like '10.0.0.%'

n°2182528
bloomingda​ls
Posté le 26-03-2013 à 16:09:16  profilanswer
 

merci bcp
 
c'est pas que j'ai besoin d'un court sql. c juste un manque de concentration , 12 heurs de suite sur un pc a programmer c pas facile du tt.
 
merci quand meme


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  probleme mise a jour de ma base de données

 

Sujets relatifs
Problème avec mon LoopGénération de doc pdf sur base d'un formulaire
Problème mise en ligne de mon site, suis je un boulet ???Problème jointure requête sql.
ecriture dans une base mysqlProblème de validation de formulaire
Problème d'affectation ( methode hongroise )problème programmation VBA
Problème de recherche 
Plus de sujets relatifs à : probleme mise a jour de ma base de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR