Aller au contenu

comment utiliser un fichier .sqilte dans une appli Android ?????


Recommended Posts

bonjour tlm

quelqu'un peut etre peux m'aider, j'ai une Base de donnée sous forme de fichier .sqilte que j'ai créer avec sqlite manager, je souhaite utiliser ce fichier dans mon appli j e ne sais pas comment faire pour ce connecter a ce fichier et utiliser les données ????

merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Je crois que tu ne peux travailler qu'avec des bases de données en *.db, tout du moins c'est l'extension qui est produite lorsque tu crées une base de données depuis ton application.

Cependant l'accès au base depuis le téléphone se fait grâce à sqlite3. Donc il est peut être possible que ça marche.

Pour comprendre comment fonctionne l'accès aux bases de données, je te conseille de suivre le tutoriel sur le NotePad : http://developer.android.com/guide/tutorials/notepad/index.html

Tu verras comment on crée une base, comment on y accède, et comment on peut récupérer certains éléments.

Bon courage ;)

Lien vers le commentaire
Partager sur d’autres sites

Peut importe l'extension ... ton fichier doit simplement être du SQLite 3.

En ce qui concerne le fonctionnement, tu remarquera qu'une base de donnée SQLite Android comporte une table supplémentaire (meta) qui contient des informations sur la localisation entre autre. Si tu veux utiliser ta propre base de donnée créée à partir d'une autre source qu'Android alors il va te falloir mettre les mains dans le cambouis avec des classes du packages android.database :)

Bon courage

Lien vers le commentaire
Partager sur d’autres sites

  • 4 months later...

Coucou tout le monde!

Désolé pour le déterrage mais j'ai un peu le même souci: je souhaite utiliser un fichier sqlite dans mon projet Android.

J'ai suivi ce début de tuto:

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

J'ai bien ajouté la table "android_metadata", mais je me retrouve toujours avec une base vide.

A la première execution, j'obtiens ca:

11-02 16:42:18.012: ERROR/Database(226): sqlite3_open_v2("/data/data/MonAppli/databases/MaBDD", &handle, 1, NULL) failed

et :

11-02 16:42:18.202: ERROR/AndroidRuntime(226): Uncaught handler: thread main exiting due to uncaught exception
11-02 16:42:18.223: ERROR/AndroidRuntime(226): java.lang.Error: Erreur a la copie de la base de données
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at com.MonAppli.BddHelper.createDataBase(BddHelper.java:42)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at com.MonAppli.main.test(main.java:26)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at com.MonAppli.main.onCreate(main.java:18)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.os.Looper.loop(Looper.java:123)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at android.app.ActivityThread.main(ActivityThread.java:4203)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at java.lang.reflect.Method.invokeNative(Native Method)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at java.lang.reflect.Method.invoke(Method.java:521)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
11-02 16:42:18.223: ERROR/AndroidRuntime(226):     at dalvik.system.NativeStart.main(Native Method)

Et à chaque nouveau lancement:

11-02 16:49:04.982: ERROR/AndroidRuntime(502): Uncaught handler: thread main exiting due to uncaught exception
11-02 16:49:05.002: ERROR/AndroidRuntime(502): java.lang.RuntimeException: Unable to start activity ComponentInfo{MonAppli/MonAppli.main}: android.database.sqlite.SQLiteException: no such table: MaTable: , while compiling: SELECT Code, Nom, Autorise FROM MaBDD
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.os.Looper.loop(Looper.java:123)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.app.ActivityThread.main(ActivityThread.java:4203)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at java.lang.reflect.Method.invokeNative(Native Method)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at java.lang.reflect.Method.invoke(Method.java:521)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at dalvik.system.NativeStart.main(Native Method)
11-02 16:49:05.002: ERROR/AndroidRuntime(502): Caused by: android.database.sqlite.SQLiteException: no such table: MaTable: , while compiling: SELECT Code, Nom, Autorise FROM MaBDD
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteProgram.native_compile(Native Method)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1118)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1006)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:964)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1041)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at MonAppli.main.test(main.java:37)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at MonAppli.main.onCreate(main.java:18)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
11-02 16:49:05.002: ERROR/AndroidRuntime(502):     ... 11 more

D'après ce que je peux comprendre, le problème viendrait du premier lancement, à la copie de la BDD...

Ma BDD est placée dans le répertoire "assets"... Est ce que c'est bien, pas bien? Sinon, ou dois-je le placer?

Si vous avez besoin de bouts de code, n'hésitez pas...

Et merci d'avance pour le coup de main...

Lien vers le commentaire
Partager sur d’autres sites

Salut et merci pour ta réponse!

J'avais commencé à jeter un oeil à ton post mais je me suis arrêté à la partie où il faut splitter la bdd..

Est ce que j'ai besoin de le faire étant donné que ma base fait moins de 100Ko?

Elle est toute petite (1 table avec 300 entrées, deux avec 700 entrées et deux avec 50...)

En tout cas, je vire la metadata... Merci... lol.. Ca fera gagner quelques octets... MDR :D

Edit : Je viens de regarder, mon fichier .sqlite fait 46Ko... lol

Edit 2: Je viens de réussir à le faire. Alors pour ceux que ca intéresse, le fichier .sqlite doit être placé dans "Assets" puis, effectivement, il FAUT créer une nouvelle base vide dans l'apli puis faire une copie par bytes de notre fichier vers la base vierge pour l'écraser.

Modifié par Kricek
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Salut et merci pour ta réponse!

J'avais commencé à jeter un oeil à ton post mais je me suis arrêté à la partie où il faut splitter la bdd..

Est ce que j'ai besoin de le faire étant donné que ma base fait moins de 100Ko?

Elle est toute petite (1 table avec 300 entrées, deux avec 700 entrées et deux avec 50...)

En tout cas, je vire la metadata... Merci... lol.. Ca fera gagner quelques octets... MDR :D

Edit : Je viens de regarder, mon fichier .sqlite fait 46Ko... lol

Edit 2: Je viens de réussir à le faire. Alors pour ceux que ca intéresse, le fichier .sqlite doit être placé dans "Assets" puis, effectivement, il FAUT créer une nouvelle base vide dans l'apli puis faire une copie par bytes de notre fichier vers la base vierge pour l'écraser.

Réponse malgré tout :

en fait la partie ou je splitte la base de donnée est inutile.

Je le faisais parce que je mettais la base de données dans les resources, ou un fichier ne peut pas etre plus gros que 1 Mo, mais on peut aussi mettre les fichiers dans le répertoire Assets, effectivement, ou il n'y a plus la limite de 1 Mo par fichier...

Emmanuel / Alocaly

Lien vers le commentaire
Partager sur d’autres sites

Je le faisais parce que je mettais la base de données dans les resources, ou un fichier ne peut pas etre plus gros que 1 Mo, mais on peut aussi mettre les fichiers dans le répertoire Assets, effectivement, ou il n'y a plus la limite de 1 Mo par fichier...

Du coup, concrètement, quelle est la différence entre le répertoire Assets et le répertoire Resources? Concrètement, pourquoi placeer mon fichier plus dans l'un que dans l'autre?

Lien vers le commentaire
Partager sur d’autres sites

  • 6 months later...

salut

j'ai une base de données cree sous sqliteadmin et je suis entrain de develpper une application android sous eclipse comment je peut faire une connection pour untiliser cette base dans mon application?????????

merci

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
  • 11 months later...
  • 3 years later...

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...