1

Android SQLite DB で TEXT を比較しようとすると、問題が発生します。

私はそのようなクエリを持っています:

select * from myTable where _id='some.text.dots.are.really.there!'

myTable はTEXT PRIMARY KEY. テーブル内のデータを選択して更新しようとしています。SELECT *を実行すると、そこにあり、返されます。

Android コード (where 句を含む) は次のようになります。

mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = ?", 
            new String[] {id }, null, null, null);

しかし

mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = '" + id + "'", 
            null, null, null, null);

どちらも機能しません。AndroidのSQLiteでTEXT値を比較するにはどうすればよいですか?

4

2 に答える 2

1

TEXT CASESQLite は、文字列を比較するときに (大文字/小文字)も考慮するため、 を使用できますCOLLATE NOCASE。これにより、SQLite はTEXT CASE.

これを試して:

SELECT * 
FROM   myTable 
WHERE  _id='some.text.dots.are.really.there!' 
COLLATE NOCASE; 

SELECT に rawQuery を使用できます。

mDb.rawQuery('Query Here',null);

および INSERT/UPDATE/DELET の executeQuery:

mDb.executeQuery('Query Here',null);
于 2012-10-03T16:24:30.733 に答える
0

問題が見つかりました。ルーチンが ID をソルトしているため、プレーン テキスト文字列とは異なります。

愚かなエラー... とにかく、ありがとう。

于 2012-10-04T08:14:56.513 に答える