Действительно ли в вашей таблице есть автор столбца?я предполагаю, что вы добавили этот столбец после создания таблицы с помощью db.execSQL(DATABASE_CREATE);
ваша проблема в том, что у вас нет кода внутри onUpgrade()
, поэтому при добавлении нового столбца он не добавляется, поскольку создание базы данных будетприводит к ошибке, что-то вроде «база данных уже существует»
Вам необходимо добавить код в onUpgrade (), который по крайней мере удалит все таблицы, а затем создаст заново.или лучше запустить таблицу изменения и т. д.
, затем вам нужно увеличить int DATABASE_VERSION
, чтобы выполнялся onUpgrade ().И, наконец, ваш новый столбец «автор» будет добавлен в таблицу.
Конечно, вы также можете проверить, существует ли столбец, подключившись к вашей базе данных через командную строку
надеюсь, что это поможет
Вот код, который я использую, который может помочь в создании / обновлении.Очевидно, константы создания моей таблицы специфичны для меня ...
Редактировать: ... также у вас нет попыток / ловить вокруг вашей таблицы создания.Я уверен, что если добавить это, вы обнаружите, что команда создания таблицы не выполняется, так как она получает «таблица уже существует и т. Д.»
...
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE_SITE);
db.execSQL(CREATE_TABLE_SITE_USER);
db.execSQL(CREATE_TABLE_ARTICLE);
db.execSQL(CREATE_TABLE_USER);
} catch (Exception e) {
Log.e("dbAdapter", e.getMessage().toString());
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS user");
db.execSQL("DROP TABLE IF EXISTS site");
db.execSQL("DROP TABLE IF EXISTS site_user");
db.execSQL("DROP TABLE IF EXISTS article");
onCreate(db);
}
...