Récupération d'informations dans une Database

Résolu
johnASP Messages postés 42 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 24 juin 2011 - 27 avril 2011 à 12:05
johnASP Messages postés 42 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 24 juin 2011 - 27 avril 2011 à 16:36
Bonjour à tous,

Me voici encore face à un probléme..
Je voudrais pouvoir récupérer des informations dans une Database (fichier .txt)
grâce à un objet nommé "Objet_de_la_database".
Aprés de nombreuses recherches, je me tourne vers vous pour un petit coup de pouce!!

Merci d'avance.

(PS: je programme en C++.Net sous Visual Studio 2005 )

8 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
27 avril 2011 à 16:07
Voilà comment je vois le truc (coder à l'arrache) :
Définition de mes objets où mapper :
public class DBO_BO {
public int msg_num = 0;
public string msg_name = "";
public int bits_count = 0;
public DBO_BO(int num, string name, int count) {
this.msg_num = num;
this.msg_name = name;
this.msg_num = num;
}
}
public class DBO_SG {
public string msg_name = "";
public int bits_count = 0;
public int msg_format = 0;
public bool signed = false;
public int factor = 0;
public int offset = 0;
public int min = 0;
public int max = 0;
public string unit = "";
//je me retape pas le constructeur, tu fais comme pour l'autre
public DBO_DG(..) {..}
}


Définition de ma classe de mapping :
public class Mapping {
public ArrayList DBO_BOs = new ArrayList();
public ArrayList DBO_SGs = new ArrayList();
// on parse direct' dans le constructeur
// et je te le fais version algo, histoire que t'ais quand même un peu à bosser :p
public Mapping(string filename) {
// je vérifie que le fichier existe bien
// je l'ouvre (avec un StreamReader par exemple)
// je le parcours ; pour chaque ligne lue
// si la ligne commence par BO_
// j'instancie un objet DBO_BO
// je split la ligne autour de ' '
// je remplis mon inst avec ces valeurs
// je l'ajoute à mon ArrayListe DBO_BOs
// si la ligne commence par SG_
// j'instancie un objet DBO_SG
// je split la ligne autour de ' '
// je remplis mon inst avec ces valeurs
// je l'ajoute à mon ArrayListe DBO_SGs
// sinon, je ne traite pas la ligne
// j'oublie pas de fermer mon reader ^^
}
}


Voilà, si je fais plus précis autant que je fasse directement ton boulot ><
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
27 avril 2011 à 13:14
Beaucoup de non sens dans ta question:

Je voudrais pouvoir récupérer des informations dans une Database (fichier .txt)

Une database c'est censé être du SQL, non ?
Que contient ton fichier txt ? Quelle structure a-t-il ? Que contient-il ?

grâce à un objet nommé "Objet_de_la_database".

Hein ? Là c'est vraiment incompréhensible.

je programme en C++.Net sous Visual Studio 2005

Choisir du C++.Net, c'est un choix très très étrange !
Généralement on choisit du "vrai" C++ ou du C#. Mais choisir un langage à cheval entre les deux, c'est pas extraordinaire. Si tu n'es pas obligé de choisir C++.Net, fais ton choix parmi les deux autres. Sinon, bonne chance, parce que c'est pas un cadeau ce langage...

Je te conseille de poster dans la section C# qui est sûrement plus proche du C++.Net que l'est le C++.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
27 avril 2011 à 13:39
Salut,

Ton fichier txt est dans quel format ?
Champs séparés par un token (point-virgule, tabulation ...) ?
Champs de longueur fixe ?
Sans cette info on pourra pas aller plus loin dans l'aide

@CptPingu : "Objet_de_la_database" doit être une classe de mapping.
Pour ce qui est du langage choisi, il fait bien comme il veut ^^
0
johnASP Messages postés 42 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 24 juin 2011 1
27 avril 2011 à 14:36
Pour le choix du language je ne l'ai pas choisis étant donné que c'est dans le cadre de mon stage.. Je viens de BTS Electronique donc je ne suis pas super callé en programation. Mais je compte mis mettre.

Mon fichier txt est composé de nombreuses parties de ce genre:

////////////////////////////////////////////////////////////////////////
BO_ 1792 Debug_700: 8 Vector__XXX
SG_ Stop_fender : 56|8@1+ (1,0) [0|0] "" Vector__XXX
SG_ start_stop_fender : 48|8@1+ (1,0) [0|0] "" Vector__XXX
SG_ Appui_start_cabine : 40|8@1+ (1,0) [0|0] "" Vector__XXX
SG_ Temps_appui_bouton_fender : 24|16@1+ (1,0) [0|0] "" Vector__XXX
SG_ Pto_State : 16|8@1- (1,0) [0|0] "" Vector__XXX
SG_ Tempo_PtoFenderSecurFilling : 0|16@1+ (1,0) [0|0] "" Vector__XXX
////////////////////////////////////////////////////////////////////////

Explication:

BO_ 1792 -> Message n°1792
Debug_700 -> Nom du message
8 -> Nombre d'octet
vector_XXX -> Indicateur de fin de ligne

Pour ce qui est des lignes commencant par "SG_":

Stop_fender -> Nom du message
56 -> Start bit
8 -> Nombre de bit
1 -> pour indiquer que le message est au format 'intel'
+ -> Non signé
(1,0) -> (Facteur,Offset)
[0|0] -> [Min|Max]
"" -> "Unitée"
vector_XXX -> Indicateur de fin de ligne

Voila voila!! lol
Donc en gros il faut que je parcourt tout mon fichier et que je récupére ces valeurs.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
27 avril 2011 à 14:51
Je suppose que tu as donc deux objets de mapping, qui pourraient se nommer DBObject_BO et DBObject_SG. Tu as alors 2 possibilités qui s'offrent à toi :
- tu parcours chaque ligne de ton fichier. Si elle commence par BO_ tu ajoutes un DBObject_BO à une collection de ce type, pareil pour SG_. De ce que je vois chaque valeur est séparée de la suivante par un espace, tu peux donc en toute simplicité spliter autour de ce caractère pour faire ton découpage.
- tu utilises le grouping des expressions régulières. Tu vas définir un pattern qui va te permettre de récupérer chaque information. Mais si tu débutes en prog je te déconseille cette solution qui peut être un peu compliquer à mettre en place (en fait c'est l'écriture du pattern qui risque de te causer de gros souci).

Si tu as un commencement de code, montre nous ça, on essaiera de t'orienter.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
27 avril 2011 à 14:51
Pour ce qui est du langage choisi, il fait bien comme il veut ^^

Je n'ai pas dit le contraire. Mais s'il vient demander conseil, il doit savoir que ce n'est pas le langage le plus approprié pour débuter dans le programmation.

Pour le choix du language je ne l'ai pas choisis étant donné que c'est dans le cadre de mon stage.

C'est donc une contrainte. C'est dommage que tu n'ais pas le choix.

Mon fichier txt est composé de nombreuses parties de ce genre [...]

Ok, alors ce n'est pas du tout une base de données. La question devrait être: "Comment lire des informations dans un fichier texte qui ont un format fixe, en C++.Net ?"

Encore une fois, le C++.Net est un langage interprété qui appartient à la famille du .Net (C#, VB.Net, J#, F#, etc...) et est plus proche du C# que du C++. Je t'invite à poser ta question sur le forum C#.

Pour tenter de répondre à ta question: Il me semble que tu peux lire un fichier avec un "StreamReader".

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
johnASP Messages postés 42 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 24 juin 2011 1
27 avril 2011 à 15:24
Pour l'instant, je n'ai pas vraiment commencé de programme. J'ai juste créé mon object et déclaré les variables dont je vais avoir besoin. Aprés j'ai commencé un algo sur papier pour m'aider à voir ce qu'il faut que je réalise.

Donc, d'aprés toi 'jopop', il faut que dans mon objet "Objet_de_la_database" je réalise des sortes de 'sous-objet' qui s'appellerai 'DBObject_BO' et 'DBObject_SG'.

Je ne comprend pas trop : "tu ajoutes un DBObject_BO à une collection de ce type,"
Peux-tu m'expliquer plus simplement ? si s'est possible..lol

D'accord 'cptPingu', je vais regarder pour 'Streamreader' et aller voir sur le forum C# .

Encore merci à vous de m'aider.
0
johnASP Messages postés 42 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 24 juin 2011 1
27 avril 2011 à 16:36
Un grand MERCI à toi "jopop"!
Je pence que je vais pouvoir m'en sortir avec sa.
0
Rejoignez-nous