Код Android SQLite не работает после перехода с Mac OSX на Windows 7 - PullRequest
0 голосов
/ 12 марта 2012

Прошлой ночью у меня был этот код , работающий дома, и Whatzit был хорошей помощью.Я все заработал (прокомментировал проверку существования dbFile и просто скопировал все изменения в базу данных, которые я хотел сделать с помощью браузера sqlite).

Этим утром я принес свой планшет на компьютер с Windows 7, удалил приложение и попытался запустить тот же код из затмения.Я получаю сообщение об ошибке:

03-12 11: 51: 39.320: E / AndroidRuntime (20365): причина: java.io.IOException: попытка скопировать базу данных - ОШИБКА: / data/data/mypackage/databases/restaurant.db: открыть не удалось: ENOTDIR (не каталог)

Я заархивировал свой проект на моем Mac и разархивировал его в тот же каталог проекта в eclipse наWindows-машина и затмение просто выполнили обновление.

Хотите узнать, что я могу попробовать?Я попытался удалить приложение, скопировать .apk обратно и установить его снова, но ничего не работает.спасибо.

* Я действительно запускаю это на реальном устройстве - Motorola Xoom 4.0.3

    private void copyDataBase(File dbFile) throws IOException {
    try{
        InputStream dbStream = myDbContext.getAssets().open(dbName);
        Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canRead());
        Log.e("In copyDataBase", "Environment Directory: " + Environment.getDataDirectory().canWrite());
        Log.e("In copyDataBase", "Environment Directory: " + Environment.getExternalStorageDirectory());
        Log.e("In copyDataBase", "opened up file " + dbName + " successfully. - trying " + path.toString());
        OutputStream newDbFile = new FileOutputStream(DB_PATH + dbName);

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

        newDbFile.flush();
        newDbFile.close();
        dbStream.close();
    }
    catch(IOException e){

        throw new IOException("trying to copy the database - ERROR: " + e.getMessage());
    }   

}

результаты canWrite и canRead возвращаются как ложные.Как бы я ни печатал здесь, это работало безупречно.Я не знаю, почему подключение планшета к машине под управлением Windows, работающей с той же версией, что и eclipse, имело бы какое-то значение.

1 Ответ

0 голосов
/ 12 марта 2012

Вы получаете сообщение о том, что указанный каталог не существует.Вы явно используете это на новом виртуальном устройстве правильно?Является ли версия Android такой же, как у вас изначально?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...