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

안드로이드 sqlite 총숫자 합계 질문입니다

0 추천

안녕하세요 안드로이드에 대해 공부하고 있는 학생입니다

원래는 리스트뷰 클릭시 다른 디비에 데이터가 추가되고 버튼 클릭시 모든 숫자의 합을 구하려고 했지만 너무 어려워 포기했네요 ㅠㅠㅠ

//상속자 : DB 생성
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    super(context, "food.db", null, 1);

}

//테이블 생성
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE food(_id integer primary KEY" +
            " AUTOINCREMENT, name TEXT, kcal Text, gram Text);");
}

//테이블 초기화(삭제 후 생성)
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
    db.execSQL("drop table if exists food");
    onCreate(db);
}

제 db 코드입니다.

//조회버튼
btnSelect.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor c = db.rawQuery("select * from food;", null);
        c.moveToFirst();

        String[] from = {"name", "kcal", "gram"};
        final int[] to = {R.id.tvName, R.id.tvkcal, R.id.tvgram};

        final SimpleCursorAdapter adapter = new SimpleCursorAdapter(listfruit.getContext(),
                R.layout.display,
                c,
                from,
                to);
        listfruit.setAdapter(adapter1);
        db.close();
    }
});

그리고 이건 버튼 클릭시 sqlite와 연결된 레이아웃을 보여주는 코드입니다.

제가 하고 싶은 것이 에딧텍스트를 클릭했을 때 

디비에 등록되어 있는 숫자의 합을 구하는 것입니다.

edt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor c = db.rawQuery("select kcal from food;", null);
        int i = 0;
        int tot = 0;
        while (i < c.getColumnCount()){
        String a = c.getString(2);

        tot =+ Integer.parseInt(a);
        }
        edt.setText(String.valueOf(tot));

    }
});

그래서 제가 이렇게 짜봤는 데

오류는 안 뜨지만 실행시키면 튕기네요

혹시 어떤 것이 잘 못되었나요?

검은망토 (120 포인트) 님이 2020년 6월 10일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...