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 Mobile .NET Discussion :

[SQLite CF] Sqlite avec le CF


Sujet :

Windows Mobile .NET

  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 [SQLite CF] Sqlite avec le CF
    à tous

    Je viens d'avoir un Tel mobile fonctionnant sous Windows Mobile 6.1 et je souhaite développer des petites applics en VB.NET par le biais de Visual Studio 2005 + Windows Mobile SDK 6.

    Jusque là, pas de problème, mais j'aimerai pouvoir utiliser des bases de données pour stocker mes infos. Je souhaitai utiliser SQLite pour cela.
    Quelqu'un a t-il déjà utilisé cette DB sous le CF
    Sur sourceForge, j'ai trouvé la DLL qui vas bien pour utiliser SQLite avec le CF

    Sinon, quelle DB me conseillez vous d'utiliser

    d'avance

    Pascal

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Je connaissais pas, mais je suis tombé sur ça

    Tu peux utiliser Sql Server CE (Compact Edition)

    http://www.microsoft.com/sql/edition...t/default.mspx

    Et ici la version pour mobile
    http://www.microsoft.com/downloads/d...displaylang=en

    Par contre ça a l'air d'être pour VS2008 mais doit bien y avoir une version pour VS2005
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  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


    En fait, je m'oriente vers SQLite car cette db est lisible sous différents systèmes et utilisable avec des langages divers. Ceci pour pouvoir transférer les données d'une application de Windows à Linux par exemple, d'un programme écrit en vb.net vers un en java.

    J'ai voulu reprendre du code que j'avais fait en VB.NET Framework 2 avec SQLite (le programme fonctionne bien lui, sous Windows ) mais à priori ce n'est pas compatible avec la version CF. Je n'ai pas trouvé d'exemple ni de tutos à ce sujet non plus

    Je serais malgré tout intéressé par SQL Server CE, et si quelqu'un a un bout de code simple pour m'expliquer le fonctionnement et la démarche, je suis preneur

    d'avance

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Pour l'utilisation de SQLite en netcf utilise cette dll qui est compilée pour le compact framework : System.data.sqlite.dll : http://sqlite.phxsoftware.com

    Pour l'utilisation du code, c'est pareil que pour sqlce: ex (c#):

    Code c# : 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
    using (DbConnection coni = new SQLiteConnection(taconnection)
    {
    coni.Open();
    try
    {
    using (DbTransaction dbTrans = coni.BeginTransaction())
    {
    using (DbCommand cmd = coni.CreateCommand())
    {
    cmd.CommandText = "INSERT INTO TOTO(TITI,TATA) VALUES (?,?)";
    DbParameter Field1 = cmd.CreateParameter();
    cmd.Parameters.Add(Field1);
    DbParameter Field2 = cmd.CreateParameter();
    cmd.Parameters.Add(Field2);
     
    foreach (DataRow ligne in ds.Tables["tt"].Rows)
    {
     
    Field1.Value = ligne[1].ToString();
    Field2.Value = ligne[0].ToString();
    cmd.ExecuteNonQuery();
    }
    }
    dbTrans.Commit();
    }
    catch (DbException err)
    {...} 
    coni.Close();
    }



  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
    sfo53 pour ta réponse

    J'avais déjà vu ce code.

    J'ai essayer de le traduire en VB et j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim MaDB As String = Environment.GetFolderPath(Environment.SpecialFolder.Startup) & "\" & NomDB & ".db"
    
    Dim coni As Data.SQLite.SQLiteConnection = New SQLiteConnection(MaDB)
            
    coni.Open()
    Dim DBtrans As SQLiteTransaction = coni.BeginTransaction()
    Dim cmd As SQLiteCommand = coni.CreateCommand()
    cmd.CommandText = "INSERT INTO TOTO(TITI,TATA) VALUES (?,?)"
    Dim Field1 As SQLiteParameter = cmd.CreateParameter()
    Dim Field2 As SQLiteParameter = cmd.CreateParameter()
    cmd.Parameters.Add(Field1)
    cmd.Parameters.Add(Field2)
    ...
    coni.Close()
    Lors de l'exécution, j'ai ce message d'erreur qui apparait sur Dim DBtrans As SQLiteTransaction = coni.BeginTransaction()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    L'exception System.ArgumentException n'a pas été gérée
      Message="Invalid ConnectionString format for parameter "\Windows\StartUp\Test.db""
      StackTrace:
        at System.Data.SQLite.SQLiteConnection.ParseConnectionString()
        at System.Data.SQLite.SQLiteConnection.Open()
        at DeviceApplication1.Form1.LitTableAjSup()
        at DeviceApplication1.Form1.Button4_Click_1()
        at System.Windows.Forms.Control.OnClick()
        at System.Windows.Forms.Button.OnClick()
        at System.Windows.Forms.ButtonBase.WnProc()
        at System.Windows.Forms.Control._InternalWnProc()
        at Microsoft.AGL.Forms.EVL.EnterMainLoop()
        at System.Windows.Forms.Application.Run()
        at DeviceApplication1.Form1.Main()
    il doit y avoir une erreur ... mais laquelle

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    , ta connexion n'est pas valide, elle pointe sur un fichier, ce n'est pas une chaine de connexion valide.

    Ex pour une base de donnees "artic" se trouvant dans le sous repertoire "bd" de ton application:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    internal string Path_BaseArticle()
    {
             String chemin = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) ; 
             chemin = System.IO.Path.Combine(chemin, "bd");
             chemin = System.IO.Path.Combine(chemin, "artic.db3");
             return chemin;           
    }
     
    public string ConnectionString_BaseArticle()
    {
    string ret = @"Data Source=" + Path_BaseArticle() + ";" +@"Synchronous=Off";
    return ret;
    }



    Dans ton appel :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    using (DbConnection con = new SQLiteConnection(ConnectionString_BaseArticle()))
    {
    con.Open();
     
    ....
    }


    normalement en vb ca donne ca :

    Code VB.NET : 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
    Friend Function Path_BaseArticle() As String 
        Dim chemin As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) 
        chemin = System.IO.Path.Combine(chemin, "bd") 
        chemin = System.IO.Path.Combine(chemin, "artic.db3") 
        Return chemin 
    End Function 
     
    Public Function ConnectionString_BaseArticle() As String 
        Dim ret As String = "Data Source=" + Path_BaseArticle() + ";" + "Synchronous=Off" 
        Return ret 
    End Function 
     
    Private Sub test() 
        Using con As DbConnection = New SQLiteConnection(ConnectionString_BaseArticle())         
            con.Open() 
        End Using 
    End Sub

  7. #7
    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
    Je te remercie pour ton aide sfo53

    Je teste ça dès que possible (j'ai plein de trucs urgents sur le feu )

    @+

    Pascal

  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


    J'ai testé le code que sfo53 m'a passé et a priori, ça marche car je n'ai aucun message d'erreur.

    J'ai réalisé une requette SQL pour ajouté des données sans message mais je n'arrive pas à lire mes données

    pour ajouter mes données, j'ai fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub test()
            Dim SQL As String
            SQL = "INSERT INTO archers (ID,nom,prenom) VALUES ('" & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" & Me.TextBox3.Text & "')"
     
            Using con As DbConnection = New SQLiteConnection(ConnectionString_BaseArticle())
                Dim cmd As DbCommand = con.CreateCommand()
                con.Open()
                cmd.CommandText = SQL
     
                con.Close()
            End Using
        End Sub
    Mais je n'arrive pas à traduire ceci en VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach (DataRow ligne in ds.Tables["tt"].Rows)
    {
     
    Field1.Value = ligne[1].ToString();
    Field2.Value = ligne[0].ToString();
    cmd.ExecuteNonQuery();
    }
    Je ne peux donc pas vérifier que j'ai bien ajouté mes données

    Un p'tit coup de pouce

    Pascal

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Je ne suis pas expert en VB mais ca devrait donner ca:


    Code vb.NET : 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
    Private Sub test()
            Dim SQL As String
            SQL = "INSERT INTO archers (ID,nom,prenom) VALUES ('" & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" & Me.TextBox3.Text & "')"
     
            Using con As DbConnection = New SQLiteConnection(ConnectionString_BaseArticle())
    con.Open()
    Using cmd As DbCommand = con.CreateCommand()            
                cmd.CommandText = SQL
    cmd.ExecuteNonQuery();
    cmd.CommandText="SELECT * FROM archers"
    Using dtr As SQLiteDataReader= commande.ExecuteReader()     
        While dtr.Read() 
            MessageBox.Show(dtr(0).ToString()) 
        End While 
        dtr.Close() 
    End Using 
    End Using
                con.Close()
            End Using
        End Sub

  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


    ça marche

    pour tout sfo53

    Par contre, je ne sais pas où se trouve ma base de donnée

    Je créé la table dans une base avec un nom mabase.sqlite, j'ajoute mes données, je les lit, mais quand je cherche le fichier, nada

    Encore , c'est toujours un plaisir de communiquer sur les forums de ce site, que ce soit pour les compétences, mais aussi la gentillesse et la courtoisie des intervenants.

    Pascal

  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
    Pour en revenir à la localisation de la DB, avec l'émulateur sur le PC, impossible de savoir où se trouve la base, par contre, un fois installé sur le PDA(tel), elle se trouve bien à l'endroit spécifié dans mon code.
    J'ai utilier le SQLite Manager de FireFox pour l'ouvrir, aucun problème, les données et la structure sont OK

    @+

    Pascal

  12. #12
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Allez, bon courage pour ton developpement !!

  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

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/05/2014, 12h38
  2. XE5 et sqlite : champ real avec une précision de 1
    Par Chris74 dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/04/2014, 20h46
  3. [WD17] SQLITE en oneshot avec Windev 17 ?
    Par Christophe Charron dans le forum WinDev
    Réponses: 6
    Dernier message: 13/12/2012, 11h46
  4. [SQLite] installation php avec une source sqlite modifiée
    Par nannous dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/11/2006, 12h18
  5. [SQLite] Utiliser SQLite avec PHP4
    Par fadeninev dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/10/2006, 16h10

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