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?


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 "?"


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();
}


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);

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();
        }

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);

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.