마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SQLite cursor 질문있습니다.

0 추천

데이터 베이스에 있는 값을 찾아보려고 select를 메소드로 구현했습니다.

private String DBSelect(String value) {
db = dbHelper.getReadableDatabase();
String sql = "SELECT name FROM farm;";
Cursor cursor = db.rawQuery(sql, null);
 
if(cursor.getCount() > 0) {
    while(cursor.moveToNext()) {
        if(cursor.getString(0) == value)
            return cursor.getString(0);
        }
    } cursor.close();
return null;
}
 
이런식으로 코드를 구현했습니다.
데이터베이스는 f_id은 PK로 되어있고, name Text형태로 데이터베이스가 생성되어 있습니다.
즉 속성은 위 2가지 이고 PK하나, 일반 속성 1개 이거죠.
조금 헷갈리는게 찾아봤는데 cursor.getString()에서 0부터 시작하는건 알겠는데 getString(0)을 하게되면
PK부터 셀렉트하는건지, 아니면 PK는 건너띄고 name부터 검색하는건지 궁금합니다.
 
그리고 제대로 찾아지지도 않는것 같아요;
실행시 오류는 없습니다.
우윤데에 (730 포인트) 님이 2013년 7월 18일 질문

1개의 답변

0 추천
 
채택된 답변

sql 구문대로면 SELECT name FROM farm

name 만 찾는군요

bangbang (8,820 포인트) 님이 2013년 7월 18일 답변
우윤데에님이 2013년 7월 18일 채택됨
아 name에 농장1, 농장2...이런식으로 저장되어있는데,
case R.id.Btn_farm1:
                String s = DBSelect();
                if(s != null)
                    Toast.makeText(farmList.this, s, Toast.LENGTH_SHORT).show();
                else
                    Toast.makeText(farmList.this, "null", Toast.LENGTH_SHORT).show();
                break;
이렇게 버튼1의 이벤트를 코딩했는데, 저 s에 출력되는 값이
농장1로 토스트로 농장1이 떳으면 하는데 null만 뜨네요
cursor.getString(0) == value 대신 equals 를 써보세요
감사합니다. equals 쓰니까 되네요.
저번에도 String 비교할 때 '=='으로 안되서 equals로 고쳐서 되는 경우가 많았는데 이번에도 그렇네요.
한가지 궁금한게 있는데 왜 String은 '=='을 사용할 때 제대로 비교가 되지 않는 건가요?
간단하게 설명하자면
equals 는 스트링함수로 문자열 비교 이고
== 는 메모리 참조 비교로 알고있습니다
아 그렇군요. 감사합니다.
...