Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement de logiciels
  4. C#
  5. [Tutoriel] Commencer à utiliser SQLite avec C#

[Tutoriel] Commencer à utiliser SQLite avec C#

Scheduled Pinned Locked Moved C#
14 Posts 5 Posters 21.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • vfrzV
    vfrzV
    vfrz
    wrote on last edited by
    #1

    <p>
    Bonjour, bonsoir !<br/>
     <br/>
    Aujourd'hui nous allons apprendre à utiliser <strong>SQLite </strong>en <strong>C#</strong>, pour cela je divise le tutoriel en trois grandes parties :<br/>
     <br/>
    I • SQLite, c'est quoi ?<br/>
    II • Pour quelles utilisations ?<br/>
    III • Utiliser SQLite<br/>
     <br/><span style="font-size:18px;"><u><strong>I • SQLite, c'est quoi ?</strong></u></span><br/>
     <br/><strong>SQLite</strong> est une bibliothèque écrite en C qui propose un moteur de base de données relationnelle accessible par le langage <strong>SQL</strong>. <strong>SQLite </strong>implémente en grande partie le standard SQL-92 et des propriétés ACID.<br/>
     <br/>
    Contrairement aux serveurs de bases de données traditionnels, comme <strong>MySQL </strong>ou <strong>PostgreSQL</strong>, sa particularité est de ne pas reproduire le schéma habituel client-serveur mais d'être directement intégrée aux programmes. L'intégralité de la base de données (déclarations, tables, index et données) est stockée dans un fichier indépendant de la plateforme.<br/>
     <br/><strong>D. Richard Hipp</strong>, le créateur de <strong>SQLite</strong>, a choisi de mettre cette bibliothèque ainsi que son code source dans le domaine public, ce qui permet son utilisation sans restriction aussi bien dans les projets open source que dans les projets propriétaires. Le créateur ainsi qu'une partie des développeurs principaux de <strong>SQLite </strong>sont employés par la société américaine <strong>Hwaci</strong>.<br/>
     <br/>
     <br/><strong>SQLite </strong>est le moteur de base de données le plus distribué au monde, grâce à son utilisation dans de nombreux logiciels grand public comme <strong>Firefox</strong>, <strong>Skype</strong>, <strong>Google Gears</strong>, dans certains produits d'<strong>Apple</strong>, d'<strong>Adobe </strong>et de <strong>McAfee </strong>et dans les bibliothèques standards de nombreux langages comme <strong>PHP</strong> ou <strong>Python</strong>. De par son extrême légèreté (moins de 300 Kio), il est également très populaire sur les systèmes embarqués, notamment sur la plupart des smartphones modernes : l'<strong>iPhone </strong>ainsi que les systèmes d'exploitation mobiles <strong>Symbian </strong>et <strong>Android </strong>l'utilisent comme base de données embarquée. Au total, on peut dénombrer plus d'un milliard de copies connues et déclarées de la bibliothèque.<br/>
     <br/><span style="font-size:12px;">(Source : Wikipedia)</span><br/>
     <br/>
    Nous allons aujourd'hui nous intéresser au wrapper .Net de <strong>SQLite</strong>.<br/>
     <br/>
     <br/><strong><span style="font-size:18px;"><u>II • Pour quels utilisations ?</u></span></strong><br/>
     <br/>
    Comme dit plus haut, <strong>SQLite </strong>permet d'accéder à une <strong>base de données</strong> uniquement en <strong>local</strong>, depuis un fichier, ce qui limite donc les utilisations. Vous pourrez utiliser cette librairie donc pour des projets locaux comme par exemple gérer un système de compte sur une seule machine, stocker des résultats de calculs ou encore stocker des scores pour un jeu solo... Cependant utiliser <strong>SQLite </strong>pour des jeux ou applications diverses en ligne n'est pas possible directement, il va falloir passer par un serveur.<br/>
     <br/>
    Des connaissances sur le SQL sont fortement recommandées, si vous n'y connaissez rien, allez lire le tutoriel sur OpenClassRoom ou sur n'importe quel autre site.<br/>
     <br/><span style="font-size:18px;"><u><strong>III • Utiliser SQLite</strong></u></span><br/>
     <br/><u><strong>Importer la librairie</strong></u><br/>
     <br/>
    Premièrement il va vous falloir la librairie, télécharger là ici : <a href="http://www.mediafire.com/download/53kb0zwdkw5od7o/System.Data.SQLite.dll" rel="external nofollow">System.Data.SQLite.dll</a><br/>
     <br/>
    Une fois votre projet crée sous <strong>Visual Studio</strong>, importer cette librairie à votre celui-ci, pour cela, clic droit sur le projet puis "Importer une référence".<br/>
    Pour finir l'importation ajoutez ceci au début de la classe où vous voulez utiliser <strong>SQLite </strong>:
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="kwd">using</span><span class="pln"> </span><span>System</span><span class="pun">.</span><span>Data</span><span class="pun">.</span><span>SQLite</span><span class="pun">;</span></pre>
    <p>
     <br/><strong><u>Créer un fichier de base de données</u></strong><br/>
     <br/>
    Chaque base de données aura son propre fichier, pour créer un fichier de base de données, nous allons utiliser la méthode statique <strong>CreateFile </strong>contenue dans la classe <strong>SQLiteConnection </strong>:
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span>SQLiteConnection</span><span class="pun">.</span><span>CreateFile</span><span class="pun">(</span><span class="str">"MaBaseDeDonnees.sqlite"</span><span class="pun">);</span></pre>
    <p>
    J'utilise ici l'extention .sqlite, mais vous pouvez mettre ce que vous voulez ! (.db, .blabla)<br/>
     <br/><u><strong>Connexion à la base de données</strong></u><br/>
     <br/>
    Avant de pouvoir utiliser cette base de données, il va falloir se connecter à celle-ci, pour cela nous allons déclarer une nouvelle <strong>SQLiteConnection </strong>:
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span>SQLiteConnection</span><span class="pln"> maConnexion</span><span class="pun">;</span></pre>
    <p>
    Puis l'instancier et ouvrir la connexion :
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span class="pln">maConnexion</span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span>SQLiteConnection</span><span class="pun">(</span><span class="str">"Data Source=MaBaseDeDonnees.sqlite;Version=3;"</span><span class="pun">);</span><span class="pln">
    maConnexion</span><span class="pun">.</span><span>Open</span><span class="pun">();</span></pre>
    <p>
    Pour fermer la connexion :
    </p>
    <pre class="ipsCode prettyprint lang-auto prettyprinted">
    <span>MaBaseDeDonnees</span><span class="pun">.</span><span>Close</span><span class="pun">();</span></pre>
    <p>
    N'oubliez pas de la fermer une fois que vous n'en avez plus besoin 😉 </p>
    <p>
    <strong><u>Créer une table</u></strong>
    </p>
    <p>
    Désormais nous allons utiliser le <strong>SQL</strong>, nous allons créer une table qui contiendra les meilleurs scores pour un jeu, donc un nom de type "text" et un score de type "int" :
    </p>
    <pre class="ipsCode prettyprint prettyprinted">
    <span class="kwd">string</span><span class="pln"> sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"create table meilleursscores (nom text, score int)"</span><span class="pun">;</span></pre>
    <p>
    Nous devons créer un objet de type <strong>SQLiteCommand </strong>pour pouvoir l'éxécuter :
    </p>
    <pre class="ipsCode prettyprint prettyprinted">
    <span>SQLiteCommand</span><span class="pln"> commande </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span>SQLiteCommand</span><span class="pun">(</span><span class="pln">sql</span><span class="pun">,</span><span class="pln"> maConnexion</span><span class="pun">);</span></pre>
    <p>
    Puis nous allons éxecuter cette commande :
    </p>
    <pre class="ipsCode prettyprint prettyprinted">
    <span class="pln">command</span><span class="pun">.</span><span>ExecuteNonQuery</span><span class="pun">();</span></pre>
    <p>
    <strong><u>Remplir la table</u></strong>
    </p>
    <p>
    Nous allons maintenant remplir cette table comme ceci :
    </p>
    <pre class="ipsCode">
    string sql = "insert into meilleursscores (nom, score) values ('VFRZ', 100)";
    SQLiteCommand commande = new SQLiteCommand(sql, maConnexion);
    commande.ExecuteNonQuery();</pre>
    <p>
    <strong><u>Lire les meilleurs scores depuis la table</u></strong>
    </p>
    <p>
    Pour lire la table c'est un peu différent que pour la remplir ou la créer.
    </p>
    <p>
    Premièrement, la commande select :
    </p>
    <pre class="ipsCode prettyprint prettyprinted">
    <span class="kwd">string</span><span class="pln"> sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"select * from meilleursscores order by score desc"</span><span class="pun">;</span><span class="pln">
    </span><span>SQLiteCommand</span><span class="pln"> commande </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span>SQLiteCommand</span><span class="pun">(</span><span class="pln">sql</span><span class="pun">,</span><span class="pln"> maConnexion</span><span class="pun">);</span></pre>
    <p>
    Puis il va falloir utiliser un <strong>SQLiteDataReader </strong>pour utiliser cette commande :
    </p>
    <pre class="ipsCode prettyprint prettyprinted">
    <span>SQLiteDataReader</span><span class="pln"> reader </span><span class="pun">=</span><span class="pln"> command</span><span class="pun">.</span><span>ExecuteReader</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">reader</span><span class="pun">.</span><span>Read</span><span class="pun">())</span><span class="pln">
    </span><span>Console</span><span class="pun">.</span><span>WriteLine</span><span class="pun">(</span><span class="str">"Nom: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> reader</span><span class="pun">[</span><span class="str">"nom"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\tScore: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> reader</span><span class="pun">[</span><span class="str">"score"</span><span class="pun">]);</span></pre>
    <p>
     
    </p>
    <p>
    J'espère que ce tutoriel vous a été utile !
    </p>
    <p>
    N'hésitez pas à poser des questions.
    </p>
    <p>
     
    </p>
    <p>
    VFRZ
    </p>

    1 Reply Last reply
    4
    • SoulalexS
      SoulalexS
      Soulalex
      wrote on last edited by
      #2

      <p>Merci pour ce tutoriel d'une grande qualité 🙂 </p>
      <p> </p>
      <p>Je ne me suis jamais intéressé au C# mais qu'est ce qu'on peut faire exactement avec ?</p>

      Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

      1 Reply Last reply
      0
      • vfrzV
        vfrzV
        vfrz
        wrote on last edited by
        #3

        <p>Plein de choses ! Des applications consoles, des logiciels divers, des applications Windows Phone voir Android. Des jeux avec Unity ou encore xna. Pour moi c'est un très bon langage, seul petit défaut c'est que de base, il est uniquement compatible sur Windows, même si aujourd'hui grâce à Mono on peut faire du c# pour Mac, Linux...</p>

        1 Reply Last reply
        0
        • PirkoaP
          PirkoaP
          Pirkoa
          wrote on last edited by
          #4

          <p>Merci pour ce jooli tuto ! 😄 </p><p>
          C#, c'est le bien 🙂 </p>

          Étudiant en 2ème année de DUT InformatiqueJetez un coup d’œil à mon CV !

          1 Reply Last reply
          0
          • SoulalexS
            SoulalexS
            Soulalex
            wrote on last edited by
            #5

            <p>C'est un langage haut niveau, c'est plus facile que le C/C++ ? Il faudrait que je m'y intéresse car ça à l'air d'etre quelque chose que je pourrais maitriser ^^</p>

            Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

            1 Reply Last reply
            0
            • PirkoaP
              PirkoaP
              Pirkoa
              wrote on last edited by
              #6

              <p>Si j'ai le temps, je ferai une présentation générale du langage C# dans la journée ou demain pour les novices 😉 </p>

              Étudiant en 2ème année de DUT InformatiqueJetez un coup d’œil à mon CV !

              1 Reply Last reply
              0
              • vfrzV
                vfrzV
                vfrz
                wrote on last edited by
                #7

                <blockquote class="ipsQuote" data-cite="Soulalex" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="16895" data-ipsquote-contentid="1700" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1438131237" data-ipsquote-username="Soulalex"><div><p>C'est un langage haut niveau, c'est plus facile que le C/C++ ? Il faudrait que je m'y intéresse car ça à l'air d'etre quelque chose que je pourrais maitriser ^^</p></div></blockquote>
                <p>
                Oui c'est plus simple, le c# ressemble beaucoup au Java, mais personnellement je le trouve mieux que le java pour plusieurs raisons: les threads, la création de Gui/Windows, le réseau... Je ferais un post aussi avec quelques guides et tutoriels 😉 </p>

                1 Reply Last reply
                0
                • AkimaceA
                  AkimaceA
                  Akimace
                  Modérateur spécialisé
                  wrote on last edited by
                  #8

                  <p>Merci pour ce tuto  🙂 </p>

                  Me contacter : [email protected]

                  Ma chaîne Youtube : www.youtube.com/c/Akimace

                  1 Reply Last reply
                  0
                  • N
                    N
                    neconu
                    wrote on last edited by
                    #9

                    <p>
                    Bonjour,
                    </p>
                    <p>
                    Je suis débutant en C# et je cherche quelques renseignements sur ce code trouvé sur le web :
                    </p>
                    <pre class="ipsCode prettyprint lang-html prettyprinted">
                    <span class="pln">namespace SQLiteSamples
                    {
                    class Program
                    {
                    // Maintient la connexion
                    SQLiteConnection m_dbConnection;

                        static void Main(string[] args)
                        {
                            Program p = new Program();
                        }
                    
                        public Program()
                        {
                            connectToDatabase();
                            printConsole();
                        }
                    
                        // Creates a connection with our database file.
                        void connectToDatabase()
                        {
                            m_dbConnection = new SQLiteConnection("Data Source=login.sqlite;Version=3;");
                            m_dbConnection.Open();
                        }
                    
                        // Affiche les noms et login dans la console
                        void printConsole()
                        {
                            string sql = "select * from MYDATA order by Nom desc";
                            SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
                            SQLiteDataReader reader = command.ExecuteReader();
                            while (reader.Read())
                                Console.WriteLine("Nom: " + reader["Nom"] + " Login: " + reader["Login"]);
                            Console.ReadLine();
                        }
                    }
                    

                    }</span></pre>
                    <p>
                    Je n'arrive pas à l'adapter dans une window form pour qu'il s'affiche dans une list box.
                    </p>
                    <p>
                    Merci pour votre aide.
                    </p>
                    <p>
                    Cordialement.
                    </p>
                    <p></p>

                    1 Reply Last reply
                    0
                    • N
                      N
                      neconu
                      wrote on last edited by
                      #10

                      <p>
                      Personne ?
                      </p>

                      1 Reply Last reply
                      0
                      • vfrzV
                        vfrzV
                        vfrz
                        wrote on last edited by
                        #11

                        <p>
                        Salut,
                        </p>
                        <p>
                        désolé pour le délai de réponse je suis beaucoup occupé en ce moment.
                        </p>
                        <p>
                        Que veux tu dire que tu n'arrives pas à "l'adpter" ? Tu ne sais pas ajouter des éléments dans une listbox ?
                        </p>
                        <p>
                        Si c'est le cas tu as juste à faire ceci :
                        </p>
                        <pre class="ipsCode prettyprint lang-html prettyprinted">
                        <span class="pln">listbox.Items.Add("Hello world");</span></pre>
                        <p>
                        Sinon décris ton problème plus précisement 😉 </p>
                        <p>
                         
                        </p>

                        1 Reply Last reply
                        0
                        • N
                          N
                          neconu
                          wrote on last edited by
                          #12

                          <p>
                          Bonsoir et merci de m'accorder du temps.
                          </p>
                          <p>
                          Je voudrais adapter ce code pour faire afficher le contenu de la bdd dans un listbox.
                          </p>
                          <p>
                          Et ça je ne trouve pas comment faire....
                          </p>
                          <p>
                          En mode console le code fonctionne bien, mais pas dans une windows form.
                          </p>
                          <p>
                          Cordialement.
                          </p>
                          <p>
                           
                          </p>

                          1 Reply Last reply
                          0
                          • vfrzV
                            vfrzV
                            vfrz
                            wrote on last edited by
                            #13

                            <p>
                            Désolé si je me trompe mais tu donnes réellement l'impression que tu ne comprends même pas le code que tu as donné...
                            </p>
                            <p>
                            Bon en gros, tu fais exactement la même chose que dans ce code sauf qu'au lieu d'afficher les éléments avec "Console.WriteLine", tu les ajoutes à la textbox comme dit dans mon message précédent.
                            </p>
                            <p>
                            Ps : Si tu débutes en C# ne cherche pas à faire des choses comme ca si tu ne comprends pas, commence par lire des guides (livres, vidéos, openclassrooms).
                            </p>

                            1 Reply Last reply
                            0
                            • N
                              N
                              neconu
                              wrote on last edited by
                              #14

                              <p>
                              Ok je vais aller voir sur openclassroom.
                              </p>
                              <p>
                              Merci quand même.
                              </p>

                              1 Reply Last reply
                              0

                              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                              With your input, this post could be even better 💗

                              Register Login
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Login or register to search.
                              Powered by NodeBB Contributors
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups