이 대답은 SQL 용어를 올바르게 사용한다는 사실에 근거하여 즉시 열리고 싶습니다. select two columns
은 a에서 반환 된 하나 이상의 (또는 그 이상) 행에서 두 개의 열을 선택한다는 것을 알고 있습니다. 쿼리
WHERE
절을 잘못 사용하고 있습니다. 이것은 열이 주어진 값을 갖는 곳을 선택하기위한 것입니다. 예를 들어 INTEGER PRIMARY_KEY
의 표가 있고 id = 10
으로 행을 선택하려면 SELECT * FROM table WHERE id=10
을 입력하면됩니다.
SELECT * FROM table WHERE id=?
인 지원으로 변환 된 저장 프로 시저를 사용해야하며 인수가있는 String [] 배열을 채워야합니다.
이제 WHERE
절의 실제 기본 사항을 이해 했으므로 코드로 넘어갑니다.
,
을 사용 중이므로 더 많은 인수를 문자열 외부에 추가하고 있습니다. 둘째, 전달 된 인수를 여러 개 가질 수 없으며 지원되는 유일한 것은 문자열 목록이며 SQL 주입을 피하기위한 것입니다.
이제 특정 열을 선택하는 것이 더 쉽습니다.
먼저 검색어가 비어 있지 않은지 확인하려면 moveToFirst
이 필요합니다. 그런 다음 더 이상의 항목이 남아 있지 않은지 확인하려면 isAfterLast
이 사용됩니다. 그런 다음 원하는 값만 선택하면됩니다. 예 : WHERE
키워드 설명에
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
//These are just examples of values you can select from the returned row. Edit based on your database and the rows you want. `COLUMN_ID` and `COLUMN_STACKTRACE`
//are Strings with the column name
int id = cursor.getInt(cursor.getColumnIndex(COLUMN_ID));
String stack = cursor.getString(cursor.getColumnIndex(COLUMN_STACKTRACE));
//Here you'd add these to a List or something, maybe as a dataclass. Essentially, TODO: Handle your data here
cursor.moveToNext();//Move to the next row
}
}
cursor.close();//Close the cursor
}
추가.
id = 10, field1 = "11.12.17", field3 = "some data here"
행에 ID를 기반으로 행을 선택하려면 SELECT * FROM table WHERE id=10
을 사용하여 ID가 10 인 행을 모두 선택하십시오. 당신이 얻을 수있는 다른 것 1000.
출처
2017-12-11 19:04:16
Zoe
코드가 컴파일되지 않습니다. 실제 코드를 게시하고 정확하게 어떤 문제가 있는지 지정하십시오. 예외 인 경우 전체 스택 추적을 게시하십시오. – m0skit0
그건 끔찍한 일입니다. 함께 패치하는 대신 저장 프로 시저를 사용하십시오. –
가능한 복제본 [rawQuery (query, selectionArgs)] (https://stackoverflow.com/questions/10598137/rawqueryquery-selectionargs) – m0skit0