我的android應用程序需要使用已存在的SQLiteDatabase文件(xxx.db),在eclipse項目中,我應該在哪個項目文件夾中放入這個數據庫文件?以及如何在我的代碼中獲取數據庫?如何在android應用程序中獲取自己的SQLiteDatabase文件?
0
A
回答
1
只需將您的xxx.db文件放入您的資產文件夾即可。
public class DatabaseHelper extends SQLiteOpenHelper {
private static String TAG = "DataBaseHelper"; // Tag just for the LogCat window
// destination path (location) of our database on device
private static String DB_PATH = "";
private static String DB_NAME = "xxx.db";// Database name
private SQLiteDatabase mDataBase;
private final Context mContext;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 1);// 1? its Database Version
if (android.os.Build.VERSION.SDK_INT >= 4.2) {
DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
} else {
DB_PATH = context.getFilesDir().getPath() + context.getPackageName() + "/databases/";
}
this.mContext = context;
}
public void createDataBase() throws IOException {
// If database not exists copy it from the assets
boolean mDataBaseExist = checkDataBase();
if (!mDataBaseExist) {
this.getReadableDatabase();
this.close();
try {
// Copy the database from assests
copyDataBase();
Log.e(TAG, "createDatabase database created");
} catch (IOException mIOException) {
throw new Error("ErrorCopyingDataBase");
}
}
}
// Check that the database exists here: /data/data/your package/databases/Da
// Name
private boolean checkDataBase() {
File dbFile = new File(DB_PATH + DB_NAME);
return dbFile.exists();
}
// Copy the database from assets
private void copyDataBase() throws IOException {
InputStream mInput = mContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream mOutput = new FileOutputStream(outFileName);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer)) > 0) {
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();
}
// Open the database, so we can query it
public boolean openDataBase() throws SQLException {
String mPath = DB_PATH + DB_NAME;
mDataBase = SQLiteDatabase.openDatabase(mPath, null,
SQLiteDatabase.CREATE_IF_NECESSARY);
return mDataBase != null;
}
@Override
public synchronized void close() {
if (mDataBase != null)
mDataBase.close();
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
+0
...它不起作用!首先,您必須**將數據庫**從您的資產路徑複製到您的數據庫路徑。 –
+0
@ FrankN.Stein我發佈了我的代碼,但由於問題被標記爲重複,我刪除了我的代碼。我會再次發佈。 – CodeWarrior
+0
現在,這是一個很好的答案,+1。 –
相關問題
- 1. 在android中讀取你自己的應用程序文件?
- 2. 如何在'包中,在Android應用程序中獲取文件
- 3. Android:如何在自己的應用程序中使用Rsync?
- 4. 如何從應用程序自己的pamameter獲取uid?
- 5. 如何從xcode獲取自己的應用程序版本?
- 6. 如何從Android中的應用程序獲取文件
- 7. 在我自己的Android應用程序中閱讀郵件
- 8. 如何在Android上製作自己的應用程序地圖?
- 9. 如何我可以從我自己的應用程序在android
- 10. 我如何使用.apk文件進入我自己的應用程序android?
- 11. 獲取HWND爲我自己的應用程序在C
- 12. 如何用應用程序自己修改android應用程序的版本碼?
- 13. 如何在Android上的應用程序中讀取文件?
- 14. 如何以編程方式獲取前臺Android活動(在我自己的應用程序中)的快照?
- 15. 在UIImagePickerController中應用程序自己的圖像文件夾
- 16. Android - 如何獲取我自己的SharedPreferences
- 17. 如何在java應用程序中使用我自己的sikuli文件
- 18. 如何在Android應用程序中使用文件選取器
- 19. 如何從我自己的android應用程序啓動電報應用程序?
- 20. 如何從apk文件獲取Android應用程序名稱
- 21. 在我自己的應用程序中集成另一個Android應用程序
- 22. iPhone如何在將郵件應用程序中的文件傳遞給我自己的iPhone應用程序時獲取發件人電子郵件地址?
- 23. 如何獲取Android應用程序ID?
- 24. 在android程序中獲取.bin文件
- 25. 如何更新我自己的應用程序的Android?
- 26. 如何在Android應用程序中讀取pdf文件
- 27. 如何在Android應用程序中讀取doc文件
- 28. 在Android應用程序中從php文件獲取json
- 29. 用自己的C#應用程序打開自定義文件
- 30. 如何在Google應用程序腳本中獲取文件ID
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/,http://mobisys.in/blog/tag/shipping-of -external-database-to-application/ –