French Database sqlite

sultan87

Active Member
Licensed User
Longtime User
Bonsoir
j'ai créé une BD sqlite que j'ai mis dans le répertoire Files de mon projet
sur mon smartphone cette BD se trouve dans
/storage/emulated/0/LaMieCaline/BD/
lorsque j'utilise
MyPath_Local = File.DirRootExternal & "/LaMieCaline/BD/"
sql1.Initialize(MyPath_Local, "lamiecaline.db", False)
j'ai ce message d'erreur
/storage/emulated/0/LaMieCaline/BD/lamiecaline.db is not readable

pouvez vous m'aider
Pierre
 

yfleury

Active Member
Licensed User
Longtime User
Tu dois utiliser File.DirInternal.
Et ce dossier n'est pas disponible dans android.
Alors dans tu dois ajouter BD dans l'IDE dans File Manager.
Ensuite, tu dois copier la BD dans File.DirInternal
c'est ce qu'il y a de plus sécuritaire.
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour
merci pour la réponse
ma bd est dans le répertoire Files de mon projet B4A sur mon pc
voici les différentes informations sur les Files.Dir......
1664611978369.png

je ne trouve pas sur mon android le répertoire de File.DirInternal
pouvez vous m'aider
Pierre
 

klaus

Expert
Licensed User
Longtime User
Le répertoire File.DirInternal n'est pas accessible depuis l'extérieur, seule ton application y a accès.
File.DirAssets est équivalent au répertoire Files du project B4A.
File.DirRootExternal était disponible jusqu'à la version 26 de Android.
Google supprime pratiquement tous les accès à des fichiers extérieurs.
Il semble qu'il y a des solutions, mais je n'ai pas encore regardé dans le détails. Il faut chercher sur le forum.
Dans mes application, je suis le seul utilisateur, il n'y en a aucune sur Play Store, je reste avec la version 26 d'Android et File.DirRootExternal.
Je verrais combien de temps Google autorise de charger des applications prévues pour d'anciennes versions d'Android.
 
Last edited:

yfleury

Active Member
Licensed User
Longtime User
Tu ne trouveras pas, c'est un répertoire caché uniquement accessible par ton application. Cependant, a partir de ton application, tu peux copier la bd que tu as dans ton file.dirassets (qui est toujours en lecture seul) vers le répertoire file.dirinternal (lecture et écriture)

Tu dois programmer la copie dans l'application uniquement, parce que le répertoire file.dirinternal est protégé par Android et cela protège ton application

Une fois la copie faite, tu accède a la bd dans file.dirinternal)
 

sultan87

Active Member
Licensed User
Longtime User
Bonjour à tous
grâce à votre aide, je peux ouvrir la BD et insérer des infos
j'ai un problème, lorsque je regarde la BD de mon répertoire Files (File.DirAssets) avec DB Browser, je ne retrouve pas les enregistrements ajoutés (File.DirInternal)
If File.Exists(File.DirInternal,"LaMieCaline.db" =False) Then
File.Copy(File.DirAssets,"LaMieCaline.db",File.DirInternal,"LaMieCaline.db")
End If
sql1.Initialize(File.DirInternal,"LaMieCaline.db",True)

quid
Pierre
 

Serge Bertet

Active Member
Licensed User
Au lieu de :
If File.Exists(File.DirInternal,"LaMieCaline.db" =False) Then
ce serait plutôt :
If File.Exists(File.DirInternal,"LaMieCaline.db") = False Then
mais je pense que c'est qu'une erreur de frappe ...
 

yfleury

Active Member
Licensed User
Longtime User
Comme je l'ai écrit File.DirAssets est en lecture seulement. C'est pourquoi on doit le copier dans File.DirInternal et là, la bd peut recevoir les écritures / lectures.
Il est donc normal que qu'il n'y a pas de modification de la bd dans DirAssets
Si tu dois absolument voir le contenu de la bd qui est modifier par l'application tu as 3 choix
1) afficher les données que tu as besoin à même l'application. C'est le plus simple, ou
2) envoyer une copie de la bd par courriel, voir (intent dans le forum) Celà se fait un peu plus compliqué, mais réalisable, ou
3) copier la bd dans un répertoire d'Android qui est lisible par Explorateur de Fichier de Windows.... Mais Google complique terriblement cette tâche.
 

sultan87

Active Member
Licensed User
Longtime User
Klaus a dit
Dans mes application, je suis le seul utilisateur, il n'y en a aucune sur Play Store, je reste avec la version 26 d'Android et File.DirRootExternal.
comment faire
 

yfleury

Active Member
Licensed User
Longtime User
B4X:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="30"/>
Remplace le 30 par 26...

tu trouvera ca dans l'éditeur de manifest
 

sultan87

Active Member
Licensed User
Longtime User
Au lieu de :
If File.Exists(File.DirInternal,"LaMieCaline.db" =False) Then
ce serait plutôt :
If File.Exists(File.DirInternal,"LaMieCaline.db") = False Then
mais je pense que c'est qu'une erreur de frappe ...
merci, c'est effectivement une erreur de frappe
 

sultan87

Active Member
Licensed User
Longtime User
mon fichier zip fait 1700 ko et quand je l'attache il me dit qu'il est trop gros
 

zed

Active Member
Licensed User
Salut Sultan87

Upload ton fichier zip sur un cloud et insert le lien dans ton message.
 
Top