2017-09-13 22 views
0

這可能是我的SQLite「選擇器」定義愚蠢的錯誤,但似乎無法從類似的問題併發布至今的錯誤。我可能犯了一個愚蠢的錯誤,但不能在我的生活中找到它。請讓我知道,如果你需要更多的信息能夠幫助!SQLite光標查詢錯誤「喜歡」和「==」不工作在內容提供者「選擇」定義

所以這個工作得很好:

selection = "((" + 
       TransContract.TransEntry.COLUMN_DATE + " > " + 
       Long.toString(dateOutput) + ") AND (" + 
       TransContract.TransEntry.COLUMN_DATE + " <= " + Long.toString(dateOutputEnd) + "))"; 

但是,當我嘗試查詢COLUMN_CATEGORY(這是文本格式),以這樣的方式

selection = TransContract.TransEntry.COLUMN_CATEGORY + " like " + '%'+ 
       "Transport General" + "%"; 

或者這樣說:

selection = TransContract.TransEntry.COLUMN_CATEGORY + " == " + 
       "Transport General"; 

我收到「E/AndroidRuntime:致命例外」

我的遊標查詢:

cursor = database.query(
        TransContract.TransEntry.TABLE_NAME, 
        projection, 
        selection, 
        selectionArgs, 
        null, 
        null, 
        sortOrder); 

我DbHelper(其中類別欄找到):

String SQL_CREATE_ENTRIES = 
      "CREATE TABLE " + TransContract.TransEntry.TABLE_NAME + " (" + 
        TransContract.TransEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
        TransContract.TransEntry.COLUMN_AMOUNT + " REAL, " + 
        TransContract.TransEntry.COLUMN_TYPE + " INTEGER NOT NULL DEFAULT 0, " + // debit, credit 
        TransContract.TransEntry.COLUMN_ACCOUNT + " INTEGER, " + // wallet, savings, more later. 
        TransContract.TransEntry.COLUMN_ACCOUNT_FROM + " INTEGER, " + // defaults from wallet 0 
        TransContract.TransEntry.COLUMN_ACCOUNT_TO + " INTEGER, " + // defaults back to wallet 0 
        TransContract.TransEntry.COLUMN_CATEGORY + " TEXT, " + 
        TransContract.TransEntry.COLUMN_TITLE + " TEXT, " + 
        TransContract.TransEntry.COLUMN_DATE + " INTEGER, " + 
        TransContract.TransEntry.COLUMN_RECURRING + " INTEGER NOT NULL DEFAULT 0," + 
        TransContract.TransEntry.COLUMN_FREQUENCY + " TEXT," + 
        TransContract.TransEntry.COLUMN_END_DATE + " INTEGER" + 
        ");"; 

編輯

謝謝您的意見,我本來應該更具體的!我的堆棧跟蹤確實是一個語法錯誤,它來自我正在粘貼的新代碼行。

Caused by: android.database.sqlite.SQLiteException: near "General": syntax error (code 1): , while compiling: SELECT _id, category, title, amount, type, date FROM transactions WHERE category == Transport General ORDER BY date DESC 

的問題是對於字符串(感謝@Ton Plooij),但奇怪的比較值並不需要單引號雙引號內的單引號。

這裏是工作的解決方案:

selection = TransContract.TransEntry.COLUMN_CATEGORY + " = " + 
       "'Transport General'"; 

回答

0

我不知道你是怎麼編程語言的作品,但都發生故障的SQlite的查詢字符串似乎錯誤地創建。類似的查詢應該看起來像「TransContract.TransEntry.COLUMN_CATEGORY like'%Transport General%'」。您構建的比較字符串不包含中的開始和結束單引號查詢。第二個查詢有兩個問題:'=='應該是單個'=',並且再次比較值不包含在單引號中。