在游标结果中获取 Table 名称,Android,SQLite

Getting Table Name in Cursor Results , Android, SQLite

我正在编写一个涉及汽车和零件的 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

我遇到的问题是我得到的光标结果包含 table 名称作为键名称的一部分,如下所示:

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 table 有以下列:

_id
CarID
PartID

CarsToParts table 允许我将相同的零件映射到两辆不同的汽车,对于来自同一制造商的汽车,这通常是可能的。

有没有办法让 SQLite 在 Cursor 输出中不包含 table 名称作为键名称的一部分?

编辑: 经过进一步调查,我发现 CursorAdapter 需要 _id 列存在。如果只有我能让 SQLite 不包含 table 名称作为键名称的一部分,那就是这样。

查询返回的列名 are unspecified,除非您使用 AS:

SELECT DISTINCT Parts._id AS _id, Parts.PartNumber AS PartNumber, ...