android - NotesDbAdapter 示例是针对一张表的,那么多张表呢?

标签 android sqlite

我检查了 NotesDbAdapter 示例,我注意到它仅适用于单个表。 (注释)

1) 我想知道如何对多个表完成此操作? 例如,我现在有 3 个表。我将如何处理这三个表中的所有升级、获取、删除?

2) 我看到表列的已定义属性

public static final String KEY_TITLE = "title";
public static final String KEY_BODY = "body";
public static final String KEY_ROWID = "_id";

如何为多表情况定义列?

最佳答案

对于我的应用程序,我创建了一个类来定义数据库:

public final class MyApplicationDb
{
    public static String DATABASE_NAME = "my_application_db";
    public static int DATABASE_VERSION = 1;

    public static final class Table1
    {
        public static String TABLE_NAME = "table1";
        public static String ID = "_id";
        public static String DAY = "day";
        public static String NAME = "name";
        public static String SOURCE = "source";
        public static String[] COLUMNS = { ID, DAY, NAME, SOURCE };
    }
    public static final class Table2
    {
        public static String TABLE_NAME = "table2";
        public static String ID = "_id";
        public static String CONTACT_ID = "contactId";
        public static String CONTACT_NAME = "contactName";
        public static String LAST_WISH_DATE = "lastWishDate";
        public static String[] COLUMNS = { ID, CONTACT_ID, CONTACT_NAME, LAST_WISH_DATE };
    }
}

还有 2 个用于创建和更新数据库的 sql 脚本 res/raw/db_create.sqlres/raw/db_update.sql

/* db_create.sql */
create table table1(
  _id integer primary key autoincrement,
  day char(5) not null,
  name varchar(64) not null,
  source varchar(64) not null);
create table table2(
  _id integer primary key autoincrement,
  contactId integer not null,
  contactName text not null,
  lastWishDate char(10) null);


/* db_update.sql */
DROP TABLE IF EXISTS table1;
DROP TABLE IF EXISTS table2

还有另一个用于创建/更新/访问数据库的类,它类似于 NotesDbAdapter,只是它使用 sql 脚本而不是常量来创建/更新数据库。 (查看 here 了解如何做到这一点)

关于android - NotesDbAdapter 示例是针对一张表的,那么多张表呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339821/

相关文章:

java - 在Firebase和Android Studio中检索驾驶员的passengerRequest节点内的所有乘客ID(用户ID)

Android:如何在 native SMS 选项的 Intent.createChooser Activity 中包含电话号码

c++ - 树莓派交叉编译和sqlite3

macos - 从 chat.db 恢复 OS X iMessages 历史记录

mongodb - 为什么在使用 Homebrew 安装 MongoDB 时 sqlite 是 MongoDB 依赖项

android - 如何在摇动设备时刷新应用程序?

android - 无法获得 Facebook 发布权限 - Android

java - EMDK 安卓工作室

javascript - 需要将 javascript 值传递到 html 格式的建议,这样我就可以显示正确答案的成绩屏幕而不是 'document.write'

sql - 条件必须具有静态类型的 bool 值