В SQLite создана БД со следующими таблицами:
public class DBHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "DB";
public static final String TABLE_DOWNL_OPERATION= "downloaded_operations";
public static final String OPERATION_DOWNLOADED = "operation_downloaded";
public static final String TABLE_WORKERS = "workers";
public static final String WORKER_ID_KEY = "_worker_id";
public static final String FIO_OF_WORKER = "fio_of_worker";
public static final String DEPARTMENT_OF_WORKER = "department_of_worker";
public static final String ORGANIZATION_OF_WORKER = "organization_of_worker";
/**
* Конструктор Хэлпера
*
* @param context - контекст нашего прилажения, в котором испольуется Хэлпер
*/
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/**
* При создании базы данных - создаем таблицы operations,
* workers, chronometragers, downloaded_positions
*
* @param db - непосредственно БД
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_WORKERS + " (" +
WORKER_ID_KEY + " integer primary key," +
FIO_OF_WORKER + " text unique not null," +
DEPARTMENT_OF_WORKER + " text unique not null," +
ORGANIZATION_OF_WORKER + " text unique not null" + ")");
db.execSQL("create table " + TABLE_DOWNL_OPERATION + " (" +
OPERATION_DOWNLOADED + " text not null"+ ")");
}
/**
* Метод при обновлении на новую версию таблицы. Удаляет старую БД. Создает новую с помощью
*
* @param db - текущая БД
* @param oldVersion - старая версия БД
* @param newVersion - новая версия БД
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists " + TABLE_OPERATIONS);
onCreate(db);
}
}
Я хочу передать данные из таблицы TABLE_DOWNL_OPERATION в автокомплит, что бы операции при вводе автокомплита выводились во всплывающей подсказке.Для этого в адаптере методом generationOfAutocompleteText:
private void generationOfAutocompleteText() {
Cursor cursor = sqlDB.query(DBHelper.TABLE_DOWNL_OPERATION,null,null,null,null,null,null,null);
if(cursor.moveToFirst()){
int indexOfFIOColumn = cursor.getColumnIndex(DBHelper.OPERATION_DOWNLOADED);
do {
operationns.add(cursor.getString(indexOfFIOColumn));
} while (cursor.moveToNext());
cursor.close();
}
}
я заполняю в getView автокомплит:
//generationOfAutocompleteText(); //добавляются данные в AutoComplete
ArrayAdapter<String> adapterOperations = new ArrayAdapter<String>(context, R.layout.support_simple_spinner_dropdown_item, operationns);
holder.operationsAutocomplete.setAdapter(adapterOperations);
но при прогоне на устройстве вылетает. Автокомплит и листвью у меня рабочие, вся проблема в методе generationOfAutocompleteText, а точнее методе query. Причем пробывал на других таблицах, подставлял ихнии столбцы название таблицы в данный метод и все работало, а данная таблица - нет. Даже создал столбец айди в данной таблицы, но естевственно, безрезультатно. Подскажите, пожалуйста, как исправить query, дабы автокомплит работал?
updated:
23630/ru.work.jpg.strelchm.alrino_photographyofwork E/AndroidRuntime: FATAL EXCEPTION: main work.database.sqlite.SQLiteException: no such table: downloaded_operations (code 1): , while compiling: SELECT * FROM downloaded_operations
такая ошибка в логе... причем execSQL прописал разграничивая для всех таблиц, но первую почему-то он пропускает, а остальные такими ошибками обкладывает...
onUpgrade()сработал и добавленные таблицы попали в структуру БД, значениеDATABASE_VERSIONнужно увеличить( сделать = 2, например) и так же увеличивать при любых изменениях в структуре БД. – pavlofff Jan 21 '18 at 13:00