2011-09-13 6 views
2

Je suis un débutant pour le développement android alors s'il vous plaît ours avec moi. Ma question est que j'ai un fichier SQLite externe que je veux accéder via Android, ce que nous faisons normalement dans iPhone ou Windows que nous ajoutons simplement le fichier SQlite comme une ressource et y accéder, mais je suis incapable de faire la même chose. J'ai suivi l'instruction donnée ici Link mais cela donne une erreur "impossible d'ouvrir le fichier de base de données".Accéder à un fichier SQLite externe, Android

Modifié:

09-14 23:31:59.008: INFO/Database(335): sqlite returned: error code = 14, msg = cannot open file at source line 25467 
09-14 23:31:59.008: ERROR/Database(335): sqlite3_open_v2("/data/data/com.mobile.socket.server/databases/Database/DictionaryDb.sqlite", &handle, 2, NULL) failed 

Mon DbHelper Classe:

package com.dbhandler; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.database.sqlite.SQLiteStatement; 

public class DbHelper extends SQLiteOpenHelper 
{ 
    //The Android's default system path of your application database. 
    private String DB_PATH = "";//"/data/data/com.mobile.socket.server/databases/"; 

    private static String DB_NAME = "DictionaryDb.db"; 

    private SQLiteStatement insertStmt; 

    private SQLiteDatabase myDataBase; 

    /** 
    * Constructor 
    * Takes and keeps a reference of the passed context in order to access to the application assets and resources. 
    * @param context 
    */ 
    public DbHelper(Context context) 
    { 
     super(context, DB_NAME, null, 1); 
     //CreateDatabase(); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     myDataBase = db; 
    } 

    private void CreateDatabase() 
    {  
     try 
     { 
      String myPath = DB_PATH + DB_NAME;  
      myDataBase = SQLiteDatabase.openOrCreateDatabase(myPath, null); 
      final String CREATE_TABLE_WORDS = "CREATE TABLE WordsTable (WordId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , Word TEXT NOT NULL)"; 
      final String CREATE_TABLE_MEANINGS = "CREATE TABLE MeaningTable (MeaningId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , WordId INTEGER NOT NULL , Meaning TEXT NOT NULL)"; 
      myDataBase.execSQL(CREATE_TABLE_WORDS); 
      myDataBase.execSQL(CREATE_TABLE_MEANINGS); 
     } 
     catch (Exception e) 
     { 
      e.fillInStackTrace(); 
     } 
    } 

    public boolean AddNewWord(String word) 
    { 
     CreateDatabase(); 
     String myPath = DB_PATH + DB_NAME;  
     //ContentValues newRecord = new ContentValues(); 
     boolean RetVal = false; 
     try 
     { 
      final String INSERT = "Insert into WordsTable(Word) Values('"+word+"')"; 
      myDataBase = myDataBase.openDatabase(DB_NAME, null,SQLiteDatabase.OPEN_READWRITE); 
      insertStmt = myDataBase.compileStatement(INSERT); 
     // myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 
      //newRecord.put("Wordstable", word); 
      //long newWordid = myDataBase.insert("Wordstable", null, newRecord); 
     } 
     catch (SQLException e) 
     { 
      e.fillInStackTrace(); 
     } 
     return RetVal; 
    } 
    @Override 
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
     // TODO Auto-generated method stub 

    } 

} 
+1

Après la sortie de logcat, assurez-vous que le fichier existe à l'emplacement attendu. –

+0

fichier existe dans l'emplacement, je vais attacher le logcat ASAP – KhanZeeshan

+0

Aussi ce même message d'erreur est levé si je crée une nouvelle base de données comme indiqué ici "http://www.higherpass.com/Android/Tutorials/Accessing-Data- Avec-Android-Cursors/" – KhanZeeshan

Répondre

1

j'ai pu comprendre cela moi-même, la fonction OnCreate de SqLiteHelper était pas appelé alors dans le constructeur de classe I appelé this.getWritableDatabase() cette fonction forcée "OnCreate" qui a créé mon objet de base de données, j'ai pu faire mon travail.

Questions connexes