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

데이터베이스문 질문입니다.

0 추천
public class MyDBHelper extends SQLiteOpenHelper {
 
public MyDBHelper(Context context) {
super(context, "test", null, 1);
// TODO Auto-generated constructor stub
}
 
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE testtable (hID INTEGER PRIMARY KEYAUTOINCREMENT, text TEXT)");
}
 
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS testtable");
onCreate(db);
 
}
}
}
 
위쪽이 db헬퍼 클래스입니다

 

아래쪽이 버튼을 누르면 동작해야 하는 db문 입니다

 

 

public void mOnClick(View v){

switch (v.getId()) {
case R.id.button1:
sqlDB = myHelper.getWritableDatabase();
sqlDB.execSQL("INSERT INTO testtable (text) VALUES ('" + input + "');");
sqlDB.close();
Toast.makeText(this, "저장되었습니다.", Toast.LENGTH_SHORT).show();
break;
case R.id.button2:
String settext = null;
sqlDB = myHelper.getReadableDatabase();
cursor = sqlDB.rawQuery("SELECT * FROM testtable", null);
while (cursor.moveToNext()) {
settext = cursor.getString(1);
}
sqlDB.close();
edt1.setText(settext);
break;
}
}
 
 
그런데 멈추고 동작을 안하네요 왜그런지 혹시 알려주실수 있나요 빠르게 알려주시면 감사드립니다.
TJLOVE (140 포인트) 님이 2013년 9월 25일 질문

1개의 답변

0 추천
예상이지만, DB onCreate 하는 부분에서.

onUpGrade 가 실행되면서.

old버젼 은 null 이고 뉴버젼이 1로 주어지면서 생기는 버젼업 오류라고 예상됩니다.

로그 캣에러를 보면 DBversion 오류가 아마 뜨지 않았을까

온 업그레이드 db 메서드는 항상 int 값이 업그레이드 될때마다 더 높은 카운팅을 넣어야 하더군요...

그래서 전 기본 생성자로만. 업그레이드를 무시. db 를 구현합니다. Drop 이 필요할시에는 따로 특별한 로직을 만들구요.

 

다음엔 오류가 나면 로그캣 오류를 올려주셔야 훨씬 빠르고 좋은 답변이 나올거에요
AND chobo (4,690 포인트) 님이 2013년 9월 25일 답변
...