Копирование базы данных работает на эмуляторе, но не на устройстве - PullRequest
0 голосов
/ 17 сентября 2011

Это работает на эмуляторе, но не на моем телефоне.По крайней мере, так кажется, потому что он не находит таблицу, когда я запрашиваю ее по телефону.

Это мой класс, который наследуется от SQLiteOpenHelper

public class DBHelper extends SQLiteOpenHelper {

private final static String DB_NAME = "klb_db.sqlite";
private final static int DB_VERSION = 1;

private String dbPath;
private Context context;

public DBHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);

    this.context = context;
    dbPath = "/" + Environment.getDataDirectory() + "/data/" + context.getPackageName() + "/databases/";
}

public void initializeDatabase() {
    try {
        File file = new File(dbPath + DB_NAME);
        if (!file.exists()) {
            InputStream inputStream = context.getAssets().open(
                    "klb_db.sqlite");
            OutputStream outputStream = new FileOutputStream(file);

            byte[] buffer = new byte[1024];
            int length;
            while ((length = inputStream.read(buffer)) > 0) {
                outputStream.write(buffer, 0, length);
            }

            inputStream.close();
            outputStream.close();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

В dbadapter, открыть метод:

    public DBAdapter open() {
    dbHelper.initializeDatabase();
    db = dbHelper.getWritableDatabase();
    return this;
}

В деятельности, которая его использует:

    @Override
protected void onStart() {
    super.onStart();

    QuizDAO quizDAO = new QuizDAO(this);
    quizDAO.open();
    Cursor cursor = quizDAO.getQuestion(10);
    Toast.makeText(this, cursor.getString(1), Toast.LENGTH_LONG).show();
}

1 Ответ

2 голосов
/ 17 сентября 2011

попробуйте увеличить ваши байты

byte[] buffer = new byte[1024];

до

byte[] buffer = new byte[2048];

EDITED

@Override
protected void onStart() {
    super.onStart();

    QuizDAO quizDAO = new QuizDAO(this);
    quizDAO.open();
    Cursor cursor = quizDAO.getQuestion(10);
    cursor.moveToFirst()
    Toast.makeText(this, cursor.getString(1), Toast.LENGTH_LONG).show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...