rawQuery (sorgu, seçimArgs)


88

Tablodan veri almak için seçme sorgusunu kullanmak istiyorum. Veri almak için sınıf rawQuery(query, selectionArgs)yöntemi buldum SQLiteDatabase. Ama yönteme nasıl queryve nasıl selectionArgsgeçilmesi gerektiğini bilmiyorum rawQuery?


Android geliştirici web sitesi Android geliştiricisi, tüm bu küçük sorgular için en iyi kaynak, tüm bu küçük sorgular için en iyi kaynak
Tarun

Yanıtlar:


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

Sahip olduğunuz "?"


1
rawQuery("SELECT id, name FROM people WHERE ?= ?", new String[] {"column_name", "David"});, bu geçerli bir Sorgu mu?
theapache64

9
@ theapache64 geçerli bir sorgu değil. '?' yalnızca değerler için geçerlidir.
BMB

16

Belki bu sana yardımcı olabilir

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

Aşağıdaki koda bakın, size yardımcı olabilir.

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

veya

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

4
Bu neden yukarı oylandı? Bu, tarafından sağlanan işlevselliğin nasıl doğru şekilde kullanılacağını göstermez rawQuery. Amacı Dizeleri birleştirmekten vb. Kaçınmaktır. Ayrıca Rawkode'un cevabı kabul edilmelidir.
aMiGo

2
Bu rawQuery'nin nasıl kullanılması gerektiği değil, kullanmalısınız? yer tutucular ve bunları doldurmak için ikinci parametre olarak.
Eduardo Naveda

4
RawQuery () 'yi "nasıl" kullanmanız gerektiğine bakılmaksızın , BU, Java dışında tüm diğer dillerde daha mantıklı, kısa, anlaşılır ve standart bir yoldur. Bu yüzden tercih edilen yol budur.
not2qubit

@aMiGo Dize yine de aşağıdaki katmanla birleştirilir.
Pascalius

Bir dizge değerini birleştirirseniz, 'karakteri (dizede bunlardan 2'sine ihtiyaç vardır) ve karakteri ile ilgili sorunlar yaşarsınız; (yan etkiler oluşturabilir). CustomerDbId'nin - '123' yazan bir dizge olduğunu varsayalım; müşteriden silin - o zaman TÜM verileri kaybedersiniz!
Martin

2

Eksiksiz ve doğru kaynak yönetimi için:

        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

SQL sorgunuz buysa

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

sonra rawQuery

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

İsim ve aile sonucunuzdur

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.