База данных не создается - PullRequest
0 голосов
/ 23 марта 2012

Я создаю базу данных так:

SQLiteDatabase db = openOrCreateDatabase("mydata.db",SQLiteDatabase.CREATE_IF_NECESSARY,null);
                    try
                    {
                    db.execSQL("CREATE TABLE IF NOT EXISTS vars (id INTEGER PRIMARY KEY ASC, varname,varvalue);");
                    db.execSQL("INSERT INTO vars (varname,varvalue) VALUES (\"user\",\"" + username + "\");");
                    Log.w("Test", "Am executat sql");

                    }
                    catch (SQLiteException e)
                    {
                        Log.w("Exceptie", "Acum or niciodata");
                    }

Когда я перезапускаю свою программу и хочу открыть ее так:

  SQLiteDatabase objDb = null;
        try
        {
            objDb =  SQLiteDatabase.openDatabase("mydata.db", null, SQLiteDatabase.OPEN_READWRITE);

        }
        catch(SQLiteException e)
        {
            //addShortcut();//setShortCut(getApplicationContext(),"GpsRo");
            //setContentView(R.layout.main);
            Log.w("Exceptie", e.getMessage());
            showForm = true;
        }

Я получаю исключение: невозможно открыть файл базы данных ...

Что я делаю не так?

Ответы [ 4 ]

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

Как я вижу, вы вставляете данные для varName и varValues, а не для id. Здесь id является первичным ключом (это означает, что он не может быть нулевым и повторяющимся). Так что вы должны ввести значение, для которого нельзя оставлять его пустым, а также Вы можете пойти на АВТОИНФОРМИРОВАНИЕ.

Попробуйте что-то вроде этого:

db.execSQL("CREATE TABLE IF NOT EXISTS vars (id INTEGER PRIMARY KEY AUTOINCREMENT ASC, varname,varvalue);");
1 голос
/ 23 марта 2012

Ваша база данных находится не в том месте: «mydata.db» означает, что ваш файл базы данных находится в корне: (путь: /mydata.db).Ваше приложение не может писать в корневой папке.Вместо этого попробуйте context.getFilesDir() + "/mydata.db".

В одной команде:

SQLiteDatabase db = openOrCreateDatabase(context.getFilesDir()"/mydata.db",SQLiteDatabase.CREATE_IF_NECESSARY,null);
1 голос
/ 23 марта 2012

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

"CREATE TABLE IF NOT EXISTS vars
(id INTEGER PRIMARY KEY AUTOINCREMENT,
varname TEXT,
varvalue TEXT);"
0 голосов
/ 23 марта 2012

, чтобы открыть базу данных, вам нужно объявить что-то вроде этого:

private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private final Context mCtx;

mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();

чтобы сделать вашу базу данных доступной для записи

Мое предложение пройти через http://developer.android.com/resources/tutorials/notepad/index.html

Чтобы узнать больше о SQLiteDataBases, там вы найдете класс notesDbAdapter, который вы можете использовать в качестве базы, там вы найдете класс open (), который открывает базу данных.

в другом случае, чтобы использовать метод openDataBase (), вам нужно найти путь к вашей БД на устройстве и актуализировать mydata.db до полного пути к БД.

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