IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Dataset avec SQLite


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut Dataset avec SQLite
    Bonjour,

    Je suis en train d'essayer de migrer mon appli d'une connexion à SQL Server (Local) à SQLite.
    Toute mon architecture est basée sur un dataset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                this.artcollectionDataSet = new ZartView.artcollectionDataSet();
    Ce dataset est maintenant supprimé de ma solution et j'ai besoin de le recréer.

    La dernière étape consisterait à remplir le dataset auparavant lié à la base SQL Server à la nouvelle Base SQLite à laquelle mon Appli est à présent connectée.
    Sauf que je ne sais pas comment créer un dataset avec SQLite.
    J'ai cherché, je vois un truc ici : https://stackoverflow.com/questions/...218483#9218483

    Mais je ne comprends pas la méthode (ou l'outil) utilisée dans ce lien.
    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Je précise que j'ai tenté d'ajouter un dataset via "Assistant de configuration de sources de données" mais l'opération échoue.
    Les étapes se passent bien jusqu'à "Terminer" et le message d'erreur s'affiche :


    Une erreur s'est produite lors de l'extraction des informations de la base de données :
    Le type sélectionné n'est pas pris en charge par le sélecteur.
    merci

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Il a ajouté un dataset vide pour ensuite drag on drop la table depuis server explorer
    Tu es connecté a ta base de donnés sqllite dans ton server explorer sur visual studio ?

  4. #4
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut
    Merci, youtpout978, pour ta réponse,

    En fait le Drag&Drop depuis server explorer ne fonctionne pas. C'était le problème.
    Et je ne voyais pas comment, sans cela, remplir le dataset vide (Créé bêtement en cliquant droit dans l'Explorateur de solution > ajouter> Nouvel élément>Dataset).
    Je viens à peine de trouver la solution. Je la détaille ci-dessous pour ceux qui se retrouveraient dans ma situation.

    En fait je ne faisais pas clairement la part des choses entre ce que Visual Studio m'offrait comme outils graphiques sympa et la réalité de ce que je voulais faire.
    Nul besoin d'avoir un objet Dataset dans "Sources de données", on peut initialiser et remplir un dataset dans le code !
    Boudiou !

    Deux ou trois choses ensuite :
    using System.Data.SQLite;
    Charger un package NuGet (Projet>...) ---> System.Data.SQLite
    Modifier les déclarations (je ne sais pas comment les nommer), c'est à dire : private SqlDataAdapter devient private SQLiteDataAdapter, SqlCommandBuilder devient SQLiteCommandBuilder, etc...
    Modifier quelques types de données dans les expressions. Par exemple SqlDbType.Int devient DbType.Int32, SqlDbType.NChar, SqlDbType.Text deviennent DbType.String, etc...
    Après cela je n'ai plus rien à modifier dans mon code (à l'origine conçu avec une connexion SQL Server, je le rappelle) !!

    J'ai juste ajouté un connexion.Close(); à la fin de chaque appel à la database.
    L'exemple qui m'a bien aidé se trouve ici :
    https://www.codeguru.com/csharp/.net...plication.html

    Je viens de faire un essai unitaire pour me connecter et lire les données dans mon ancienne base en .mdf convertie en .db
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    using System;
    using System.Data.SQLite;
    using System.IO;
    using System.Windows.Forms;
    using System.Data;
     
    namespace TEST_SQLite
    {
     
        public partial class Form1 : Form
        {
     
    private DataSet artcollectionDataSet;
    private DataTable dtItems;
    private SQLiteConnection connexion = null; // << Changé pour SQLite 
    private SQLiteDataAdapter itemsTableAdapter; // << Changé pour SQLite 
    private SQLiteCommandBuilder builderItems; // << Changé pour SQLite 
     
     
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                this.artcollectionDataSet = new DataSet();
     
                connexion = CreateConnection();
                Init_Dataset_Items();
            }
     
            static SQLiteConnection CreateConnection()
            {
                string MonApplipath =  Directory.GetCurrentDirectory();
                SQLiteConnection connexion;
                // Create a new database connection:
                connexion = new SQLiteConnection("Data Source=" + MonApplipath +"\\artcollection.db; Version = 3"); 
     
               // Open the connection:
             try
                {
                    connexion.Open();
                }
                catch (Exception ex)
                {
     
                }
                return connexion;
            }
     
            private void Init_Dataset_Items()
            {
                if (connexion == null) return;
                if (dtItems != null) artcollectionDataSet.Tables.Remove(dtItems);
                dtItems = new DataTable("Items");
                artcollectionDataSet.Tables.Add(dtItems);
     
                string strSelectItems = "SELECT * FROM Items ";
                itemsTableAdapter = new SQLiteDataAdapter(strSelectItems, connexion);
     
                builderItems = new SQLiteCommandBuilder();
                builderItems.DataAdapter = itemsTableAdapter;
                builderItems.GetUpdateCommand();
                builderItems.GetInsertCommand();
                builderItems.GetDeleteCommand();
     
                itemsTableAdapter.Fill(artcollectionDataSet, dtItems.TableName);
            }
     
     
     
            private void SQL_Charge_Dataset_Items(int KeyCat)
            {
                Console.WriteLine("SQL_Charge_Dataset_Items");
                if (connexion == null) return;
                if (dtItems != null) artcollectionDataSet.Tables.Remove(dtItems);
                dtItems = new DataTable("Items");
                artcollectionDataSet.Tables.Add(dtItems);
     
                // Create the SelectCommand.
                SQLiteCommand commandItems = new SQLiteCommand("SELECT * FROM Items " +
                    "WHERE REF = @REF", connexion);
     
                commandItems.Parameters.Add("@REF", DbType.Int32);
                commandItems.Parameters["@REF"].Value = KeyCat;
                itemsTableAdapter.SelectCommand = commandItems;
     
                builderItems = new SQLiteCommandBuilder();
                builderItems.DataAdapter = itemsTableAdapter;
                builderItems.GetUpdateCommand();
                builderItems.GetInsertCommand();
                builderItems.GetDeleteCommand();
     
                itemsTableAdapter.Fill(artcollectionDataSet, dtItems.TableName);
     
                connexion.Close(); // << Ajouté Close() avec SQLite
            }
     
     
            private void button1_Click(object sender, EventArgs e)
            {
                var Key = Int32.Parse(textBox1.Text);
                SQL_Charge_Dataset_Items(Key);
                label1.Text = artcollectionDataSet.Tables["Items"].Rows[0]["Titre"].ToString().Trim();
            }
        }
    }
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] remplir dataset avec procedure stockée
    Par HULK dans le forum Windows Forms
    Réponses: 7
    Dernier message: 18/07/2006, 12h05
  2. [VB.Net] Comment updater Dataset avec un OledbCommandBuilder ?
    Par dyree dans le forum Accès aux données
    Réponses: 3
    Dernier message: 04/07/2006, 13h50
  3. [VB 2005]Dataset avec plusieurs tables
    Par estelledany dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/05/2006, 14h25
  4. [C#] Remplissage d'un DataSet avec un fichier XML
    Par boleduch dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/10/2005, 18h13
  5. [VB.NET] Alimenter un dataset avec une chaine XML...
    Par David.V dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/05/2004, 09h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo