簡體   English   中英

SQLite和Android。 如何在查詢中使用String Have?

[英]SQLite and Android. How do I use String Having in my query?

我有一個查詢,將所有內容從數據庫拉入列表視圖。

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_HEIGHT, KEY_BODY, KEY_HOMEID},null , null, null, null, null,null);

                                |               String Having is the 3rd from
                                                           last null.

我只需要字段KEY_HOMEID與名為journalId的變量匹配的記錄,該變量應該是數字字符串。

我還想知道如何將變量帶到我的DatabaseAdapter中... ((resource) this.getApplication()).getjournalId())起作用嗎? 資源是擴展應用程序的類。

首先,發布錯誤消息而不是“沒有骰子”將是有幫助的。

其次,請閱讀SQLiteDatabase.query()的文檔。 SQL關鍵字(例如“ FROM”和“ HAVING”)不應構成方法調用的一部分。

您已經將表名作為第一個參數傳遞給query() ,因此寫“ FROM DATABASE_NAME WHERE ... ”既多余,又會導致形成無效的查詢。

第三,您不能將Java變量名稱作為selection參數String的一部分傳遞-您需要使用類似String的字符串: KEY_HOMEID +"="+ journalId

第四,通常最好使用selectionArgs而不是將查詢參數嵌入到selection 特別是當您有來自用戶輸入的字符串或參數時。
例如selection = KEY_HOMEID +"=?" selectionArgs = new String[] { journalId }

總體而言,您的方法調用應如下所示:

mDb.query(DATABASE_TABLE, 
          new String[] { KEY_ROWID, KEY_HEIGHT, 
                         KEY_BODY, KEY_HOMEID },
          KEY_HOMEID +"=?", new String[] { journalId },
          null, null, null);

使用WHERE子句; HAVING僅與GROUP BY一起使用。

暫無
暫無

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

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