2010-06-22 4 views
1

В настоящее время я занимаюсь отладкой, и мне было интересно, можно ли отображать содержимое базы данных SQLite через SDK? Я знаю, что это можно сделать с помощью запросов по телефону. Но мне было любопытно, можете ли вы сделать это через SDK?Как отобразить базу данных SQLite через SDK?

+0

вы хотите, чтобы просмотреть содержимое БД для себя, или вы хотите, чтобы просмотреть и использовать эти данные в вашем приложении? –

+0

Я думаю, что никто не понимает, что вам нужно. Вы хотите видеть контент через eclipse или хотите увидеть некоторые значения в db? – the100rabh

+1

Я не буду перечислять строки и то, что они содержат в затмении или каким-то другим образом на экране компьютеров, а не на телефоне. – Skizit

ответ

4
  • Экспорт базы данных в файл sdcard, и каждый раз, когда вы должны копировать на свой компьютер и открывать какой-либо инструмент SQLite Manager, для этого я использую плагин Firefox. Там просто мне не нужно снова открывать базу данных снова и снова, просто нажмите кнопку обновления, и таблицы будут обновлены.

Файл-менеджер Eclipse можно использовать для получения файла с устройства, начиная с SD-карты, когда он находится в режиме usb. У вас есть этот параметр только в том случае, если вы не можете подключить устройство к Eclipse и подключить SD-карту одновременно. Вы должны использовать Eclipse.

Вот код, чтобы экспортировать базу данных в SDCard

/* 
    * Task to backup the database to the SDCard 
    */ 
    public static class ExportDatabaseFileTask extends AsyncTask<String, Void, Boolean> { 
     private Context ctx; 

     /** 
     * 
     */ 
     public ExportDatabaseFileTask(Context ctx) { 
      super(); 
      this.ctx=ctx; 
     } 

     // automatically done on worker thread (separate from UI thread) 
     protected Boolean doInBackground(final String... args) { 

      File dbFile = 
        new File(Environment.getDataDirectory() + "/data/[com.your.pkg]/databases/[pkg]"); 

      File exportDir = new File(Environment.getExternalStorageDirectory(), ""); 
      if (!exportDir.exists()) { 
       exportDir.mkdirs(); 
      } 
      File file = new File(exportDir, dbFile.getName()); 

      try { 
       file.createNewFile(); 
       this.copyFile(dbFile, file); 
       return true; 
      } catch (IOException e) { 
       Log.e("birthdroid", e.getMessage(), e); 
       return false; 
      } 
     } 

     // can use UI thread here 
     protected void onPostExecute(final Boolean success) { 
      if (success) { 
       Toast.makeText(ctx, "Export successful!", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(ctx, "Export failed", Toast.LENGTH_SHORT).show(); 
      } 
     } 

     void copyFile(File src, File dst) throws IOException { 
      FileChannel inChannel = new FileInputStream(src).getChannel(); 
      FileChannel outChannel = new FileOutputStream(dst).getChannel(); 
      try { 
       inChannel.transferTo(0, inChannel.size(), outChannel); 
      } finally { 
       if (inChannel != null) 
       inChannel.close(); 
       if (outChannel != null) 
       outChannel.close(); 
      } 
     } 

    } 
  • На курсора вы всегда можете позвонить:

    DatabaseUtils.dumpCursorToString (дворняжка);

получить необработанный строковое представление курсора

+0

Вам не нужно экспортировать файл на SD-карту, если вы используете эмулятор. Вы можете использовать представление eclipse ddms для просмотра внутреннего хранилища эмуляторов и сохранения формы файла в вашей файловой системе. – Janusz

+0

Но на телефонах, где у вас нет корневого доступа, вы должны делать это так. – Pentium10

+0

Это решение дает мне IOException: Permission Denied при попытке создать новый файл. Как это обойти? – Lunchbox

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