2016-02-04 2 views
-3

Я создал базу данных sqlite в android, как показано в приведенном ниже коде, и я добавил некоторые записи к нему. то я хотел скопировать эту базу данных, чтобы использовать ее в приложении anothe , моя база данных называется «GEOLOC.db», и я искал ее, но она не была найдена, несмотря на то, что она содержит данные.Могу ли я указать путь к базе данных sqlite

пожалуйста, дайте мне знать

1-как знать, где SQLite базы данных сохраняется

2-я может указать путь к которому Databse будет сохранен?

код:

public class SQLiteHelper extends SQLiteOpenHelper { 

private final String TAG = this.getClass().getSimpleName(); 

private static final int DATABASE_VERSION = 2; 
private static final String DATABASE_NAME = "GEOLOC.db";//can i specify a pth here?? 
private static final String DATABASE_TABLE_NAME = "NODE_00"; 

private Context mCtx = null; 

public SQLiteHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    this.mCtx = context; 
} 
+3

Возможного дубликата [Как использовать существующую базу данных с приложением для Android] (http://stackoverflow.com/questions/91 09438/how-to-use-an-existing-database-with-anroid-application) – 323go

+1

«Как узнать, где хранится база данных sqlite» - [вызов 'getDatabasePath (" GEOLOC.db ")'] (http://developer.android.com/reference/android/content/Context.html#getDatabasePath%28java.lang.String%29) на каком-нибудь удобном 'Context'. «Могу ли я указать путь, по которому будет сохраняться база данных?» - Я думаю, что работает с API уровня 8 или 9, хотя обычно нет необходимости менять путь. – CommonsWare

ответ

0

Обычно конкретная база данных SQLite является специфическим для одного приложения. Однако вы не сможете просмотреть его, если телефон не укоренен. На самом деле это обычно находится по следующему пути:

//data/data/<Your-Application-Package-Name>/databases/<your-database-name> 

Имя пакета приложений можно получить, используя следующий код:

PACKAGE_NAME = getApplicationContext().getPackageName(); 

Имя базы данных хранится в классе, который расширяет SQLiteOpenHelper через следующее объявление:

private static final String DATABASE_NAME = "buspass"; 

для обмена данными между приложениями (provied, что они оба были разработаны вами), вам нужно будет указать общий идентификатор пользователя в файле манифеста обоих приложений.

Используйте те же самые DBAdapter в обоих приложениях. В приложении, которое размещает базу данных, вызовите DBAdapter с родным контекстом.

DBadapter hostDBAdapter = new DbAdapter(getApplicationContext()); 
performerDBadapter.open(); 
In the second app, access the database with the context of the database hosting app. 
First, define the shared context: 

Context sharedContext = null; 
    try { 
     sharedContext = this.createPackageContext("replace.with.host.package.name", Context.CONTEXT_INCLUDE_CODE); 
     if (sharedContext == null) { 
      return; 
     } 
    } catch (Exception e) { 
     String error = e.getMessage(); 
     return; 
     } 

Затем откройте DBAdapter с общим контекстом:

DbAdapter sharedDBadapter = new PerformerDbAdapter(sharedContext); 
sharedDBadapter.open(); 

файл манифеста должен иметь следующий код:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="my.app" ... > 

Надеется, что это помогает :)

+0

этот ответ помог вам? если да, пожалуйста, поддержите :) –

Смежные вопросы