안드로이드 내장 DB를 코드를 활용하여 접근을 하려고 합니다.
일단 tbl_realname, tbl_nickname 은 다음과 같습니다.
테이블 명: tbl_realname
칼럼 구조: id(primary key) | realname
테이블 명: tbl_nickname
칼럼 구조: id(primary key) | nickname
현재 저의 클래스 구조는
DBOpenHelper.java - SQLiteOpenHelper를 구현한 클래스로 데이터베이스 생성과 관련합니다. onCreate() 에서 테이블을 생성하는데 일단은 조인 예제인지라 에스큐엘 테이블 생성문을 두번 호출하게 되어있습니다.
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table tbl_realname
(id text primary key, realname text)";
db.execSQL(sql);
Log.i("DBINFO", "table 1 created..............................");
String sql2 = "create table tbl_nickname
(id text primary key, nickname text)";
db.execSQL(sql2);
Log.i("DBINFO", "table 1 && table2 created....................");
//테이블 두개 생성
}
DBHandler.java - 이 클래스에서는 helper를 이용하여 데이타 베이스를 열고 닫고 CRUD를 수행합니다.
현재 문제되는 부분은 다음과 같습니다.
public void insert(){
db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("id", "1");
values.put("realname", "yoon");
db.insert(DBProp.TBL_NAME1, null, values);
Log.i("DBINFO", "table 1 data1...........................");
values = new ContentValues();
values.put("id", "2");
values.put("realname", "hwang");
db.insert(DBProp.TBL_NAME1, null, values);
Log.i("DBINFO", "table 1 data2...........................");
values = new ContentValues();
values.put("id", "1");
values.put("nickname", "babo");
db.insert(DBProp.TBL_NAME2, null, values);
Log.i("DBINFO", "table 2 data1...........................");
values = new ContentValues();
values.put("id", "2");
values.put("nickname", "munggae");
db.insert(DBProp.TBL_NAME2, null, values);
Log.i("DBINFO", "table 2 data2...........................");
}
Sample.java - 마지막으로 호출부입니다.
이렇게 수행하면 인서트 하는 부분에서 "column name id is not unique" 라고 뜨면서
임의로 집어넣어져야 하는 데이타가 안들어갑니다. 고수님들 도와주세요~~ㅠㅠ
PS. 중간 코드에서는 테이블명을 상수화해놨습니다.;;