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 :
Citation:
"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:
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 ?
ca avance mais ce n'est toujours pas résolu
Merci de ton aide Said, effectivement on sent et on voit l'expérience derrière.
Bon j'imagine que le sablier, tu l'ajoutes exprès juste avant la déclaration de la requête afin de laisser le temps à la requête de s'exécuter tranquillement et donc d'accéder à la base de donnée. Effectivement maintenant la requête accède bien à la base de données.
Le problème maintenant est qu'elle ne trouve pas mon fichier de données Fichier_Pour_Import_Export.
En effet elle me retourne :
Citation:
"No such table: Fichier_Pour_Import_Export"
.
Il faut que je précise ici également qu'au niveau de mon éditeur d'analyse de WD Mobile il n'est pas possible de l'ouvrir via WDmap pour visualiser son contenu, en effet, une tentative d'accès au fichier de données Fichier_Pour_Import_Export via WDmap me retourne l'erreur suivante:
Citation:
Le champ TableFichiers n'a pas pu s'initialiser car il a rencontré l'erreur HyperfileSQL suivante :
Erreur de l'accès natif SQLite
Numéro de l'erreur = 30
Impossible d'ouvrir ou de lire le fichier Fichier_Pour_Import_Export..
Le fichier Fichier_Pour_Import_Export n'existe pas.
Je pense que les deux choses sont liées.
Une idée de l'origine de cette erreur?