일단 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);
}
}
}