2015-04-15 4 views
1
String gaanaDB = "/data/data/com.xyz/databases/DB"; 
String converterDB = "/data/data/com.abc/databases/DB"; 
Runtime.getRuntime().exec("su"); 
Runtime.getRuntime().exec("busybox cp -f " + gaanaDB + " " + converterDB); 

DBhelper.javaОшибка копирования файлов базы данных

package com.aks.gaanaconverter.util; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DBHelper extends SQLiteOpenHelper { 
private static final String DATABASE_NAME = "GaanaDB"; 
private static final String TABLE_NAME = "table_track_metadata"; 
private static final String ID = "track_id"; 
private static final String NAME = "track_name"; 
private static final String HAS_DOWNLOADED = "has_downloaded"; 
private static final int HAS_DOWNLOADED_VALUE = 1; 

public DBHelper(Context context) { 
    super(context, DATABASE_NAME, null, 6); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase arg0) { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
    // TODO Auto-generated method stub 

} 

public Cursor getData() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("select " + ID + "," + NAME + " from " 
      + TABLE_NAME/* 
         * +" where "+HAS_DOWNLOADED+"="+HAS_DOWNLOADED_VALUE 
         */, null); 
    return res; 
} 
} 

, когда я пытаюсь получить доступ к базе данных он не проливает такой таблицы найдено.

Я пробовал команду в приложении Shell Commander, он отлично работает. Но когда я пытаюсь использовать его в своем приложении, он не копирует таблицы в базу данных.

Укорененный Kitkat и BusyBox установлены.

+0

Можете ли вы опубликовать выход или ошибку вы получаете? –

+0

это ошибка: android.database.sqlite.SQLiteException: нет такой таблицы: table_track_metadata (код 1): при компиляции: выберите track_id, track_name из table_track_metadata – aks

ответ

0

Попробуйте создать таблицу первой:

public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE if not exists table_track_metadata(track_id INTEGER PRIMARY KEY AUTOINCREMENT," 
      + "track_name" 
      + " TEXT,"...)"); 

} 
+0

, но я копирую эту базу данных из другой папки, тогда тоже мне нужно создать Это? – aks

+0

просто попробуйте, и скажите нам, если это работает –

+0

его создает пустую таблицу ... но я dont hav мои данные в ней, которые я пытаюсь скопировать с помощью суперпользователя – aks