Enregistrer un dataset dans SQLite [Résolu]

Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
21 septembre 2018
- 13 sept. 2018 à 11:50 - Dernière réponse :
Messages postés
12263
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 21 sept. 2018 à 08:19
Bonjour,

Je dois m’emmêler les pinceaux et comme je n'avance pas, je demande votre aide XD

J'utilise un fichier dataset ou je charge mes données depuis SQLite.

Mes champs se chargent grâce à un BindingSource :
private void listDepot_SelectionChangeCommitted(object sender, EventArgs e)
        {
            this.pARAMETRAGE_RHTableAdapter.FillBy(this.gestionDesUtilisateursREFLEXDataSet.PARAMETRAGE_RH, new System.Nullable<long>(((long)(System.Convert.ChangeType((long)listDepot.SelectedValue, typeof(long))))));
        }


Je mets à jour mon dataset derrière un bouton quelconque :
gestionDesUtilisateursREFLEXDataSet.AcceptChanges();
gestionDesUtilisateursREFLEXDataSet.PARAMETRAGE_RH.AcceptChanges();
this.pARAMETRAGERHBindingSource.EndEdit();


J'arrive à en créer une nouvelle mais pas à mettre à jour une ligne précise.
Il me manque une commande pour pouvoir faire la même chose dans ma base SQLite ou alors j'ai oublié une étape...
J'ai en tête une commande comme pour SQL Serveur en utilisant LINQ (context.saveChange)

Si quelqu'un peu me mettre sur la bonne voix ça serait top.

Merci

ps : je n'ai pas forcément bien choisi mes noms de variable :/

--
Afficher la suite 

Votre réponse

8 réponses

Messages postés
12263
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 13 sept. 2018 à 21:24
0
Merci
Bonjour

je suis peu adepte des bases de données, mais de Linq oui, donc quand j'ai dû utiliser une base SQlite, j'ai utilisé le package Nuget sqlite-net qui prend directement Linq en charge.


Attention cependant, pour une obscure raison, la requête différée de marche pas. Il faut forcer avec ToList() par exemple.


            connection = new SQLiteConnection(Chemin);

            List<UneClasse> collection = (from r in connection.Table<AutreClasse>().ToList()//si pas ToList, ça marche pas 
                                  where //.......
                                  select new UneClasse
                                  {
                                      .........
                                  }).ToList();

Commenter la réponse de Whismeril
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
21 septembre 2018
- 14 sept. 2018 à 05:54
0
Merci
Le problème c'est que je travail sur une version Microsoft Visual Studio 2010 et ce package n'est pas dispo :(

J'ai beau chercher mais aucun moyen de mettre une ligne à jour en une ou 2 lignes. Du coup j'ai dans l'idée de supprimer la ligne et de la recréer avec les bons champs... C'est pas du jolie mais bon.
Ou alors écrire un paquet de ligne avec tout le tralala (connecteur, commande etc) pour faire cette modif.

J'me tâte.

En tout cas merci pour le tuyau, j'le garde de côté pour chez moi.

--
Messages postés
12263
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 14 sept. 2018 à 07:11
Si tu ne peux pas l’installer via nuget, il existe sur github
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
21 septembre 2018
- 14 sept. 2018 à 07:51
Compliqué a installé mais c'est une chose faite.
Dans ton exemple,
List<UneClasse> collection 
je dois préalablement créer une classe en référence à ma table ?
Messages postés
12263
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 14 sept. 2018 à 08:16
Oui, voir ce tuto
https://www.journaldunet.com/developpeur/outils/tutoriel-sqlite.shtml

Ils utilisent le mode asynchrone, mais ça marche aussi en synchrone. Dans mon projet, je n’ai pas énormément de données alors je ne me suis pas « embêté » avec les thread
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
21 septembre 2018
- 14 sept. 2018 à 08:22
Yes merci c'est ce qu'il me fallait pour comprendre.
Effectivement je dois créer une classe par table.
Commenter la réponse de kyoku59
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Dernière intervention
21 septembre 2018
- 21 sept. 2018 à 07:09
0
Merci
Pour ceux a qui ça intéresse, la solution est toute bête....

Par exemple, derrière un bouton SAVE :
this.nomDuBindingSource.EndEdit();
nomTableAdapter.Update(nomDataSet);


Pour moi ça ne marchais pas car j'avais une ligne qui rechargé mon dataset avant modif....
Bref erreur toute bête.

@Whismeril, j'ai étudié ta solution mais tournant sous Visual Studio 2010 je suis très très limité et pour contourner les manquants comme la gestion de ASYNC c'est une horreur.

Pour info, je linq sans problème en SQLite grâce à mon dataset.

Merci !
--
Messages postés
12263
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 21 sept. 2018 à 08:19
Ce qui compte c’est que tu aies trouvé une solution.
Pense à marquer le sujet résolu avec la roue dentée tout en haut du fil.
Commenter la réponse de kyoku59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.