SQLite一对多关系集/获取外键

The*_*ian 3 java sqlite android one-to-many

我正在用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 + ")"
                + ");";
Run Code Online (Sandbox Code Playgroud)

这很多

private static final String createTableFormats =
        "CREATE TABLE " + TABLE_FORMATS + "("
                + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                  ...
                + ");";
Run Code Online (Sandbox Code Playgroud)

我的问题是使用set/get方法.假设我需要获取一个订单中所有格式的ID列表.我想set方法也是如此.

我试图在SO上找到这样的问题,但大多数问题只是针对SQL部分.

PS花了3个小时尝试自己做,但我唯一要做的就是使用GSON将ID列表编码成String但它只是一个死胡同.

编辑:我需要在代码中获取该信息.

PSS我这样做了18个小时很抱歉,如果这是一个超级愚蠢的问题.

CL.*_*CL. 7

一对多关系需要"many"表中的外键列:

CREATE TABLE Orders (
    ID PRIMARY KEY
);
CREATE TABLE Formats (
    ID PRIMARY KEY,
    OrderID REFERENCES Orders(ID)
);
Run Code Online (Sandbox Code Playgroud)

要获取属于订单的所有格式,您只需查找具有该订单ID的行:

SELECT * FROM Formats WHERE OrderID = ?
Run Code Online (Sandbox Code Playgroud)

在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();
Run Code Online (Sandbox Code Playgroud)