我正在尝试创建表ItemGroupe
和Item
。我希望ItemGroupe_ID
作为Itam
表中的外键。这个外键的值总是null。有没有人可以提供示例代码来实现这一点?
Item_Group表:
public static final String CREATE_TABLE_ITEM_GROUP = "CREATE TABLE " + RawColumnContract.RawColumnEntry.TABLE_NAMES[0] + " (" +
RawColumnContract.RawColumnEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
RawColumnContract.RawColumnEntry.COLUMN_NAME_GROUP_ITEM[1] + " TEXT)";
字符串
项目表:
public static final String CREATE_TABLE_ITEM = "CREATE TABLE " + RawColumnContract.RawColumnEntry.TABLE_NAMES[1] + "(" +
RawColumnContract.RawColumnEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[0] + " TEXT," +
RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[1] + " TEXT," +
RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[2] + " TEXT," +
RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[3] + " TEXT," +
RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[4] + " INTEGER," +
" FOREIGN KEY ("+RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[4]+") REFERENCES " +
RawColumnContract.RawColumnEntry.TABLE_NAMES[0] + "("+RawColumnContract.RawColumnEntry._ID+"));";
型
创建时:
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(CREATE_TABLE_ITEM_GROUP);
sqLiteDatabase.execSQL(CREATE_TABLE_ITEM);
}
型
添加项目组(_G):
public boolean addOne(ItemGroup itemGroup) {
openWD();
ContentValues cv = new ContentValues();
cv.put(RawColumnContract.RawColumnEntry.COLUMN_NAME_GROUP_ITEM[1], itemGroup.getItemGroup_Name());
long insert = db.insert(RawColumnContract.RawColumnEntry.TABLE_NAMES[0], null, cv);
return insert != -1;
}
型
添加项目:
public boolean addOne(Item item) {
openWD();
ContentValues cv = new ContentValues();
cv.put(RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[0], item.getItem_name());
cv.put(RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[1], item.getItem_SKU());
cv.put(RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[2], item.getItem_brand());
cv.put(RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[3], item.getItem_color());
long insert = db.insert(RawColumnContract.RawColumnEntry.TABLE_NAMES[1], null, cv);
return insert != -1;
}
型
1条答案
按热度按时间blpfk2vs1#
看起来您的印象是SQLite会自动生成外键值。
也就是说,在插入Item时,您不提供相应列的值。更确切地说,您没有
cv.put(cv.put(RawColumnContract.RawColumnEntry.COLUMNS_NAME_ITEM[4], ....;
。您需要设置相关值(即上面的
....
)添加到相应的ItemGroupe父项。