簡體   English   中英

Android:ViewBinder和SimpleCursorAdapter SQL出現問題

[英]Android: ViewBinder & SimpleCursorAdapter SQL woes

我正在努力使更復雜的查詢與帶有ListView的SimpleCursorAdapter和ViewBinder一起使用。 當我只返回表中的所有條目時,那沒問題。 但是,我想按名稱順序從表中返回藝術家名稱列表。 最大的問題與SimplerCursorAdapter / ViewBinder期望的“ rowid _id”字段有關。

當我以SELECT rowid _id,Artist.NAME等形式進行查詢時,我的代碼運行良好,但我想使用DISTINCT關鍵字返回唯一的set(如果藝術家姓名)。 我不能將“ rowid _id”放在“ DISTINCT Artist.Name”之前,也不能在其之后。 有什么解決方案?

我想要的查詢(A)是(顯示的沒有“ rowid _id”):

String sQuery = String.format( "SELECT DISTINCT Artist.Name, Artist.ID FROM Artist JOIN Tune ON Artist.ID=Tune.ArtistID AND Tune.Type=%d AND Tune.SubType=%d ORDER BY Artist.Name", nType, nSubtype );

澄清一下,這有效:

Cursor c = db.rawQuery( "SELECT rowid _id, Name, Rating FROM Tune ORDER BY Name", null );

每當我將rowid _id返回查詢(A)時,都會出現“無此類列rowid”異常:

String sQuery = String.format( "SELECT rowid _id, Artist.Name, Artist.ID FROM Artist JOIN Tune ON Artist.ID=Tune.ArtistID AND Tune.Type=%d AND Tune.SubType=%d ORDER BY Artist.Name", nType, nSubtype );

我究竟做錯了什么?

編輯:我什至都不知道“ rowid _id”的作用-當我有一個帶有聯接的查詢時,我的SQLite Manager(測試工具)也不喜歡它。 它似乎只對簡單的1表查詢有效。.如果是這種情況..如果沒有SimpleCursorAdapter&ViewBinder,如何在沒有此查詢的情況下使此查詢有效?

答案是忘記使用rowid,而使用我自己的Artist.ID字段。 只要我將字段名稱別名為_id(SimpleCursorAdapter期望在第0列中使用該名稱),該方法便會起作用。

String sQuery = String.format( "SELECT DISTINCT Artist.ID  _id, Artist.Name  FROM Artist JOIN Tune ON Artist.ID=Tune.ArtistID AND Tune.Type=%d AND Tune.SubType=%d ORDER BY Artist.Name", nType, nSubtype );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM