public Database(@NonNull Context _context, @NonNull String _tableName){
super(_context, DB_NAME, null, DB_VERSION);
this.mContext = _context;
this.tableName = _tableName;
this.db_create = "CREATE TABLE " + tableName + "(" + COLUMN_ID + " INTEGER NOT NULL PRIMARY KEY, " +
COLUMN_DATA + " BLOB)";
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
Log.d("tableCreate", "onCreate: created");
db.execSQL(db_create);
}catch(SQLiteException ex){
ex.printStackTrace();
Log.d("TableCreation", "onCreate: cannot create");
}
}
public long insert(Model model){
SQLiteDatabase db = getWritableDatabase();
long id = -1;
try{
if(maxData > 0 || maxData <= counter){
ContentValues value = new ContentValues();
value.put(COLUMN_ID, model.getCode());
value.put(COLUMN_DATA, model.toJson().getBytes());
counter += 1;
id = db.insert(tableName, null, value); //exception is thrown here.
}
}catch(SQLiteException ex){
ex.printStackTrace();
}finally{
if(db != null)
db.close();
}
return id;
}
}
У меня есть класс базы данных, который расширяет SQLiteHelper. Здесь исключение всегда генерируется всякий раз, когда я пытаюсь вставить элемент в таблицу. Сообщение об ошибкеНе удается создать таблицу с SqliteOpenHelper
no such table: university_basic
08-28 23:26:23.036 30754-30786/com.ujjwal.univhub E/SQLiteDatabase: Error inserting ...
android.database.sqlite.SQLiteException: no such table: university_basic (code 1): , while compiling: INSERT INTO university_basic(id,model) VALUES (?,?)
Как из документации и других интернет-ресурсов, я обнаружил, что onCreate()
метод вызывается, когда getWriteableDatabase()
или getReadableDatabase()
вызывается и таблица не существует. Мне позвонил getWriteableDatabase()
внутри метода insert()
, который предположительно должен создать таблицу, если она не существует или открыть базу данных. Но ошибка msg вызывается каждый раз. Экземпляр базы данных создается в одном из видов деятельности моего приложения.
Connectivity.OfflineDataLoader offlineLoader = connectivity.new OfflineDataLoader(this,
"university_basic", 30);
connectivity.enableOfflineData(offlineLoader);
Один из конструктора OfflineLoader является
public OfflineDataLoader(@NonNull Context _context, String tableName,int maxData){
this.context = _context;
this.tableName = (tableName != null)? tableName : "university_basic";
this.database = new Database(_context, this.tableName);
this.database.setMaxData(maxData);
}
Почему таблица не создается здесь ??
Ну, ошибка ясно указывает, что таблица, которую вы используете, не была создана, поэтому, пожалуйста, покажите код, который вы использовали для создания этой таблицы «university_basic». –
Я создал экземпляр базы данных в моем классе MainActivity. Это должно было создать таблицу при вызове метода insert(). –
Не могли бы вы [изменить] свой вопрос включить строку 'new Database()' Activity ', чтобы мы могли попытаться воспроизвести проблему? Здесь, в StackOverflow, мы предпочитаем, чтобы ваш вопрос был [mcve]. Ваш вопрос может быть минимальным, но он не является полным/проверяемым. –