Java 存储具有列表的对象<;对象>;和一个字符串,在SQLiteDatabase中

Java 存储具有列表的对象<;对象>;和一个字符串,在SQLiteDatabase中,java,android,sqlite,Java,Android,Sqlite,首先,为这个奇怪的问题标题感到抱歉,我想不出更好的表达方式了 所以我有一个对象,如下所示,它有一个字符串作为练习的名称(在列表中保存重复),以及集合对象列表,每个集合有一个权重(double)和一个重复数(int) 然后我向它们插入如下数据,我哪里出错了 public void insertEntry(String name, double weight, int reps) { open(); database.beginTransaction(); if(fl

首先,为这个奇怪的问题标题感到抱歉,我想不出更好的表达方式了

所以我有一个对象,如下所示,它有一个字符串作为练习的名称(在列表中保存重复),以及集合对象列表,每个集合有一个权重(double)和一个重复数(int)

然后我向它们插入如下数据,我哪里出错了

    public void insertEntry(String name, double weight, int reps) {
    open();
    database.beginTransaction();
    if(flag == 0) {
        ContentValues newValues = new ContentValues();
        // Assign values for each row.
        newValues.put(DataBaseHelper.CARD_NAME, name);

        // Insert the row into your table
        database.insert(DataBaseHelper.CARD_TABLE, null, newValues);
        flag = 1;
    }

    ContentValues newValues = new ContentValues();
    // Assign values for each row.
    newValues.put(DataBaseHelper.CARD_NAME2, name);
    newValues.put(DataBaseHelper.CARD_WEIGHT, weight);
    newValues.put(DataBaseHelper.CARD_REPS, reps);

    // Insert the row into your table
    database.insert(DataBaseHelper.CARD_INFO_TABLE, null, newValues);
    database.setTransactionSuccessful();
    database.endTransaction();
    close(); 
}

就像你必须手动插入一样

两个具有公共标识符的数据库表,它们是相关的(Pk和Fk),因此您可以稍后获取信息

使用字符串和标识符(也可以是自动数字)填充第一个表,检索该表的最大值(标识符)/保存刚刚放在DB上的自定义标识符,使用该标识符将数据插入到第二个表中,在其中放置第一个表的id


将对象视为表。如果你有一个对象X和对象Y,你看到的是一个1-N关系。

如果我读对了。首先你需要与数据库建立一个数据库连接,然后你需要用一个增强的for循环遍历列表,并将每个字符串保存到数据库中……忘了提到数据库已经全部设置好了等等,我在整个项目中一直在使用它,这是有意义的,在对象被迭代和存储之后,如何将其放回对象中?谢谢你的回答!!这可能是我读过的最好的答案,非常感谢!!请你看看我的编辑,因为我有一个新的问题,没有你的回答,我仍然会有相同的问题,但你给我带来了我的下一个错误:P(顺便说一句,这应该是一个赞扬!!)我相信你应该提交并关闭事务,然后再添加第二个对象,这样他们可以关联。但从我的mysql经验来看,我对sqllite不是很熟悉。
public static final String CREATE_CARD_TABLE = "CREATE TABLE "
        + CARD_TABLE + "(" + CARD_ID
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + CARD_NAME
        + " TEXT )";

//card foreign key, this will be where the card information is stored.
public static final String CREATE_CARDINFO_TABLE = "CREATE TABLE "
        + CARD_INFO_TABLE + "(" + CARD_ID2
        + " INTEGER, " + CARD_NAME2
        + " TEXT, " + CARD_WEIGHT
        + " REAL, " + CARD_REPS
        + " INTEGER, "
        + " FOREIGN KEY " + "("+ CARD_ID2 +")"+ " REFERENCES " + CARD_TABLE + "("+CARD_ID+"));";
    public void insertEntry(String name, double weight, int reps) {
    open();
    database.beginTransaction();
    if(flag == 0) {
        ContentValues newValues = new ContentValues();
        // Assign values for each row.
        newValues.put(DataBaseHelper.CARD_NAME, name);

        // Insert the row into your table
        database.insert(DataBaseHelper.CARD_TABLE, null, newValues);
        flag = 1;
    }

    ContentValues newValues = new ContentValues();
    // Assign values for each row.
    newValues.put(DataBaseHelper.CARD_NAME2, name);
    newValues.put(DataBaseHelper.CARD_WEIGHT, weight);
    newValues.put(DataBaseHelper.CARD_REPS, reps);

    // Insert the row into your table
    database.insert(DataBaseHelper.CARD_INFO_TABLE, null, newValues);
    database.setTransactionSuccessful();
    database.endTransaction();
    close(); 
}