Defsam
Messages postés4Date d'inscriptionvendredi 5 mars 2010StatutMembreDernière intervention 8 octobre 2010
-
5 mars 2010 à 07:23
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
8 mars 2010 à 10:22
Bonjour tout le monde,
Je débute dans le monde de la programmation et je souhaite concevoir un petit programme pour une association. J'ai trouvé des super tutos sur ce site qui m'ont permis de pas mal avancer mais la où je bloque (malgré mes recherches) est le point suivant : je voudrais pouvoir faire en sorte que les données entrées dans le logiciel soient sauvegardées mais pas sur un fichier texte ou autre. L'idéal (si c'est possible) serait de disposer juste de l'exécutable avec les données inscrites dessus.
J'utilise VS 2008 express pour le développement. Merci d'avance pour votre aide.
Perecastorr
Messages postés39Date d'inscriptionlundi 10 novembre 2008StatutMembreDernière intervention 7 septembre 20101 5 mars 2010 à 10:41
Salut,
Tu ne peux pas stockés des données directement sur un executable car ce n'est pas un fichier qui peut changer. Une fois compiler, l'executable reste toujours le même.
Pour stocker des données, le mieux est d'utiliser une base de données. Et là, niveau choix tu as :
- SQL server (microsoft)
- Oracle (sun)
- MySQL (Open Source)
- PostGreSQL (Open source)
Tout les choix sont bon. Mais pour manipuler les base de données dans ton logiciels, tu va devoir encore apprendre plein de trucs :)
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 5 mars 2010 à 12:13
Tout dépend de ce qu'il faut enregistrer.
Une base de données n'est pas toujours le meilleur choix à faire, surtout si Defsam veut avoir le moins de fichiers possibles.
Cependant, comme le dit Perecastorr, tu ne peux pas modifier ton exécutable, tout simplement parce qu'il est lancé, donc verrouillé.
Ton programme peut générer un fichier, via par exemple
StreamWriter sw = File.Open(monFichier, FileMode.Create);
sw.WriteLine("Du texte"); // Ecrit dans le fichier
sw.Close();
Et pour lire
StreamReader sr = File.Open(monFichier, FileMode.Read);
string texte = sr.ReadLine(); // Lit une ligne dans le fichier
sr.Close();
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Defsam
Messages postés4Date d'inscriptionvendredi 5 mars 2010StatutMembreDernière intervention 8 octobre 2010 6 mars 2010 à 14:58
Bonjour et merci pour vos réponses rapides. J'y vois un peu plus clair maintenant. Finalement j'ai décidé de me porter vers l'utilisation d'une base de donnée en me servant de SQLite. (j'ai quelques bases en SQL).
Actuellement j'ai une windows form avec une partie calculatrice à droite (avec composant date) et une listbox à droite. Cette listbox reçoit le total généré par la calculatrice grâce à un bouton "ajouter". Les informations constituent donc une liste d'informations datées.
1/ Est-il possible d'avoir les informations de la listbox toujours présentes même après avoir quitté et relancé le programme?
2/ Est-il possible de créer un bouton supprimer qui supprime simultanément une ligne donnée de la listbox et l'information correspondante dans la base de données?
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 8 mars 2010 à 10:22
Salut
1/ L'important est de lancer la sauvegarde avant la fermeture de ton fichier. Tu peux par exemple utiliser l'événement Form.Closing qui sera appelé lorsque tu demandes la fermeture de ta form.
L'autre solution consiste à sauvegarder dès que tu effectues une modification.
Et lors de l'ouverture de ton programme, tu charges la valeur s'il y en a une.
2/ Bien sûr. Il suffit, lors de l'événement Button.Click d'utiliser ListBox.Items.RemoveAt(indexCorrespondant), puis l'instruction SQL DELETE.
PS : Si tu veux passer par un fichier plutôt qu'une base de données, c'est très simple :
Chargement : Si le fichier existe (File.Exists(...)), tu charges les valeurs avec des StreamReader.ReadLine() successifs et tu les insères dans ta ListBox.
Fermeture de la fenêtre (Form.Closing) : Tu ouvres le fichier en mode écriture / remplacement, et tu utilises la méthode StreamWriter.WriteLine(...) pour chaque valeur dans ta ListBox.
Bouton supprimer : Tu ne touches pas à ton fichier, qui de toutes façons aura les bonnes valeurs quand tu fermeras ton programme.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -