2013-07-17 2 views
0

Я довольно новичок в разработке Android и сейчас я пытаюсь создать базу данных через класс, расширяющий SQLiteOpenHelper. Я уверен, что данные хранятся где-то на моем Nexus 7 (устройство, которое я использую для тестирования своих приложений), однако я не могу найти путь к базе данных.Поиск пути базы данных невозможен

Я смотрел вокруг других подобных вопросов и ответов на все вопросы указывают на нахождение базы данных на данных/данных/com.example.projet_name/баз данных/database_name, но у меня нет такой путь на устройстве.

Любые идеи о том, что может быть проблемой? Или, может быть, есть другие пути, которые я должен искать?

Спасибо за ваше время.

EDITED:

Пожалуйста, найти свой код here из моего предыдущего поста.

Теперь я получаю следующую ошибку при запуске приложения. Надеюсь, это поможет.

07-17 08:28:20.130: E/libgps(486): LIBGPS: Cannot communicate (write) with a GPSD 
07-17 08:28:20.130: E/libgps(486): IPC Communication Error, /tmp/11862727/customers/Asustek/Tabletandroid/../../../proprietary/deliverables/android/gps_interface/../gps_interface/gpsi_client/GpsiClient.cpp:1178 agps_ril_update_network_state 
+1

может у поста код? – user1140237

+0

Я отредактировал главный пост для кода. – ClaireG

ответ

0

Как насчет установки DBName как полный путь:

String DATABASE_NAME = "/data/data/"+packageName+"db.db"; 

или кладете дб в SD карты:

String DATABASE_NAME= Environment.getExternalStorageDirectory()+packageName+"db.db"; 

пройти DBPATH в вашем коде:

public DatabaseImplementation(Context context) 
{ 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 
+0

Привет, kevinhoo, я пробовал делать то, что вы предлагали, и теперь я получаю предыдущий erro «К сожалению, app_name остановлено. Может быть, я смотрю неправильную папку? На моем Nexus 7 я вхожу в файл ASTRO File Manager> sdcard> Android> data Я знаю, что я должен искать базу данных? – ClaireG

+0

1.which DATABSE_NAME вы использовали, когда вы получили ошибку? Попробуйте заменить «/ data/data /» на context.getCacheDir()? 2. путь к SD-карте в моем galaxy is/storage/sdcard0/ – kvh

+0

Я использовал оба предложения, и оба они предоставили мне ту же ошибку. 'private static final String DATABASE_NAME = Environment.getExternalStorageDirectory() +" testdatabase/TestDatabase.db ";' и 'private static final String DATABASE_NAME = "/data/data/testingdatabase/TestDatabase.db"; 'с' context.getCacheDir(); 'У меня нет никаких ошибок, однако я до сих пор не могу найти базу данных. Забавно, что я даже не могу найти имя пакета в хранилище/sdcard/Android/data .. – ClaireG

0

, если вы пытаетесь получить базу данных, которая является хранится в аппликационном пакете с устройства, вы не получите прямой доступ с устройства/данных/данных/app packagename/databases/.. вы можете получить доступ и изменить с помощью helperclass bt direct export nt poss AFAIK ... bt от эмулятора u cn gt

enter image description here

Если экспортировать базу данных из в сд карты из приложений пакета

попробовать этот

private void copyFromDataPackgeToSdCard() throws IOException { 
    try { 
     File sdCard = Environment.getExternalStorageDirectory(); 
     File appDataDir = Environment.getDataDirectory(); 
     if (sdCard.canWrite()) { 
      String currentDBPath = "//data//" + getPackageName() 
        + "//databases//" 
        + DatabaseImplementation.DATABASE_NAME; 
      String backupDBPath = DatabaseImplementation.DATABASE_NAME; 
      File currentDatabase = new File(appDataDir, currentDBPath); 
      File backupDatabase = new File(sdCard, backupDBPath); 

      if (currentDatabase.exists()) { 
       FileChannel src = new FileInputStream(currentDatabase) 
         .getChannel(); 
       FileChannel dst = new FileOutputStream(backupDatabase) 
         .getChannel(); 
       dst.transferFrom(src, 0, src.size()); 
       src.close(); 
       dst.close(); 
      } 
     } 
    } catch (Exception e) { 
     Log.e("copyFromDataPackgeToSdCard", e.getMessage()); 
    } 
} 
+0

Я не запускаю приложение на эмуляторе. Я запускаю его на реальном устройстве. В проводнике файлов никакие другие файлы/папки не хранятся в папке с данными или в папке sdcard. – ClaireG

+0

AFAIK direct we can not access from file manager ... вам нужно скопировать вставку db. – user1140237

+0

Я не могу понять, что вы подразумеваете под копией/вставкой базы данных. – ClaireG