具體錯誤:試圖訪問數據/數據/包/數據庫數據庫錯誤
注意當SQLite數據庫Android應用程式失敗:據我所知,很多文章都已發佈在Stackoverflow以及一些推薦的網站上,關於如何將資產文件夾中的sqlite文件複製到數據/數據/包/數據庫文件夾中。但是,我的實現只適用於仿真器而不是真正的設備。我想我錯過了一塊拼圖。
我的問題 任何人都可以找出我的代碼故障點?我真的認爲這是一個新的眼睛很快就會發現錯誤的問題之一。預先感謝您爲任何見解可以提供...
錯誤日誌(BOLD項是故障點): 11-02 20:22:17.045:INFO /過程(15318):發送信號。 PID:15318 SIG:9 11-02 20:22:17.055:INFO/ActivityManager(2697):進程com.game.myapp(pid 15318)已經死亡。 11-02 20:22:17.055:INFO /窗口管理(2697):WIN死亡:窗口{40922a70 com.game.myapp/com.game.myapp.MainActivity暫停=真}
我的代碼
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "ttg.db";
public static String DATABASE_PATH = "/data/data/com.game.myapp/databases/";
private SQLiteDatabase ttgDatabase;
private Context myContext = null;
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.myContext = context;
}
public void createDataBase() throws IOException{
boolean dbExist = checkDataBase();
if(dbExist){
//do nothing
}else{
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase(){
SQLiteDatabase checkDB = null;
try{
String myPath = DATABASE_PATH + DATABASE_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}
private void copyDataBase() throws IOException{
File fileTest = myContext.getFileStreamPath(DATABASE_NAME);
boolean exists = fileTest.exists();
if (!exists) {
OutputStream databaseOutputStream = new FileOutputStream(DATABASE_PATH + DATABASE_NAME);
InputStream databaseInputStream;
databaseInputStream = myContext.getAssets().open(DATABASE_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = databaseInputStream.read(buffer)) > 0) {
databaseOutputStream.write(buffer);
}
// Close the streams
databaseInputStream.close();
databaseOutputStream.flush();
databaseOutputStream.close();
}
}
public void openDataBase() throws SQLException{
//Open the database
String myPath = DATABASE_PATH + DATABASE_NAME;
ttgDatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}
@Override
public synchronized void close() {
if(ttgDatabase != null)
ttgDatabase.close();
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
哇靠你的縮進發生了什麼?我不知道什麼是什麼.. – Izkata
歡迎來到Stackoverflow!如果您發現回覆有幫助,請投票。如果回覆成功回答您的問題,請點擊旁邊的綠色複選標記以接受答案。另請看看http://stackoverflow.com/questions/how-to-ask關於如何寫一個好問題的建議 –
嗯,你發佈的日誌只顯示你的應用程序已經死亡,而不是它的原因。也許你可以發佈更長版本的日誌? AndroidRuntimeè所致: 沿東西線顯示java.lang.NullPointerException – kikoboar