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

SQLite 사용하는 방법 질문입니다.

0 추천
 

 

 

 

책에있는 예제를 그대로 따라하고 있습니다.

참고중인 책은 스텝 바이스텝 안드로이드 앱 개발 책이고 sQlite 활용부분보고 있습니다.

DBManger파일을 만들었구요

import android.content.Context;
import android.database.sqlite.*;
 
public class DBManager extends SQLiteOpenHelper{
     
    public DBManager(Context context){
        super(context, "myDB", null, 1);
        System.out.println("디비생성초기화");
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        System.out.println("디비만듬??");
        db.execSQL("create table my(_id integer PRIMARY KEY autoincrement,name text,season text,height text,weight text);");
         
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
         
    }
 
     
}

 

 

 

 

저장된 데이터를 가져오는 부분입니다.

TextView tv_list=(TextView)findViewById(R.id.list);
        int i=0;
         
        try{
            DBManager dbmgr = new DBManager(this);
            SQLiteDatabase sdb = dbmgr.getReadableDatabase();
            Cursor cursor = sdb.rawQuery("select name,season,height,weight from my", null);
            System.out.println("쿼리"+sdb.rawQuery("select name,season,height,weight from my", null));
            while(cursor.moveToNext()){
                 
                String name = cursor.getString(0);
                String season = cursor.getString(1);
                String height = cursor.getString(2);
                String weight = cursor.getString(3);
                 
                tv_list.append(name+"\n");
                tv_list.append(season+"\n");
                tv_list.append(height+"\n");
                tv_list.append(weight+"\n");
                 
                i++;
                 
            }
            cursor.close();
            dbmgr.close();
        }catch(SQLiteException e){
            tv_list.append("DB 에러입니다.");
        }
         
        if(i == 0)
            tv_list.append("저장된 정보가 없습니다.\n");
        save = (Button)findViewById(R.id.save);
        save.setOnClickListener(this);

 

 

 

 

 

저장버튼을 누를때 동작입니다.

에디트텍스트에 입력된걸 받아와 저장합니다.

else if(v == save){            
                try{
 
                    dbmgr = new DBManager(this);
                    SQLiteDatabase sdb;
                     
                    sdb=dbmgr.getWritableDatabase();
                     
                    sdb.execSQL("insert into my values("
                    +et_name.getText().toString()+","
                    +et_height.getText().toString()+","
                    +str_season+","
                    +et_weight.getText().toString()+");");
                     
                    dbmgr.close();
                }catch(SQLiteException e){
                     
                }
            }

 

 

그런데 막상 해보면

로그캣에

08-18 00:19:21.397: E/SQLiteLog(9401): (1) no such column: 대한민국
 
 
이렇게 뜹니다.
 
칼럼이 없다는데 그럼 디비가 안 만들어진거 같지는 않고 쿼리가 이상한건가 해서 쿼리 찍어보려는데 쿼리는 어떻게 찍어볼 수 있나요?
 
이 문제는 디비가 안 만들어진건가요?
 
디비 처음해보는데 어렵네요..ㅠㅠ

 

 

브루스웨인 (8,580 포인트) 님이 2014년 8월 18일 질문

2개의 답변

0 추천
 
채택된 답변

 

아래처럼 수정해서 로그 찍어 보시고...

insert 구문 필드명 생략되었습니다....문자열은 ' 로 둘러싸야 하는데 싸여있지도 않고..

 
String strSql = "insert into my(필드명1, 필드명2, 필드명3, 필드명4) values(" + et ......  ;
 
Log.i("태그명", strSql);
 
sdb.execSQL(strSql);
바램 (19,650 포인트) 님이 2014년 8월 18일 답변
브루스웨인님이 2014년 9월 5일 채택됨
0 추천
select문으로 해당 디비 테이블의 있는 모든 데이터를 조회해보세요.

db자체가 만들어진건데, 검색을 못한건지 [위의 대한민국] , 아님 db를 만들지 않아서 검색을 못한건지 ..
anci (19,950 포인트) 님이 2014년 8월 18일 답변
...