如何使用两个表在SQLite数据库中存储多个数据?

时间:2015-05-03 14:25:51

标签: java android database sqlite android-studio

因此,表示有两个表,表1和表2.表1有两列 - 活动和测量。活动栏中有3个项目 - 足球,足球和篮球。 (现在让我们不要考虑存储测量列的内容。)

现在,我想要做的是,在另一个表中,表2,我希望在Activity列中有三个项目,作为表2的列。这里是我的布局想让它感觉像 -

https://www.dropbox.com/sh/6ip5ipe8r4y25bx/AACp43UfpxI21wGg4y6nylUEa?dl=0

抱歉,对于保管箱链接,显然我无法在没有10个或更多声誉的情况下发布图片。

我对Android Studio相当陌生,所以我在实施这个想法时遇到了困难,请告诉我是否有任何方法/想法来实现它!谢谢!

2 个答案:

答案 0 :(得分:1)

我认为最好有一个外键关系,而不是每次都创建一个新列,因为如果前一列不能为空,添加新列时会遇到问题。对于你的情况,我会创建一个像此

项目表

Item Table

活动表

Activity Table

数据表

Data Table

我将使用Item表的Id作为Activity Table和Data Table的外键,因此每次决定放置新项时都不需要创建新列。但是,如果您不想使用我推荐的方法,您也可以尝试使用sql更改数据库表。阅读this

答案 1 :(得分:0)

从你的问题来看,你很难理解你是否只想创建你所描述的结构:

String QUERY_CREATE_TABLE_1 = "CREATE TABLE Table1 + ( Activity, Measurement )";
String QUERY_CREATE_TABLE_2 = "CREATE TABLE Table2 + ( Football, Soccer,  Basketball )";

database.execSQL(QUERY_CREATE_TABLE_1);
database.execSQL(QUERY_CREATE_TABLE_2);

或者如果您需要动态逻辑,那么最好使用不同的方法。
对于在Table1中插入的​​每一行,创建一个具有活动名称的新表:

//called when database first created
public void createTable1() {
    String QUERY_CREATE_TABLE_1 = "CREATE TABLE Table1 + ( Activity, Measurement )";
    database.execSQL(QUERY_CREATE_TABLE_1);
}

public void addNewActivity(String activity, String measurement) {

    //Add new activity to Table 1
    ContentValues valuesTable1 = new ContentValues();
    valuesTable1.put("Activity", activity);
    valuesTable1.put("Measurement", measurement);
    database.insertOrThrow(TablesInfo.TABLE_NAME, null, valuesTablesInfo);

    //create A new Table with activity name
    String QUERY_CREATE_TABLE = "CREATE TABLE " + activity + " ( Name )";
    database.execSQL(QUERY_CREATE_TABLE);
}

A table for every activity