rawQuery (क्वेरी, चयनआर्ग्स)


87

मैं तालिका से डेटा पुनर्प्राप्त करने के लिए चुनिंदा क्वेरी का उपयोग करना चाहता हूं। मैंने पाया है, डेटा पुनः प्राप्त करने के लिए कक्षा की rawQuery(query, selectionArgs)विधि SQLiteDatabase। लेकिन मुझे नहीं पता कि कैसे queryऔर विधि selectionArgsको पारित किया जाना चाहिए rawQuery?


एंड्रॉइड डेवलपर वेबसाइट एंड्रॉइड डेवलपर इन सभी छोटे प्रश्नों के लिए सबसे अच्छा स्रोत है इन सभी छोटे प्रश्नों के लिए सबसे अच्छा स्रोत है
तरुण

जवाबों:


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

आपके पास समान तत्वों के साथ एक स्ट्रिंग सरणी पास है जैसा कि आपके पास "?"


1
rawQuery("SELECT id, name FROM people WHERE ?= ?", new String[] {"column_name", "David"});, क्या यह एक वैध खाता है?
theapache64

9
@ theapache64 यह एक मान्य क्वेरी नहीं है। '?' केवल मूल्यों पर लागू होता है।
BMB

16

शायद यह आपकी मदद कर सकता है

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

10

RawQuery का एक उदाहरण - db.rawQuery("select * from table where column = ?",new String[]{"data"});


नया स्ट्रिंग [] {"डेटा"} क्या है? क्या आप उपरोक्त कथन का स्पष्टीकरण दे सकते हैं। अग्रिम में धन्यवाद।
sree_iphonedev


3

नीचे दिए गए कोड को देखें इससे आपको मदद मिल सकती है।

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

या

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

4
यह मतदान क्यों है? यह नहीं दिखाता है कि प्रदान की गई कार्यक्षमता का ठीक से उपयोग कैसे करें rawQuery। इसका उद्देश्य स्ट्रैटेनिंग स्ट्रेटनिंग आदि से बचना है। इसके अलावा, रावकोड के उत्तर को स्वीकार किया जाना चाहिए।
aMiGo

2
यह नहीं है कि कैसे कच्चे ® का उपयोग किया जाना चाहिए, आपको उपयोग करना चाहिए? प्लेसहोल्डर और उन्हें भरने के लिए दूसरा पैरामीटर के रूप में।
एडुआर्डो नवेदा

4
भले ही आप कैसे " कच्चे" () का उपयोग करने वाले हैं , यह जावा के अलावा अन्य सभी भाषाओं में अधिक समझदार, संक्षिप्त, संक्षिप्त और मानक तरीका है। तो यह तरीका पसंद किया जाता है।

@aMiGo स्ट्रिंग को वैसे भी परत के नीचे ढाला जाता है।
पास्कलियस

यदि आप एक स्ट्रिंग मान को बदलते हैं, तो आपको चरित्र के साथ समस्याएं आती हैं '(स्ट्रिंग में उनमें से 2 की आवश्यकता है) और चरित्र; (दुष्प्रभाव पैदा कर सकता है)। मान लीजिए CustomerDbId एक स्ट्रिंग है जिसमें लिखा है - '123'; ग्राहक से हटाएं - तब आप सभी डेटा को ढीला कर देंगे!
मार्टिन

2

पूर्णता और सही संसाधन प्रबंधन के लिए:

        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 क्वेरी यह है

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

तो रॉविक्यू हो जाएगा

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

नाम और परिवार आपका परिणाम है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.