Как каждый проверяет, существует ли таблица в базе данных Android SQLite?

Я рекомендую проверить https://discordpy.readthedocs.io/en/latest/ext/commands/cogs.html Это поможет вам лучше понять Cogs.

Во-первых, вам нужно изменить bot.add_cog("cogs.fun") на bot.load_extension("cogs.fun")

В этом нет необходимости, но вам не нужно снова определять bot. Измените def setup(bot: commands.Bot): на def setup(bot):

Вам также необходимо изменить class FunCog: на class FunCog(commands.Cog):

Я рекомендую быть в курсе изменений, когда появляются новые обновления для версии перезаписи , Вот краткий обзор примера рабочего файла cog. . Надеюсь, это помогло! Макс.

82
задан vishal 28 March 2017 в 21:55
поделиться

4 ответа

Ага, оказалось, что теория в моей редакции была правильной: проблема, из-за которой метод onCreate не запускался, заключалась в том, что объекты SQLiteOpenHelper должны ссылаться на базы данных , а не иметь отдельную таблицу для каждой таблицы. Упаковка обеих таблиц в одну SQLiteOpenHelper решила проблему.

8
ответ дан 24 November 2019 в 09:08
поделиться

я столкнулся с этим и соглашением с ним выгодой попытки, столь же простой как это, я делаю то, что я хочу в таблице, если это не будет существовать, то вызовет ошибку, так поймайте его исключениями и создайте его :)

SQLiteDatabase db=this.getWritableDatabase();
        try{
            db.execSQL("INSERT INTO o_vacations SELECT * FROM vacations");
            db.execSQL("DELETE FROM vacations");
        }catch (SQLiteException e){
            db.execSQL("create table o_vacations (id integer primary key ,name text ,vacation text,date text,MONTH text)");
            db.execSQL("INSERT INTO o_vacations SELECT * FROM vacations");
            db.execSQL("DELETE FROM vacations");
        }

0
ответ дан 24 November 2019 в 09:08
поделиться

Вы упомянули, что создали класс, расширяющий SQLiteOpenHelper , и реализовали метод onCreate . Вы уверены, что выполняете все вызовы получения базы данных с этим классом? Вы должны получать только объекты SQLiteDatabase с помощью SQLiteOpenHelper # getWritableDatabase и getReadableDatabase , иначе метод onCreate не будет вызываться при необходимости. Если вы уже это делаете, проверьте, не вызывается ли вместо этого метод SQLiteOpenHelper # onUpgrade . Если это так, то номер версии базы данных был изменен в какой-то момент времени, но таблица никогда не была создана должным образом, когда это произошло.

Кроме того, вы можете принудительно воссоздать базу данных, убедившись, что все подключения к ней закрыты и вызывая Context # deleteDatabase , а затем используя SQLiteOpenHelper , чтобы дать вам новый объект db.

2
ответ дан 24 November 2019 в 09:08
поделиться

Я ничего не знаю об Android SQLite API, но если вы в состоянии говорить с ним на SQL напрямую, вы можете сделать следующее:

create table if not exists mytable (col1 type, col2 type);

Что обеспечит постоянное создание таблицы и не будет выбрасывать никаких ошибок, если она уже существовала.

49
ответ дан 24 November 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: