У меня проблема с SQLiteAssetHelper (https://github.com/jgilfelt/android-sqlite-asset-helper): Я не могу правильно открыть таблицы в моей базе данных.Не удается получить доступ к двум таблицам в одной базе данных
База данных создана с использованием sqlitebrowser.
У меня есть база данных с двумя таблицами, заполненными строками, которые я хочу, чтобы получить доступ с помощью курсора, но когда я пытаюсь получить доступ к их обоих, он дает мне ошибку:
android.database.sqlite.SQLiteException: no such table: Verbs (code 1): , while compiling: SELECT LatinVerbs FROM Verbs WHERE _rowid_=?
Мой контракт базы данных:
import android.provider.BaseColumns;
public class DatabaseContract {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "verbtable.db";
private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ",";
private DatabaseContract(){}
public static abstract class Table1 implements BaseColumns{
public static final String TABLE_NAME = "Verbs";
public static final String COLUMN_NAME_TITLE_COL1 = "LatinVerbs";
public static final String COLUMN_NAME_TITLE_COL2 = "Translation";
public static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY," +
COLUMN_NAME_TITLE_COL1 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL2 + TEXT_TYPE + COMMA_SEP +
")";
public static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
}
public static abstract class Table2 implements BaseColumns{
public static final String TABLE_NAME = "Structure";
public static final String COLUMN_NAME_TITLE_COL1 = "infinitive";
public static final String COLUMN_NAME_TITLE_COL2 = "pers_id";
public static final String COLUMN_NAME_TITLE_COL3 = "ind_praes_act";
public static final String COLUMN_NAME_TITLE_COL4 = "ind_praes_pass";
public static final String COLUMN_NAME_TITLE_COL5 = "ind_impf_act";
public static final String COLUMN_NAME_TITLE_COL6 = "ind_impf_pass";
public static final String COLUMN_NAME_TITLE_COL7 = "ind_fut_act";
public static final String COLUMN_NAME_TITLE_COL8 = "ind_fut_pass";
public static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY," +
COLUMN_NAME_TITLE_COL1 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL2 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL3 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL4 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL5 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL6 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL7 + TEXT_TYPE + COMMA_SEP +
COLUMN_NAME_TITLE_COL8 + TEXT_TYPE + COMMA_SEP +
")";
public static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
}
}
Мои курсоры:
Cursor c = db.query(DatabaseContract.Table1.TABLE_NAME, columns, "_rowid_=?", selectionArgsRoot, null, null, null);
int index = c.getColumnIndexOrThrow(columns[0]);
c.moveToFirst();
do {
rootResult = c.getString(index);
} while (c.moveToNext());
c.close();
c = db.query(DatabaseContract.Table2.TABLE_NAME, columnSuffix, "pers_id=?", selectionArgsSuffix, null, null, null);
index = c.getColumnIndexOrThrow(columnSuffix[0]);
c.moveToFirst();
do{
suffix = c.getString(index);
}while(c.moveToNext());
c.close();
Я пытался обновить версию базы данных и перезапустить эмулятор я бегала мой код, но ошибка все равно остается.
Ну, как говорится, таблицы «Глаголы» не существует. Как вы подтвердили правильность создания таблиц? – miki