안드로이드 개발 질문/답변
(글 수 45,052)
public String GetName(ContentResolver cr, String PersonId)
{
String where = "_id = 3";
//Cursor cursor =cr.query(People.CONTENT_URI,null, null,null,null); <-- 요거는 에러 안나는데용
Cursor cursor =cr.query(People.CONTENT_URI,null,where ,null,null);
int nameIdx = cursor.getColumnIndexOrThrow(People.NAME); //연락처 이름 index 번호
return cursor.getString(nameIdx);
}
GetName에 Activity 클래서에서 호출하면서, ContentResolver 와 id를 던지면 해당하는 이름이 리턴되게 만든건데요.
query가 잘 못된건지.. 되야 될거 같은데 안되네요. 뭐가 틀린건가요?
"_id = 3"; 은 테스트로 그냥 고정한겁니다. id = 3은 분명 있구요.
{
String where = "_id = 3";
//Cursor cursor =cr.query(People.CONTENT_URI,null, null,null,null); <-- 요거는 에러 안나는데용
Cursor cursor =cr.query(People.CONTENT_URI,null,where ,null,null);
int nameIdx = cursor.getColumnIndexOrThrow(People.NAME); //연락처 이름 index 번호
return cursor.getString(nameIdx);
}
GetName에 Activity 클래서에서 호출하면서, ContentResolver 와 id를 던지면 해당하는 이름이 리턴되게 만든건데요.
query가 잘 못된건지.. 되야 될거 같은데 안되네요. 뭐가 틀린건가요?
"_id = 3"; 은 테스트로 그냥 고정한겁니다. id = 3은 분명 있구요.
2010.02.01 21:02:57
일단 꼭 필요한 경우가 아니라면 위의 Contacts API는 Deprecated되었으므로 사용하지 않는 것이 좋습니다.
그리고 위의 코드만으로는 어떻게 에러가 발생하는건지 파악하기 어렵네요. LogCat 로그를 확인해보세요.
2010.03.10 13:15:34
저도 이부분에서 많이 삽질을 했는데요..
아마도 SQLiteException이 발생하고 메세지에 ambiguous column name : .......................................
이렇게 발생 할겁니다. 모호한 컬럼명 이라고 나오는데,
provider에서 실행되는 query가 단일 테이블이 아닌것 같습니다. (테이블 구조를 아직 확인을 못해봐서...추측이지만;;;)
따라서 where 변수에 할당되는 값을
String where = "people." + Contacts.People._ID + " = 3 ";
이렇게 해주시면 될겁니다. 필드명 앞에 명시적으로 table을 지정해줘야 합니다.
아마도 SQLiteException이 발생하고 메세지에 ambiguous column name : .......................................
이렇게 발생 할겁니다. 모호한 컬럼명 이라고 나오는데,
provider에서 실행되는 query가 단일 테이블이 아닌것 같습니다. (테이블 구조를 아직 확인을 못해봐서...추측이지만;;;)
따라서 where 변수에 할당되는 값을
String where = "people." + Contacts.People._ID + " = 3 ";
이렇게 해주시면 될겁니다. 필드명 앞에 명시적으로 table을 지정해줘야 합니다.