2014-02-22 38 views
0

我有一個現有的數據庫,我已經能夠複製到我的文件資源管理器,去Youtube和tweeked代碼,但我得到3個數據庫。在/data/data/com.xxx.xxx/databases我得到以下內容:額外的數據庫正在被添加到Android文件瀏覽器

ab.sqlite - 這是我想要的 ab.sqlite-journal - 我認爲這是一個Android文件,需要下/data/data/com.xxx.xxx創建

現在我得到如下:

databasesab.sqlite - 從哪裏是這個未來?

這裏是DataBaseHelper代碼:

`private static final String DB_PATH ="/data/data/com.xxx.xxx/databases"; 
    private static final String DB_NAME ="ab.sqlite"; 
    private static final int DB_VERSION=1; 

//inserting Table names and column names 

public static final String TABLE_NAME = "abc"; 
public static final String COLUMN_ID = "_id"; 
public static final String COLUMN_1 = "Voltage"; 


public SQLiteDatabase dbSqlite; 

private final Context myContext; 

public DatabaseHelper (Context context) { 
    super(context, DB_NAME, null, DB_VERSION); 
    this.myContext = context; 
} 

@Override 
public void onCreate (SQLiteDatabase db) { 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

} 
public void createDatabase() { 
    createDB(); 
} 
private void createDB() { 
    boolean dbExist = DBExists(); 

    if (!dbExist) { 

     //Method we creates an empty database to default system location 
     //Overwrite the database with our database. 
     this.getReadableDatabase(); 

     //Copy the database we included 
     copyDBFromResource(); 
    } 
} 

    private boolean DBExists() { 

     SQLiteDatabase db = null; 

     try { 
      String databasePath = DB_PATH + DB_NAME; 
      db = SQLiteDatabase.openDatabase (databasePath, null, SQLiteDatabase.OPEN_READWRITE); 
      db.setLocale (Locale.getDefault()); 
      db.setVersion(1); 

     }catch (SQLiteException e) { 

      Log.e("SqlHelper", "database not found"); 

     } 
     if (db != null) { 

      db.close(); 

     } 

     return db !=null ? true : false; 

} 
    private void copyDBFromResource() { 

     InputStream inputStream = null; 
     OutputStream outStream = null; 
     String dbFilePath = DB_PATH + DB_NAME; 

     try { 

      inputStream = myContext.getAssets().open(DB_NAME); 

      outStream = new FileOutputStream(dbFilePath); 

      byte [] buffer = new byte [1024]; 
      int length; 
      while ((length = inputStream.read(buffer)) > 0) { 
       outStream.write(buffer, 0, length); 
      } 

      outStream.flush(); 
      outStream.close(); 
      inputStream.close(); 

     } catch (IOException e) { 

      throw new Error ("Problem copying database from resource file."); 

     } 

     } 
} 
`   

任何幫助將不勝感激,因爲我真的似乎無法找出問題。

回答

0

問題就在這裏:

private static final String DB_PATH ="/data/data/com.xxx.xxx/databases"; 
private static final String DB_NAME ="ab.sqlite"; 

這裏:

String databasePath = DB_PATH + DB_NAME; 

你缺少數據庫後斜線。

+0

Eclipse是建議不要硬編碼告訴我DB_PATH做到以下幾點: Context.getFilesDir()。getPath 這個formum的opion是什麼 – user3324600

+0

對不起,最後一件事...什麼是ab.sqlite-journal文件 – user3324600

+0

Eclipse是正確的,你不應該定義你的DB路徑..我通常這樣做:Strin g databasePath = context.getDatabasePath(DB_NAME).getAbsolutePath(); – JustinMorris

0

的問題是在這裏

String dbFilePath = DB_PATH + DB_NAME; 

這就是爲什麼你越來越databasesab.sqlite,數據庫+ AB

+0

非常感謝。像一個簡單的東西可以創造一個不同的世界。 – user3324600