rawQuery (query, selectionArgs)


87

테이블에서 데이터를 검색하기 위해 선택 쿼리를 사용하고 싶습니다. 나는 데이터를 검색 rawQuery(query, selectionArgs)하는 SQLiteDatabase클래스 방법을 찾았습니다 . 하지만 메서드에 queryselectionArgs이 어떻게 전달되어야 하는지 모르겠습니다 rawQuery.


안드로이드 개발자 웹 사이트 안드로이드 개발자는 모든 작은 쿼리에 대한 최고의 소스가 모든 작은 쿼리에 대한 최고의 소스입니다
Tarun

답변:


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

"?"가있는 것과 동일한 수의 요소가있는 string 형 배열을 전달합니다.


1
rawQuery("SELECT id, name FROM people WHERE ?= ?", new String[] {"column_name", "David"});, 이것이 validQuery입니까?
theapache64 2015 년

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


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. 그 목적은 문자열 연결 등을 피하는 것입니다. 또한 Rawkode의 대답을 받아 들여야합니다.
아미고

2
이것은 rawQuery를 사용하는 방법이 아닙니다. 자리와 두 번째 매개 변수로를 기입합니다.
에두아르도 Naveda에게

4
"어떻게" rawQuery () 를 사용 해야하는지에 관계없이 이것은 Java를 제외한 다른 모든 언어에서 더 합리적이고 짧고 이해하기 쉽고 표준적인 방법입니다. 그래서 이것이 선호되는 방식입니다.
not2qubit

@aMiGo 문자열은 어쨌든 아래 레이어에 연결됩니다.
Pascalius

문자열 값을 연결하면 문자 '(문자열에 2 개 필요) 및 문자에 문제가 발생합니다. (부작용을 일으킬 수 있음). CustomerDbId가 '123'이라는 문자열이라고 가정합니다. 고객에서 삭제하면 모든 데이터가 손실됩니다!
Martin

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'

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

이름과 가족이 당신의 결과입니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.