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

아진짜 sqlite하다가 돌아버릴 지경인데 왜런지 진짜 어디 나오지도않고 아시는분 없나요;

0 추천

일단 db클래스 하나 만들어서 SQLiteOpenHelper상속 받고 onCreate, onUpdate구현 해놨구,

테이블은 처음에 이름을 contact로 정해놓고 앱 실행해서 값 들어가는것까지 잘 작동했습니다.

그런데 문제는 테이블 생성할때 테이블이름, 주키 설정과 속성 수정인데.. 처음엔 뭣도 모르구 속성하나 지워서 다시 실행해보니까 unfortunately뜨면서 꺼지더군요. 테이블이름만 쏙 바꿔서 실행하면 하나의 디비안에 다른이름의 테이블이 생성돼야하는거 아닌가요?;; 안되길래 ***.db의 이름을 바꿔봐서 다른 디비에 저장한다는 개념으로 다시 실행해 보았지만 역시나 에러;.. 여기서 더 공부하다보니 onUpdate를 사용하면 테이블 수정하는데에 버전업을 시켜서 할수있다해서 버전을 2로 바꾸고 테이블 네임, 속성갯수들을 다 제 입맛대로 바꿔보았습니다. 또 역시 안되더군요. 그래서 소스를 초기로 다시돌리면 제대로 또 그상태론 돌아가구.. 진짜 몇시간째 수정해서 해보고 수정해서 해보고 난리도 아닙니다. 정말 미쳐버리겠습니다.. 제가 뭘 잘못 알고있는걸까요? 그냥 실행하자 마자 꺼져요..

 

public class ABC extends FragmentActivity{
    EditText edit_group;
    EditText edit_groupInfo;

    dbHelper helper;
    SQLiteDatabase db;
    public static final String DATABASE_CREATE = "CREATE TABLE contact (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, info TEXT);";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_stadd);

        helper = new dbHelper(this); //dbHelper 객체 생성
        try { db = helper.getWritableDatabase(); } 
        catch (SQLiteException e) { db = helper.getReadableDatabase(); }

        edit_group = (EditText) findViewById(R.id.edit_group);
        edit_groupInfo = (EditText) findViewById(R.id.edit_groupInfo);
        //추가 버튼.
        findViewById(R.id.bt_insert).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = edit_group.getText().toString();
                String info = edit_groupInfo.getText().toString(); 
                db.execSQL("INSERT INTO contact VALUES(null, '" + name + "','" + info + "');");
            }});
        //삭제 버튼.
        findViewById(R.id.bt_delete).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = edit_group.getText().toString(); 
                db.execSQL("DELETE FROM contact WHERE name='"+name+"';");
            }
        });
    }

    class dbHelper extends SQLiteOpenHelper {
        private static final String DATABASE_NAME = "myData.db"; 
        private static final int DATABASE_VERSION = 1; 

        public dbHelper(Context context) { 
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) { 
            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXITS contact");
            onCreate(db);
        }
    }
}
맹꾸 (500 포인트) 님이 2016년 1월 12일 질문

답변 달기

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