SQLite Android - MODE_WORLD_WRITEABLE не может быть преобразован в переменную - PullRequest
1 голос
/ 26 марта 2012

Мое приложение - это приложение на звуковой панели, но в категориях много звуков.Каждая категория работает в разных видах деятельности.Итак, первое действие вызывает другие, когда пользователь выбирает категорию.

Приложение имеет более 200 звуков, и я начал создавать базу данных SQLite, чтобы пользователь мог выбирать любимые звуки и показывать их в отдельномактивность.

Он уже работает, но код находится в действии, когда я помещаю sqlite-код в метод внутри другого класса (если я хочу что-то изменить, это облегчит мою работу, потому что есть 20 категорий) он дал мне «не может быть преобразован в переменную» для MODE_WORLD_WRITEABLE.

Вот метод:

public void cria(String titulo,int id){
    SQLiteDatabase sampleDB = null;

    try {
        sampleDB =  this.openOrCreateDatabase(SAMPLE_DB_NAME, CODE_WORLD_WRITEABLE, null);

        sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " +
                SAMPLE_TABLE_NAME +
                " (titulo VARCHAR, id INT);");

        sampleDB.execSQL("INSERT INTO " +
                SAMPLE_TABLE_NAME +
                " Values ('" +
                titulo +
                "'," +
                id +
                ");");

    } catch (SQLiteException se ) {
        Log.e(getClass().getSimpleName(), "Could not create or Open the database");
    } finally {
        //nothin to do
    }
}

Я пытался использовать (String titulo, int id, Contextпродолжение) и cont.CODE_WORLD_WRITEABLE, но затем выдает ошибку типа openOrCreateDatabase is undefined for the type banco (banco is the class name).

Как я могу использовать openOrCreateDatabase в другом классе, который не является действием?Если вы, ребята, можете показать мне фрагмент.

========= РЕДАКТИРОВАТЬ ===========

Как zrgiu решил проблему, здесь идетмой код в классе banco:

public class banco {

private final static String SAMPLE_DB_NAME = "myFriendsDb";
private final static String SAMPLE_TABLE_NAME = "friends";



public static void cria(String titulo,int id, Context cont){
    SQLiteDatabase sampleDB = null;

    try {
        sampleDB =  cont.openOrCreateDatabase(SAMPLE_DB_NAME, Context.MODE_WORLD_WRITEABLE, null);

        sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " +
                SAMPLE_TABLE_NAME +
                " (titulo VARCHAR, id INT);");

        sampleDB.execSQL("INSERT INTO " +
                SAMPLE_TABLE_NAME +
                " Values ('" +
                titulo +
                "'," +
                id +
                ");");

    } catch (SQLiteException se ) {
        Log.e(cont.getClass().getSimpleName(), "Could not create or Open the database");
    } finally {
        sampleDB.close();
    }
}

}

А в своей деятельности я использую:

banco.cria (Somestring, Someint, это);

Опять же, спасибо, zrgiu.

1 Ответ

1 голос
/ 26 марта 2012

Вам понадобится контекст для создания / открытия баз данных, локализованных для ваших приложений.Самый простой способ для вас - просто передать экземпляр контекста в вашу функцию или класс, убедившись, что вы не пропустили его.

Другим решением было бы сохранить базу данных sqlite во внешнем хранилище, которое не требует контекста, но также предоставляет вашу базу данных всем другим приложениям и пользователю.

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