Androidデータベースでこのクエリを使用しようとしていますが、データが返されません。何か不足していますか?
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String select = "Select _id, title, title_raw from search Where(title_raw like " + "'%Smith%'" +
")";
Cursor cursor = db.query(TABLE_NAME, FROM,
select, null, null, null, null);
startManagingCursor(cursor);
return cursor;
これにより、必要なカーソルが返されます
Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"},
"title_raw like " + "'%Smith%'", null, null, null, null);
または、db.rawQuery(sql、selectionArgs)が存在します。
Cursor c = db.rawQuery(select, null);
これは、一致させたいパターンが変数の場合にも機能します。
dbh = new DbHelper(this);
SQLiteDatabase db = dbh.getWritableDatabase();
Cursor c = db.query("TableName", new String[]{"ColumnName"}
, "ColumnName LIKE ?" ,new String[]{_data+"%"}, null, null, null);
while(c.moveToNext())
{
// your calculation goes here
}
クエリを設定する方法を思い出させるためにここに来ましたが、既存の例に従うのは困難でした。以下に例を示します。
SQLiteDatabase db = helper.getReadableDatabase();
String table = "table2";
String[] columns = {"column1", "column3"};
String selection = "column3 =?";
String[] selectionArgs = {"Apple"};
String groupBy = null;
String having = null;
String orderBy = "column3 DESC";
String limit = "10";
Cursor cursor = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
パラメーター
table
:クエリするテーブルの名前columns
:返される列名。不要なデータを返さないでください。selection
:列から返される行データ(これはWHERE句です)selectionArgs
:これは、上記のselection
文字列の?
の代わりに使用されます。groupBy
およびhaving
:これは、特定の条件を持つデータを持つ列の重複データをグループ化します。不要なパラメーターはnullに設定できます。orderBy
:データの並べ替えlimit
:返される結果の数を制限するこれを試してください、これは私のコード名が文字列である場合に機能します:
cursor = rdb.query(true, TABLE_PROFILE, new String[] { ID,
REMOTEID, FIRSTNAME, LASTNAME, EMAIL, GENDER, AGE, DOB,
ROLEID, NATIONALID, URL, IMAGEURL },
LASTNAME + " like ?", new String[]{ name+"%" }, null, null, null, null);