我正在使用SQLite DB构建一个Android应用程序项目。
我被困在一对多关系之上。
这是一个
private static final String createTableOrders =
"CREATE TABLE " + TABLE_ORDER + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
...
+ KEY_COLUMN_FORMATS + " INTEGER REFERENCES " + TABLE_FORMATS + "(" + KEY_ID + ")"
+ ");";
这很多
private static final String createTableFormats =
"CREATE TABLE " + TABLE_FORMATS + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
...
+ ");";
我的问题在于set / get方法。 让我们说我需要得到一个订单中所有格式的ID列表。 我想set方法也是如此。
我试图在SO上找到这样的问题,但大多数问题只是针对SQL部分。
P.S。花了3个小时尝试自己制作它,但我唯一要做的就是使用GSON将ID列表编码成String但它只是一个死胡同。
编辑:我需要在代码中获取该信息。
P.S.S我这样做了18个小时很抱歉,如果这是一个超级愚蠢的问题。答案 0 :(得分:6)
一对多关系需要“many”表中的外键列:
CREATE TABLE Orders (
ID PRIMARY KEY
);
CREATE TABLE Formats (
ID PRIMARY KEY,
OrderID REFERENCES Orders(ID)
);
要获取属于订单的所有格式,您只需查找具有该订单ID的行:
SELECT * FROM Formats WHERE OrderID = ?
在Jave中:
Cursor cursor = db.query(TABLE_FORMATS,
new String[] { whatever columns you need },
"OrderID = " + orderID,
null, null, null, null, null);
while (cursor.moveToNext()) {
// read one order from the cursor
}
cursor.close();