我正在编写一个涉及汽车和零件的 Android 应用程序。
我想要做的是提供数据库中所有部件的 ListView,不包括已经分配给特定汽车的部件。
我可以通过以下查询获得我想要的结果,其中包含 EXCEPT 语句。
SELECT DISTINCT Parts._id, Parts.PartNumber, Parts.PartName, Parts.MFG, Parts.Barcode, Parts.Notes, Parts.Photo
FROM Parts
JOIN CarsToParts
WHERE CarsToParts.CarID != carID
EXCEPT
SELECT DISTINCT Parts._id, Parts.PartNumber, Parts.PartName, Parts.MFG, Parts.Barcode, Parts.Notes, Parts.Photo
FROM Parts
JOIN CarsToParts
WHERE CarsToParts.CarID = carID AND CarsToParts.PartID = Parts._id
我遇到的问题是我得到了一个光标结果,其中包括表名作为键名的一部分,如下所示:
I/System.out: >>>>> Dumping cursor
android.database.sqlite.SQLiteCursor@39719c0
I/System.out: 0 {
I/System.out: Parts._id=21
I/System.out: Parts.Photo=<unprintable>
I/System.out: Parts.PartName=Oil Filter
I/System.out: Parts.PartNumber=116 354 733
I/System.out: Parts.MFG=Mercedes Benz
I/System.out: Parts.Barcode=254485880
I/System.out: Parts.Notes=
I/System.out: }
I/System.out: <<<<<
当我尝试将此发送到 CursorAdapter 时,它会窒息。
CarsToParts 表具有以下列:
_id
CarID
PartID
CarsToParts 表允许我将相同的零件映射到两辆不同的汽车,这通常是来自同一制造商的汽车的可能性。
有没有办法让 SQLite 不包括表名作为光标输出中键名的一部分?
编辑: 经过进一步调查,我发现 CursorAdapter 需要存在_id列。如果我能让 SQLite 不将表名包含在键名中,那就是这样。