在光标结果,Android,SQLite

时间:2018-02-27 05:03:46

标签: android sqlite cursor android-cursoradapter sql-except

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

我遇到的问题是我得到一个Cursor结果,其中包含表名作为键名的一部分,如下所示:

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不在Cursor输出中包含表名作为键名的一部分?

修改 经过进一步调查,我发现CursorAdapter需要 _id 列。如果只有我可以让SQLite不将表名作为键名的一部分包含在内,那就是它。

1 个答案:

答案 0 :(得分:1)

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

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