在游标结果中获取 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, ...
我正在编写一个涉及汽车和零件的 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, ...