gpt4 book ai didi

java - 仅在创建 Sqlite 数据库时插入示例数据

转载 作者:行者123 更新时间:2023-12-01 12:23:58 25 4
gpt4 key购买 nike

当我的 Android 应用程序第一次运行时,我需要将一些示例数据放入 Sqlite 数据库中。

我的数据库运行良好,并且我有一种将示例数据放入数据库的工作方法。但我的问题是我在哪里调用它?我只希望在首次创建数据库时插入示例数据。然后用户可以将其删除

我的第一个想法是在 onCreate 中调用 createSampleData(),但随后将递归调用数据库并且应用程序崩溃。

在我的 onCreate 中,我的所有表都已创建。也许我应该在这些陈述中添加一些内容?我是否应该以某种方式查看这些表是否已创建,然后插入示例数据?

在这里摸索。

public void onCreate(SQLiteDatabase database) {

  String sessionTableQuery =
"CREATE TABLE "
+ SESSION_TABLE + "("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "comment TEXT,"
+ "date DATETIME DEFAULT CURRENT_TIMESTAMP)";

String exerciseTableQuery =
"CREATE TABLE "
+ EXERCISE_TABLE + " ("
+ "exercisId INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "name TEXT,"
+ "weight INTEGER,"
+ "reps INTEGER,"
+ "rpm INTEGER,"
+ "score FLOAT,"
+ "sessionId INTEGER NOT NULL)";

String customTimerSessionTableQuery =
"CREATE TABLE "
+ CUSTOM_TIMER_SESSION_TABLE + "("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "name TEXT,"
+ "rounds INTEGER,"
+ "date DATETIME DEFAULT CURRENT_TIMESTAMP)";

String customTimerTableQuery =
"CREATE TABLE "
+ CUSTOM_TIMER_TABLE + " ("
+ "timerId INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "name TEXT,"
+ "millis INTEGER,"
+ "metronome BOOL,"
+ "rpm INTEGER,"
+ "type INTEGER,"
+ "sessionId INTEGER NOT NULL)";

database.execSQL(sessionTableQuery);
database.execSQL(exerciseTableQuery);
database.execSQL(customTimerSessionTableQuery);
database.execSQL(customTimerTableQuery); }

最佳答案

使用作为参数传入的 SQLiteDatabase 参数将数据插入到数据库助手 onCreate() 中。

不要尝试在 onCreate() 中调用 getWritableDatabase() 或从那里调用的方法 - 这会导致您看到的“递归调用”异常。

关于java - 仅在创建 Sqlite 数据库时插入示例数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com