2012-01-16 86 views
0

我正在寫一個android應用程序,它可以同時處理一些SQLite數據庫。 此應用程序可與由Mobile Atlas Creator創建的離線地圖數據庫一起使用。我有另一個數據庫,它包含有關這些映射的一些元數據(map_meta_db.sqlitedb)。 所有這些數據庫都存儲在外部SD卡中。Android SQLite寫入錯誤

所有地圖數據庫文件都已預先填充,因此我使用SQLiteDatabase.OPEN_READONLY標誌打開它們。

但是map_meta_db不是隻讀的,所以我用SQLiteDatabase.OPEN_READWRITE標誌打開它。

我已授予我的應用程序讀取和寫入在AndroidManifest.xml外置SD:

使用許可權的android:NAME =「android.permission.WRITE_EXTERNAL_STORAGE」

的問題是,我可以打開所有數據庫並讀取它們的數據,但是當我想向map_meta_db插入一條新記錄時,只是沒有任何反應!沒有例外,沒有插入!

try { 
    SQLiteDatabase map_meta_db = SQLiteDatabase.openDatabase(pathToMapMetadataDirectory + MAP_METADATA_DATABASE_NAME, null, SQLiteDatabase.OPEN_READWRITE); 

    metaDb.rawQuery(insertSql, null); 
} catch (Exception e) { 
    Log.d(DEBUG_TAG, "While inserting new record, an error occured:" + e.getMessage()); 
} 

任何想法?

+0

有什麼理由不使用'insert'方法? – Yogu

+0

您能否顯示SQL插入語句「insertSql」?是否有可能是SQL語句本身導致錯誤?可能是由於SQL命令中的語法錯誤造成的。 –

+0

如果你用'sqlite3'打開你的SD卡上的'adb shell'並打開這個db-file,你能在這種情況下成功執行插入操作嗎?另外,在'sqlite3'中,在你的元數據數據庫上執行'pragma integrity_check'。 – Jens

回答

0

也許你應該考慮建立類似SQLiteOpenHelper和創建你的數據庫這樣的:

private SQLiteDatabase database = helper.getWritableDatabase(); 

其中助手是所提到的實施SQLiteOpenHelper