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