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

Windev Mobile Discussion :

Compatibilité SQLite android


Sujet :

Windev Mobile

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 52
    Par défaut Compatibilité SQLite android
    Bonjour,

    J'ai créé un projet android avec un seul fichier de données : Fichier_Pour_Import_Export.

    Mon objectif dans un premier temps est simplement de stocker une donnée récupérée par l'application dans le fichier de donnée embarqué dans la tablette Android (en effet j'ai inclut le fichier de données .db dans le .apk à la génération de l'application android).

    Donc j'installe l'application qui lit un code barre, je tente d'insérer la valeur du code barre récupéré et là Message d'erreur :


    "Vous avez appelé la fonction HExécuteRequête. Le fichier sdReq_InsertionDonnées est associé à une connexion de type HyperFileSQL. Seules les connexions de type SQLite sont autorisées sous android. Vous pouvez modifier la connexion associée au fichier dans l'analyse du projet ou utiliser la fonction HChangeConnexion."
    Or, dans l'analyse de mon projet, mon fichier de donnée est bien bleu et typé SQLite, j'ai également une connexion SQLite native. De plus j'ai mis à l'initialisation du projet un petit HChangeConnexion("*",MaConnexion_android), et finalement pour en avoir le coeur net, je redéfinis une nouvelle connexion dans le code d'insertion des données:
    ..............................
    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
     
    SI InAndroidMode()=True ALORS
     
    // Execution on the Android device or on an emulator
    SI fExtractResource("Projet_Android_Lecture_Code_Barre_Test.db", CompleteDir(fDataDir()) + "Projet_Android_Lecture_Code_Barre_Test.db") = Faux ALORS
    Error(ErrorInfo(errFullDetails))
    FIN
     
    New_connection est une Connexion =Fichier_Pour_Import_Export..Connexion
     
    // Parametres de la connexion
     
    New_connection..Source = ComplèteRep(SysRepCarteStockage())+"sdcard/"+"Projet_Android_Lecture_Code_Barre_Test.db"
    New_connection..Provider = hAccèsNatifSQLite
    New_connection..User = ""
    New_connection..Password = ""
    New_connection..Server = CompleteDir(fDataDir()) + "Projet_Android_Lecture_Code_Barre_Test.db"
    New_connection..Database = ""
    New_connection..Access = hOReadWrite
    SI HOuvreConnexion(New_connection)= Faux ALORS
    Error("Impossible d'ouvrir la connexion", HErrorInfo(hErrFullDetails))
    EndProgram(True)
    SINON
    Info("ouverture connexion ok")
    FIN
    SI HChangeConnection("*",New_connection) = False ALORS
    Error("Incapable de changer la connexion", HErrorInfo(hErrFullDetails))
    EndProgram(True)
    SINON
    Info("Changement de connexion OK")
    FIN
     
    sTexte_de_la_requete est une chaîne
    sdREQ_InsertionDonnées est une Source de Données
     
    sTexte_de_la_requete="INSERT INTO Fichier_Pour_Import_Export ( DATE, Code_Barre, champ_texte ) VALUES ( "+DateSys()+",'"+cb..ValeurBrute+"','toto')"
     
    SI PAS HExécuteRequêteSQL(sdREQ_InsertionDonnées,hRequêteDéfaut,sTexte_de_la_requete) ALORS
    Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo())
    RETOUR
    FIN
     
    FIN
    ..............................

    Mais rien n'y fait.
    Avez vous une explication? Ais je commis une erreur ?

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 52
    Par défaut
    Bon j'ai lu sur un autre poste d'un autre forum qu'il y a un souci actuellement avec les bases de données > 1Mo ...

    Voici la solution de contournement en attendant que PCSOFT corrige le bug.

    ==============
    En fonction du périphérique des cas d'échec de compression / décompression de fichiers ont pu être identifiés, et sont en cours de résolution.

    Un palliatif immédiat, peut être de placer le .db dans l'application, en empêchant sa compression. Pour parvenir à ce résultat, il faut modifier l'extension du fichier contenant les données. En effet, tous les fichiers de plus de 1 Mo à placer dans l'application apk sont compressés, sauf ceux ayant l'extension :
    ".jpg", ".jpeg", ".png", ".gif", ".wav", ".mp2", ".mp3", ".ogg", ".aac", ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet", ".rtttl", ".imy", ".xmf", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".amr", ".awb", ".wma", ".wmv"

    je vous conseille donc de renouveler le test en effectuant les opérations suivantes :
    - renommer sur le PC le .db en .mp3 par exemple avant de créer l'application android
    - créer l'application en ajoutant le fichier .mp3 des données,
    - après l'appel de fExtraitChemin, renommer le .mp3 extrait en .db à l'aide de la fonction fRenomme.
    ===============

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 52
    Par défaut
    Donc j'ai changé l'extension du fichier_de_données de .db en .mp3 (du coup mon fichier de base de données se nomme maintenant Projet_Android_Lecture_Code_Barre_Test.mp3.db), j'ai ensuite lancé la procédure d'installation en laissant le répertoire d'intégration des fichier en mode automatique.
    J'installe sur le terminal archos 4.3 it sous android, à l'éxecution j'ai l'erreur suivante:
    ....................
    -Appel WL: Fonction <fExtraitRessource>
    -Niveau: erreur non fatale
    -Message d'erreur
    -Message d'erreur système: La ressource n'a pas été trouvée dans les ressources de l'application.
    (Rappel : la ressource doit avoir été intégrée dans le repertoire 'raw' de l'application)
    -Que s'est il passé? Impossible d'extraire la ressource 'Projet_Android_Lecture_Code_Barre_Test.jpg'
    ......................

    J'ai donc voulu relancer la procédure d'installation en changeant le répertoire d'intégration des fichier en raw. Sauf que quand je sélectionne 'raw', la procédure de génération de l'application android m'affiche le message d'erreur suivant:

    .........................................
    Echec de la création de l'application Android <C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Exe\Projet_Android_Lecture_Code_Barre_Test.apk>.


    Ligne de commande : .\platform-tools\aapt.exe package -m -J "C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Android\Generation\gen" -M "C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Android\Generation\AndroidManifest.xml" -S "C:\Mes Projets Mobile\Projet_Android_Lecture_Code_Barre_Test\Android\Generation\res" -I "platforms\android-12\android.jar"


    Erreur retournée :
    res\raw\projet_android_lecture_code_barre_test.xdd:0: error: Resource entry projet_android_lecture_code_barre_test is already defined.
    res\raw\projet_android_lecture_code_barre_test.jpg.db:0: Originally defined here.
    ..................................................

    Du coup je suis bien bloqué...

    Vous avez une idée?

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 52
    Par défaut
    Personne ne m'aide , mais je m'auto-encourage tout seul et j'écris mes difficultés au fur et à mesure pour que les futures développeurs qui auront les mêmes difficultés puissent suivre mon récit afin de les résoudre . (celà dit ce n'est pas encore gagné au moment où j'écris ces lignes... )

    Rebondissements de la situation :
    J'ai installé la nouvelle version qui vient de sortir de WD Mobile : "06F160057j".

    Maintenant Les messages d'erreurs que j'avais concernant la non compatibilité des fonctions HyperfileSQL et la base de donnée interne SQLite ont disparus. Mais j'ai toujours un grand mal à exécuter les requête SQL :


    ......................................................
    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
    SI InAndroidMode()=True ALORS
     
    // Execution on the Android device or on an emulator
     
    SI fExtractResource("Projet_Android_Lecture_Code_Barre_Test.db", CompleteDir(SysRepCarteStockage()) +"sdcard/"+"Projet_Android_Lecture_Code_Barre_Test.db") = Faux ALORS
    Error(ErrorInfo(errFullDetails))
    FIN
     
    // New_connection est une connexion = Fichier_Pour_Import_Export..Connexion
    New_connection est une Connexion
     
    // Parametres de la connexion
    New_connection..Source = ComplèteRep(SysRepCarteStockage())+"sdcard/"+"Projet_Android_Lecture_Code_Barre_Test.db"
     
    New_connection..Provider = hAccèsNatifSQLite
     
    New_connection..User = ""
     
    New_connection..Password = ""
     
    New_connection..Server = ComplèteRep(SysRepCarteStockage()) +"sdcard/"+ "Projet_Android_Lecture_Code_Barre_Test.db"
     
    New_connection..Database = ""
     
    New_connection..Access = hOReadWrite
     
    SI HOuvreConnexion(New_connection)= Faux ALORS
    Error("Impossible d'ouvrir la connexion", HErrorInfo(hErrFullDetails))
    EndProgram(True)
    SINON
    Info("ouverture connexion ok")
    FIN
     
    SI HChangeConnection("*",New_connection) = False ALORS
    Error("Incapable de changer la connexion", HErrorInfo(hErrFullDetails))
    EndProgram(True)
    SINON
    Info("Changement de connexion OK")
    FIN
     
    sTexte_de_la_requete est une chaîne
    sdREQ_InsertionDonnées est une Source de Données
     
    sTexte_de_la_requete="INSERT INTO Fichier_Pour_Import_Export ( DATE, Code_Barre, champ_texte ) VALUES ( "",0,'toto')"
     
    // SI PAS HExécuteRequêteSQL(sdREQ_InsertionDonnées,hRequêteDéfaut,sTexte_de_la_requete) ALORS
    SI PAS HExécuteRequêteSQL(sdREQ_InsertionDonnées,sTexte_de_la_requete) ALORS
    Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo())
    RETOUR
    FIN
    FIN
    ...................................................

    Mais la requête me renvoie l'erreur :

    "Vous avez appelé la fonction HExécuteRequête. Echec de l'exécution de la requête sdReq_InsertionDonnées."
    Or je ne fais jamais appel à la fonction HExécuteRequête mais plutôt à la fonction HExécuteRequêteSQL !!

    Si quelqu'un a eu cette bouteille lancée en pleine mer, qu'est ce que je fais mal?

  5. #5
    Membre très actif Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Par défaut
    Salut, Refait l'essai comme ça:
    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
    SI InAndroidMode()=True ALORS
    
    // Execution on the Android device or on an emulator
    
    SI fExtractResource("Projet_Android_Lecture_Code_Barre_Test.db", CompleteDir(SysRepCarteStockage()) +"sdcard/"+"Projet_Android_Lecture_Code_Barre_Test.db") = Faux ALORS
    Error(ErrorInfo(errFullDetails))
    FIN
    
    // New_connection est une connexion = Fichier_Pour_Import_Export..Connexion
    New_connection est une Connexion
    
    // Parametres de la connexion
    New_connection..Source = ComplèteRep(SysRepCarteStockage())+"sdcard/"+"Projet_Android_Lecture_Code_Barre_Test.db"
    
    New_connection..Provider = hAccèsNatifSQLite
    
    New_connection..User = ""
    
    New_connection..Password = ""
    
    New_connection..Server = ComplèteRep(SysRepCarteStockage()) +"sdcard/"+ "Projet_Android_Lecture_Code_Barre_Test.db"
    
    New_connection..Database = ""
    
    New_connection..Access = hOReadWrite
    
    SI HOuvreConnexion(New_connection)= Faux ALORS
    Error("Impossible d'ouvrir la connexion", HErrorInfo(hErrFullDetails))
    EndProgram(True)
    SINON
    Info("ouverture connexion ok")
    FIN
    
    SI PAS HChangeConnection("*",New_connection) = False ALORS
    Error("Incapable de changer la connexion", HErrorInfo(hErrFullDetails))
    EndProgram(True)
    SINON
    Info("Changement de connexion OK")
    FIN
    
    
    sdREQ_InsertionDonnées est une Source de Données
    
    SI PAS
    HExécuteRequêteSQL(sdREQ_InsertionDonnées,"New_connection",hRequêteDéfaut,"INSERT INTO Fichier_Pour_Import_Export ( DATE, Code_Barre, champ_texte ) VALUES ( "",0,'toto')"
     ALORS
    Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo())
    RETOUR
    FIN
    FIN

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 52
    Par défaut
    Merci Said, mais quand j'ai fais ce que tu m'as demandé, alors là ! c'est du vrai n'importe quoi !!

    Je reçois le message d'erreur :
    "Clause FROM invalide. Vérifier sa syntaxe."
    Or je n'ai pas de clause From (normal ma requête est un insert)

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

Discussions similaires

  1. Cursor dans sqlite + android
    Par ensinienne dans le forum Android
    Réponses: 8
    Dernier message: 19/03/2012, 13h22
  2. Erreur SQLite Android
    Par mokhtar1105 dans le forum Android
    Réponses: 4
    Dernier message: 29/02/2012, 18h57
  3. SQL -> Sqlite android
    Par taz007_dj dans le forum Android
    Réponses: 0
    Dernier message: 10/10/2011, 22h07
  4. sqlite android ( affichage des données stockés)
    Par nagca dans le forum Android
    Réponses: 5
    Dernier message: 26/04/2011, 13h21
  5. Aide SQLite Android
    Par Zaark dans le forum Android
    Réponses: 0
    Dernier message: 13/01/2011, 16h56

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