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

Accès aux données Discussion :

[VB.Net/SQLite] Comment gérer ADO.Net avec ce type de Serveur BD ?


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut [VB.Net/SQLite] Comment gérer ADO.Net avec ce type de Serveur BD ?
    Bonjour à tous

    Je suis tout neuf dans le monde du .net

    Voici mon problème:
    Je souhaite réaliser une applic en vb.net utilisant des bases de données. Je m'oriente vers les bases SQLite car celles ci on le méritent d'être libres et j'utilise pour développer SharpDevelopp (libre et gratuit également). Mon choix est lié au fait que cette applic sera distribuée librement dans des assos.

    Pour l'interface, pas de problème.
    Pour les données, si j'ai bien réussi à utiliser une base mdb, je rencontre de gros problème pour utiliser des bases SQLite (autre avantage, elle peuvent être ouvertent par le php )
    Je n'ai pas trouvé d'exemples simples pour utiliser ces bases, j'ai trouvé une DLL SQLiteNet mais je nage un peu pour utiliser ceci.

    Quelqu'un peut-il m'aider? Un exemple simple pour ouvrir, fermer, etc .. me conviendrai trés bien, ensuite je trouverai

    Merci d'avance

    PM

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    ahh si il existe une dll .Net spécifique c'est parfait, tu peux donc utiliser nos Tutos ADO.Net ou notre FAQ sans problème. Il n'y a juste qu'à remplacer SqlClient par l'espace de noms propre à SqlLiteNet et remplacer les classes SqlClient par celles propres à cette librairie
    Le principe est toujours sur le même modèle. Tu dois avoir un objet propre à la connection (pour SqlClient c'est SqlConnection), ceux propre aux execution de requête (pour SqlClient c'est SqlCommand) etc...

    Si tu as besoin d'exemples spécifiques alors donnes nous un lien vers la doc de cette dll, on pourra t'en construire un de base

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut C'est gentil
    Bonjour

    Merci pour la réponse

    Voici un lien vers le site de SQLite pour .NET
    http://www.sqlite.org/cvstrac/wiki?p...ationSqliteNet

    Comme je ne suis pas un dieu en prog. j'ai parfois quelques difficultés à saisir certaines explications
    Pour récupérer SQLiteNET
    http://sourceforge.net/project/showf...group_id=94676

    J'ai bien récupéré des exemples mais impossible de les faire fonctionner (il y a souvent ceci : ADOX qui plante)

    Bref, je patauges

    Merci d'avance pour votre aide

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par PM_calou
    Bonjour

    Merci pour la réponse

    Voici un lien vers le site de SQLite pour .NET
    http://www.sqlite.org/cvstrac/wiki?p...ationSqliteNet

    Comme je ne suis pas un dieu en prog. j'ai parfois quelques difficultés à saisir certaines explications
    Pour récupérer SQLiteNET
    http://sourceforge.net/project/showf...group_id=94676

    J'ai bien récupéré des exemples mais impossible de les faire fonctionner (il y a souvent ceci : ADOX qui plante)

    Bref, je patauges

    Merci d'avance pour votre aide
    ok je n'ai plus le temps aujourd'hui mais quelqu'un va certainement reprendre le relais, sinon prend patience j'essaierai de te proposer quelquechose demain

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Super
    C'est sympa.

    Je ne suis pas à la minute mais ça me sera trés utile.


  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Aprés avoir testé ...
    Bonjour

    J'ai testé ceci provenant du site SQLite
    ----------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim DB As SQLiteNET.DataBase ' Define the object
    Dim LocaLDataTable As DatATable 'Define a local datatable object
    Try
    DB = New SQLiteNET.DataBase("c:\dbfile.db") ' Create a new object
    DB.Execute("Select * from SQLite_master") 'Execute a query
    LocalDatATable = DB.DataTable
    Catch ex As SQLiteNET.SQLiteException
    MessageBox.Show(ex.ErrorCode)
    End Try
    DB.Close()
    ----------------
    Je me retrouve avec deux erreurs liées l'une à l'autre à la compilation au niveau de : Dim LocaLDataTable As DatATable et de LocalDatATable = DB.DataTable
    Je retrouve ceci dans tous les bouts de code que j'ai testé. Impossible d'utiliser DataTable Pourquoi?

    Si je met en commentaire ces deux ligne, ça tourne jusqu'à DB.Close() qui plante le programme.

    Merci d'avance pour vos lumières

    PM

  7. #7
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bon excuses pour le retard mais je ne suis pas toujours maître de mon temps
    Donc ceci compile et s'execute sans souci sans souci

    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
    Imports SQLiteNET
    Imports System.IO
    
       '...et dans une méthode quelonque
     
       Dim dbFilepath As String = "C:\dbfile.db"
      If File.Exists(dbFilepath) Then File.Delete(dbFilepath)
      Dim db AsDataBase = Nothing
      Dim membres AsDataTable = Nothing
      Try
         ' Créer/Ouvrir la base de données
         db = New DataBase(dbFilepath)
         ' créer une Table Membres
         db.Execute("CREATE TABLE Membres(" _
    + "IdMembre INTEGER PRIMARY KEY," _
    + "NomMembre VARCHAR(50)," _
    + "PrenomMembre VARCHAR(50))")
    ' créer des données dans cette table
         db.Execute("INSERT INTO Membres" _
    + "(IdMembre,NomMembre,PrenomMembre) VALUES (10,'Dupont','Jean')")
          db.Execute("INSERT INTO Membres _
    + "(IdMembre,NomMembre,PrenomMembre) VALUES ('20','Smith','John')")
         ' récupérer la Table Membres
         db.Execute("SELECT * from Membres ORDER BY NomMembre DESC")
          membres = db.DataTable
         ' afficher membres
         Me.DataGridView1.DataSource = membres
      Catch ex AsException
         Me.Label1.Text = ex.ToString()
      Finally
         If db IsNot Nothing Then db.Close()
     End Try
    
    J'espère que celà t'aidera à avancer dans ta résolution

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Merci ...
    Merci pour le code

    Je l'ai copié dans un nouveau projet dans SharpDevelop, ajouté les controles qui vont bien. Jusque là, pas de problème.

    En revanche, lors de la compilation, j'ai toujours le même plantage avec DataTable. Celà doit sûrement venir de ma version de SharDevelop (ou du compilateur) . Le message d'erreur est "Type TataTable non défini"

    Sinon la base est bien créée .

    Une idée du problème?

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par PM_calou
    Le message d'erreur est "Type TataTable non défini"
    Ben voui c'est sûr
    Bon si la compilation refuse la classe DataTable , c'est qu'il manque peut être la référence System.Data dans ton projet

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Trouvé :-)
    Avant tout, un grand merci pour le coup de main. Si si

    En fait, si dans le message précédement donné, la cause était bien en effet que system.data n'était pas chargé, lorsque je le chargeai, ça plantait, et voici pourquoi.
    Dans l'autre message d'erreur, il y avait une truc comme quoi il fallait la version system.xml version 2.0.0 et j'ai fini par aller la charger (aprés une bonne centaine de tentatives de compilation mais je ne maitrise pas encore bien l'outil) et voilà que ça marche.
    Ca fait plaisir de trouver des programmeurs qui n'hésitent pas à donner de leur temps pour dépanner les novices.

    Donc, encore merci pour cette aide.

    Peut être à bientôt (j'éspère que non, il va bien falloir que je grandisse)

    @+


  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Encore une petite question ...
    Bonjour

    Pour la récupération des données.
    Dans le code le résultat de la requette est placé dans un DataGridView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ' ...
    db.Execute("SELECT * from Membres ORDER BY NomMembre DESC")
    membres = db.DataTable
    ' afficher membres
    Me.DataGridView1.DataSource = membres
    '...
    Et ça marche sans problème.

    De mon coté, je souhaite récupérer les données ligne par ligne et non pas les inserer dans un tableau. J'ai bien essayé des trucs mais sans succés

    Comment récupérer les données de "membres" pour les placer soit dans des champs de saisie, soit dans un objet?

    En fait, j'aimerai bien retrouver queque chose de ce style qui me convient tout à fait :
    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
     
    Dim MyConnexion As OleDbConnection = New OleDbConnection
    ("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & MaDB)
    Dim chaine as String
    Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
     
    Mycommand.CommandText = "SELECT * FROM membres;"
    MyConnexion.Open()
     
    Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
     
    Do While myReader.Read()
        chaine = myReader.GetString(0)
        chaine &= "-"
        chaine &= myReader.GetString(1)
        chaine &= "-"
        chaine &= myReader.GetString(2)
     
        ListBox1.Items.Add(chaine)
    Loop
    myReader.Close()
    MyConnexion.Close()
    Mais avec SQLiteNet, je n'arrive pas à ressortir chaque ligne d'enregistrement


    @+

    Pascal

  12. #12
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Perso je partirai du principe que SqliteNet sur un Execute génère une DataTable dans l'objet Database. Donc il est tout a fait possible d'alimenter après n'importe quel contrôle d'affichage. Je suppose que pour un ListBox il faudra utiliser la collection des DataRow (et notamment leur propriété ItemArray ) de l'objet DataTable

    par exemple sous 2.0 ceci fonctionne
    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
    Private Sub DisplayDatasInLB()
    Dim datas() As String = Nothing
    For Each r As DataRow In Membres.Rows
       datas = Array.ConvertAll(Of Object, String)(r.ItemArray, _
    New Converter(Of Object, String)(AddressOf ObjectToString))
       Me.ListBox1.Items.Add(String.Join("-", datas))
    Next
    
    End Sub
     
    Public Function ObjectToString(ByVal o As Object) As String
     Return o.ToString()
    End Function
    

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut t'es un choux
    J'ai malgrés tout un petit message d'erreur à la compilation.
    Il dit:
    Le nombre d'indices est inférieur au nombre de dimensions du tableau indexé

    Tu vois d'ou ça vient?

  14. #14
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Ben pas de mon code, je vois pas si tu ne me donnes pas la ligne de code qui génère l'erreur de compilation

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut :-/
    Oui, excuse moi j 'étais dans mon truc et j'oublié de spécifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     datas() = Array.ConvertAll(Of Object, String)(r.ItemArray, _
    New Converter(Of Object, String)(AddressOf ObjectToString))

  16. #16
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par PM_calou
    Oui, excuse moi j 'étais dans mon truc et j'oublié de spécifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     datas() = Array.ConvertAll(Of Object, String)(r.ItemArray, _
    New Converter(Of Object, String)(AddressOf ObjectToString))
    Mea culpa, j'ai fait une erreur de copier/collé j'ai corrigé, enlèves les parenthèses à datas

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Il n'y a que ceux qui ne font rien...
    ... qui ne font jamais d'erreur

    C'est bon, ça marche.
    J'avais réussi à sortir les élément mais pas d'une façon dynamique, je devais connaitre le nombre d'élément à l'avance. Bref, un truc pas génial.

    Mais là, ça marche bien.



    Je te remerci encore pour ton super coup de main, je penses pouvoir finir de développer mon applic sans trop de problème et ce grace à toi.

    Bon courrage à tous et bon dev.


    PS: Si tu pouvais m'expliquer le fonctionnement de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    datas() = Array.ConvertAll(Of Object, String)(r.ItemArray, _
    New Converter(Of Object, String)(AddressOf ObjectToString))
    Juste pour bien comprendre

  18. #18
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par PM_calou
    ... PS: Si tu pouvais m'expliquer le fonctionnement de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    datas() = Array.ConvertAll(Of Object, String)(r.ItemArray, _
    New Converter(Of Object, String)(AddressOf ObjectToString))
    Juste pour bien comprendre
    sans les parenthèses alors

    Bon en fait DataRow.ItemArray represente un tableau d'Object (les champs de l'enregistrement) donc je me suis pas trop casser la tête en effectuant sa transformation en tableau de String ainsi je pouvais utiliser la méthode String.Join qui reconstitue une chaine de caractères à partir d'un tableau de String et un caractère séparateur.
    La classe Converter est un générique qui nécessite un type d'entrée et un type de sortie ainsi qu'un pointeur vers une méthode déléguée, c'est cette méthode qui opère la conversion.
    Array.ConvertAll est une nouveauté de .Net 2.0

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Moi aussi ...
    moi aussi j'ai fait un copier coller . En effet, sans les ()

    Merci pour les précisions.

    En fait, j'ai surtout fait des applics en VB4, sans jamais migrer ver le 5 ou le 6, alors le passage au vb.net me bouscule un peu. Comme je n'ai pas d'aide avec sharpdevelop (comme dans vb4 avec des exemples de code) je rame un peu, pas vraiment d'explication sur les propriétés, methodes et evenements des objets. J'y vais à taton mais ça ne marche pas toujours.

    @+ (Moi je part en vacances )


  20. #20
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par PM_calou
    moi aussi j'ai fait un copier coller . En effet, sans les ()

    Merci pour les précisions.

    En fait, j'ai surtout fait des applics en VB4, sans jamais migrer ver le 5 ou le 6, alors le passage au vb.net me bouscule un peu. Comme je n'ai pas d'aide avec sharpdevelop (comme dans vb4 avec des exemples de code) je rame un peu, pas vraiment d'explication sur les propriétés, methodes et evenements des objets. J'y vais à taton mais ça ne marche pas toujours.

    @+ (Moi je part en vacances )

    Bonnes vacances sinon n'oublie pas ce lien pour l'aide :
    [Infos] [MSDN] La liste des liens pour se documenter sur les frameworks .Net
    Pour SharpDevelop, je pense qu'il suffit d'installer avant le SDK de .Net pour que la touche F1 fonctionne

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/12/2013, 09h39
  2. [Débutant] comment gérer des cookies avec ASP.NET
    Par amoula2511 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 14/05/2012, 00h16
  3. Réponses: 1
    Dernier message: 06/03/2007, 20h29
  4. [CF][PPC/VB.NET/Datagrid] Comment gérer une colonne CheckBox ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 28/08/2006, 17h08
  5. Réponses: 5
    Dernier message: 25/07/2005, 09h29

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