1

SQLiteDatabase.query を使用してクエリを作成するにはどうすればよいですか?

"Select * from table where col1 = something AND col2 IS NOT NULL"

col2 に =? を付けて試してみました。選択文字列で、選択引数でNOT NULLですが、機能しません。

どこが間違っているのか教えてください。

4

3 に答える 3

3

selectionArgs文字列の配列であり、文字列値にのみ使用できます。

col2 = ?stringを使用すると、NOT NULL列の値が 8 文字の string であるかどうかを確認するようにデータベースに指示します"NOT NULL"

文字列col2 IS NOT NULLに直接書き込む必要があります。selection

db.query("MyTable", null,
         "col1 = ? AND col2 IS NOT NULL",
         new String[] { "something" },
         null, null, null);
于 2013-11-06T10:10:04.027 に答える
0
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) 

指定されたテーブルをクエリし、結果セットに対して Cursor を返します。

パラメータ table クエリをコンパイルする対象のテーブル名。

columns

返す列のリスト。null を渡すとすべての列が返されますが、使用されないストレージからのデータの読み取りを防ぐために推奨されません。

selection 

SQL WHERE 句としてフォーマットされた、返される行を宣言するフィルター (WHERE 自体を除く)。null を渡すと、指定されたテーブルのすべての行が返されます。

selectionArgs

?s を選択に含めることができます。これは、選択に表示されるために、selectionArgs からの値に置き換えられます。値は文字列としてバインドされます。

groupBy

SQL GROUP BY 句 (GROUP BY 自体を除く) としてフォーマットされた、行をグループ化する方法を宣言するフィルター。null を渡すと、行はグループ化されません。

having

フィルターは、カーソルに含める行グループを宣言します。行のグループ化が使用されている場合は、SQL HAVING 句としてフォーマットされます (HAVING 自体を除く)。null を渡すと、すべての行グループが含まれます。これは、行のグループ化が使用されていない場合に必要です。

orderBy

SQL ORDER BY 句としてフォーマットされた行の順序付け方法 (ORDER BY 自体を除く)。null を渡すと、デフォルトの並べ替え順序が使用されますが、順序付けされていない場合があります。

だからあなたはこのように試すことができます

String[] args = { "first string", "second@string.com" };
Cursor cursor = db.query("TABLE_NAME", null, "name=? AND email=?", args, null,null,null);
于 2013-11-06T10:32:39.103 に答える
0

あなたが使用することができCursorますrawQuery

Cursor c=db.rawQuery(your_query,null) 
于 2013-11-06T10:04:20.243 に答える