2017-09-13 3 views
0

これは私のSQLite "セレクタ"定義では愚かなエラーかもしれませんが、これまでに投稿されたエラーです。私は愚かな間違いを犯している可能性が高いですが、私の人生はそれを見つけることができません。助けることができるようにするにはもっと情報が必要な場合は教えてください!SQLiteのカーソルクエリーエラー "like"と "=="がコンテンツプロバイダの "selection"定義で動作しない

だから、これは完璧に動作します:

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

しかし、私はこのように、(TEXT形式である)COLUMN_CATEGORYを照会しようとすると:

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

ORこのように:

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

「E/AndroidRuntime:FATAL EXCEPTION」

マイカーソル問合せ:(CATEGORY列が発見された)

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

マイDbHelper:EDIT

あなたのコメントをありがとう

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)だったが、妙に比較値は、単一引用符を必要としませんでした。私はあなたが言語の作品をプログラミングするが、両方のあなたの失敗SQLiteのクエリ文字列が誤って作成されているように見えるのか分からない

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

答えて

0

:ここ

はワーキングソリューションです。同様のクエリは、 "%Transport General% 'のような" TransContract.TransEntry.COLUMN_CATEGORY "のようになります。あなたは、開いていない比較文字列を作成します。内には、クエリが含まれています。 2番目のクエリには2つの問題があります。 '=='は単一の '='でなければならず、もう一度比較値は単一引用符で囲まれません。

関連する問題