rawQuery (kueri, selectionArgs)

88

Saya ingin menggunakan kueri pemilihan untuk mengambil data dari tabel. Saya telah menemukan, rawQuery(query, selectionArgs)metode SQLiteDatabasekelas untuk mengambil data. Tapi saya tidak tahu bagaimana querydan selectionArgsharus diteruskan ke rawQuerymetode?

sree_iphonedev
sumber
Situs web pengembang Android Pengembang Android adalah sumber terbaik untuk semua kueri kecil ini adalah sumber terbaik untuk semua kueri kecil ini
Tarun

Jawaban:

221
rawQuery("SELECT id, name FROM people WHERE name = ? AND id = ?", new String[] {"David", "2"});

Anda mengirimkan larik string dengan jumlah elemen yang sama dengan "?"

Rawkode
sumber
1
rawQuery("SELECT id, name FROM people WHERE ?= ?", new String[] {"column_name", "David"});, apakah ini validQuery?
theapache64
9
@ theapache64 ini bukan kueri yang valid. '?' hanya berlaku untuk nilai.
BMB
16

Mungkin ini bisa membantu Anda

Cursor c = db.rawQuery("query",null);
int id[] = new int[c.getCount()];
int i = 0;
if (c.getCount() > 0) 
{               
    c.moveToFirst();
    do {
        id[i] = c.getInt(c.getColumnIndex("field_name"));
        i++;
    } while (c.moveToNext());
    c.close();
}
pengguna1208720
sumber
3

lihat kode di bawah ini dapat membantu Anda.

String q = "SELECT * FROM customer";
Cursor mCursor = mDb.rawQuery(q, null);

atau

String q = "SELECT * FROM customer WHERE _id = " + customerDbId  ;
Cursor mCursor = mDb.rawQuery(q, null);
Dhaval Parmar
sumber
4
Mengapa ini dipilih? Ini tidak menunjukkan cara menggunakan fungsionalitas yang disediakan dengan benar rawQuery. Tujuannya adalah untuk menghindari string penggabungan, dll. Juga, jawaban Rawkode harus diterima.
aMiGo
2
Ini bukan bagaimana rawQuery harus digunakan, Anda harus menggunakan? sebagai placeholder dan parameter kedua untuk mengisinya.
Eduardo Naveda
4
Terlepas dari "bagaimana" Anda seharusnya menggunakan rawQuery () , INI adalah cara yang lebih masuk akal, singkat, dapat dipahami dan standar di semua bahasa lain, selain Java. Jadi ini cara yang disukai.
not2qubit
@aMiGo String tetap digabungkan dengan lapisan di bawahnya.
Pascalius
Jika Anda menggabungkan nilai string, Anda mendapatkan masalah dengan karakter '(membutuhkan 2 di antaranya dalam string) dan karakter; (mungkin menimbulkan efek samping). Misalkan CustomerDbId adalah string yang berbunyi - '123'; hapus dari pelanggan - maka Anda akan kehilangan SEMUA data!
Martin
2

Untuk kelengkapan dan pengelolaan sumber daya yang benar:

        ICursor cursor = null;
        try
        {

            cursor = db.RawQuery("SELECT * FROM " + RECORDS_TABLE + " WHERE " + RECORD_ID + "=?", new String[] { id + "" });

            if (cursor.Count > 0)
            {
                cursor.MoveToFirst();
            }
            return GetRecordFromCursor(cursor); // Copy cursor props to custom obj
        }
        finally // IMPORTANT !!! Ensure cursor is not left hanging around ...
        {
            if(cursor != null)
                cursor.Close();
        }
Silahkan masuk
sumber
2

jika kueri SQL Anda adalah ini

SELECT id,name,roll FROM student WHERE name='Amit' AND roll='7'

maka rawQuery akan menjadi

String query="SELECT id, name, roll FROM student WHERE name = ? AND roll = ?";
String[] selectionArgs = {"Amit","7"} 
db.rawQuery(query, selectionArgs);
Puneet Verma
sumber
0
String mQuery = "SELECT Name,Family From tblName";
Cursor mCur = db.rawQuery(mQuery, new String[]{});
mCur.moveToFirst();
while ( !mCur.isAfterLast()) {
        String name= mCur.getString(mCur.getColumnIndex("Name"));
        String family= mCur.getString(mCur.getColumnIndex("Family"));
        mCur.moveToNext();
}

Nama dan keluarga adalah hasil Anda

faeze saghafi
sumber