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

DB 고수님들 부탁드립니다

0 추천
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);

        // 엑티비티 라벨 출력
        setTitle("최근 점수");

        // 최근점수 추가할 레이아웃을 인식
        LinearLayout layout = (LinearLayout) findViewById(R.id.record);

        int i = 0;

        try {

            DBManager DBM = new DBManager(this);

            // DB 연결
            SQLiteDatabase Sdb = DBM.getReadableDatabase();

            Cursor cursor = Sdb.rawQuery(
                    "SELECT g_name, g_sc FROM record", null);

            while (cursor.moveToNext()) {
                String g_name = cursor.getString(0);
                String g_sc = cursor.getString(1);

                // 레이아웃에 추가할 고객정보를 위한 텍스트뷰 생성
                TextView nameTextView = new TextView(this);
                nameTextView.append(g_name);
                nameTextView.setTextSize(20);
                nameTextView.setTextColor(Color.rgb(255, 255, 0));

                // 게임이름
                layout.addView(nameTextView);

                // 점수
                TextView gsTextView = new TextView(this);
                gsTextView.append(g_sc + "\n");

                // 레이아웃에 추가하여 출력
                layout.addView(gsTextView);
                i++;
            }

            if (i == 0) {
                TextView defaultTextView = new TextView(this);
                defaultTextView.append("게임을 진행해주세요!");
                layout.addView(defaultTextView);
            }

            // 리소스 반환
            cursor.close();
            DBM.close();

        } catch (SQLiteException e) {
            TextView errorTextView = new TextView(this);
            errorTextView.append("db 접속 에러가 발생했습니다!");
            layout.addView(errorTextView);
        }


    }

 

게임 끝나면 그 게임이름이랑 점수 저장해서

메인화면에서 기록보기 누르면 기록화면에 게임이름이랑 점수 뜨는건데

"db접속 에러가 발생했습니다!" 라고 계속 뜨네요

"게임을 진행해주세요" 라고 떠야하는데...

뭔가 문제인 걸까요..ㅜㅜ

다른부분 더 올려야하는거면 알려주세요

깜둥이곰 (290 포인트) 님이 2015년 10월 5일 질문
깜둥이곰님이 2015년 10월 5일 수정

2개의 답변

0 추천
디버깅해보셔야 할듯 한데요.

왜 SQLiteException 이 발생했는지 확인이 필요한데요.

try 내부에서 어떤 라인이 실행될때 sqlite exception이 발생하는지 하는지 확인하시고 그 원인이 무엇인지 파악하셔야 할 것 같습니다.
컴러기 (22,230 포인트) 님이 2015년 10월 5일 답변
해결 됐네여
원래 예제 소스에서
변수명들만 바꾼거였는데 왜 안됐던건지..
처음 예제 다시 써서 하나 바꾸고 돌려보고 이러니까 되네요 ㅋㅋ
0 추천
while문 돌기전에

cursor.movetofirst();

를 한번 해줘보시는건 어떨까요?

이것이 아니라면, exception 내용을 찍어봐야 될 것 같네요.

 

g_name과 g_sc를 가져올때, index가 아닌 컬럼명으로 가져오는게 더 좋을것도 같습니다.

c.getString(c.getColumIndex(컬러명));
개발자초심 (21,220 포인트) 님이 2015년 10월 5일 답변
해결 됐네여
원래 예제 소스에서
변수명들만 바꾼거였는데 왜 안됐던건지..
처음 예제 다시 써서 하나 바꾸고 돌려보고 이러니까 되네요 ㅋㅋ
...