2015-11-12 2 views
1

Итак, я знаю, что подобные вопросы были заданы, но я не могу найти то, что подходит для моего точного случая.Импорт существующей базы данных SQLite в приложение для Android

У меня есть приложение, которое создает базу данных и заполняет ее и т. Д., Но у меня нет доступа root на моем устройстве, так что вот моя проблема. Мне нужно заполнить эту базу данных некоторыми значениями, а затем импортировать их в мое приложение/устройство.

Если у меня был доступ к корню, я мог просто пойти и заменить базу данных в папке /data/data/com.my.application/databases, но поскольку у меня нет доступа root, мне нужно иметь возможность импортировать эту базу данных что я перешел в это место и заменил стандартный.

Может ли кто-нибудь помочь мне вместе с кодом или примером того, как импортировать базу данных в эту папку? Мне просто нужно иметь возможность импортировать и заменять существующую.

Спасибо, Wihan

+0

Найден ответ здесь, который, похоже, работает. http://stackoverflow.com/questions/2078710/android-adb-access-to-application-databases-withoutroro –

ответ

4

Вы можете использовать эту библиотеку, чтобы использовать импортную базу данных на устройстве:

https://github.com/jgilfelt/android-sqlite-asset-helper

Как указано на документации нужно просто поместить файл базы данных на активов в каталоге под названием базы данных /assets/databases/database.db

Затем введите класс DBHelper, который простирается от SQLiteAssetHelper следующим образом:

public class DBHelper extends SQLiteAssetHelper { 

    private static final String DATABASE_NAME = "example.db"; 
    private static final int DATABASE_VERSION = 1; 

    public DBHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

} 

И теперь вы можете получить доступ к вашим данным с помощью контент-провайдеров и всего остального.

Также вы можете использовать http://sqlitebrowser.org/ для создания вашей предварительно загруженной базы данных на вашем компьютере.

Надеюсь, это поможет.

0
public String loadJSONFromAsset(Context context) { 
     String json = null; 
     try { 
      InputStream is = context.getAssets().open("Hospital.db"); 
      int size = is.available(); 
      OutputStream myoutput = new FileOutputStream("/data/data/-----PACKAGE NAME------/databases/Hospital.db"); 

      byte[] buffer = new byte[size]; 
      int length; 
      while ((length = is.read(buffer)) > 0) { 
       myoutput.write(buffer, 0, length); 
      } 

      //Close the streams 
      myoutput.flush(); 
      myoutput.close(); 
      is.close(); 
//   byte[] buffer = new byte[size]; 
//   is.read(buffer); 
//   is.close(); 
//   json = new String(buffer, "UTF-8"); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
      return null; 
     } 
     return json; 
    } 
+0

- это прокомментированные строки? – user7294900

+0

Замените его своим именем пакета! @ user7294900 – Xenolion

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