Enregistrer un dataset dans SQLite [Résolu]

kyoku59 54 Messages postés vendredi 23 mai 2008Date d'inscription 21 septembre 2018 Dernière intervention - 13 sept. 2018 à 11:50 - Dernière réponse : Whismeril 12032 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 septembre 2018 Dernière intervention
- 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

Whismeril 12032 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 septembre 2018 Dernière intervention - 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
kyoku59 54 Messages postés vendredi 23 mai 2008Date d'inscription 21 septembre 2018 Dernière intervention - 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.

--
Whismeril 12032 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 septembre 2018 Dernière intervention - 14 sept. 2018 à 07:11
Si tu ne peux pas l’installer via nuget, il existe sur github
kyoku59 54 Messages postés vendredi 23 mai 2008Date d'inscription 21 septembre 2018 Dernière intervention - 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 ?
Whismeril 12032 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 septembre 2018 Dernière intervention - 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
kyoku59 54 Messages postés vendredi 23 mai 2008Date d'inscription 21 septembre 2018 Dernière intervention - 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
kyoku59 54 Messages postés vendredi 23 mai 2008Date d'inscription 21 septembre 2018 Dernière intervention - 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 !
--
Whismeril 12032 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 septembre 2018 Dernière intervention - 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.