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

하나의 dbhelper에 여러 개의 테이블.

0 추천

ㅠㅠ도저히.. 아이디어가 안나서 질문드립니다.

현재 openapi를 이용해  xml을 가져와 파싱 하고, db에 저장해서 출력해주는 프로그램을 만들고 있습니다.

a.xml의 정보를 aTable에 저장하고, b.xml의 정보를 bTable에 저장후 

aTable을 출력해주는 a.java 액티비티와

bTable을 출력해주는 b.java 액티비티를 만들고자 하는데, (두개의 table 모두 "c.db"에 저장)

동일한  DBHelper( extends SQLiteOpenHelper )를 사용하면서요....

 

public DBHelper(Context context, String name, CursorFactory factory,int version, int a) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
		this.ab = a;

	}

 

a액티비티에서 helper1 = new DBHelper(a.this, "c.db", null, 1, 0) ; 으로 helper를 생성하고,

b액티비티에서는 helper2 = new DBHelper(b.this, "c.db", null, 1, 1) ; 으로 helper를 생성하고,

DBHelper클래스에서 String[] tnarr = new String[] { "a", "b" }; 를 선언하고..

for (int j = 0; j < tnarr.length; j++) {
			TABLE_NAME = tnarr[j];
			sql = "create table "
					+ TABLE_NAME
					+ "(_id integer PRIMARY KEY autoincrement,"
					+  name text, pnum text)";
			db.execSQL(sql);
		
		}

 

 

dbhelper에서 onCreate시 두개의 table을 생성하는것 까진 되는데.

 

이제 각각의 테이블에 파싱한 데이터를 삽입하고 싶은데....ㅠㅠ

a.java 액티비티에서, insert 구문을 넣어 삽입하면 a액티비티를 킬때마다 aTable에 계속 같은 내용이 반복삽입되는 문제가 발생하고,

public void onCreate(SQLiteDatabase db) {
		String sql;
			TABLE_NAME = tnarray[ab];

	sql = "insert into "
				+ TABLE_NAME
				+ " (name, pnum )"
				+ "values (?,?)";}

DBHelper OnCreate에 insert 구문을 넣으면,

a액티비티가 b액티비티보다 먼저 실행될 경우, atable에만 삽입되고..

b액티비티를 켜도 btable에는 데이터삽입이 안되는 문제가 발생하는데..ㅠㅠ

해결방법 좀 알려주시면 감사하겠습니다..

쩹팝 (400 포인트) 님이 2014년 5월 19일 질문

1개의 답변

+2 추천
 
채택된 답변
데이터 구조가 같다면 a,b 구분하는 필드만 추가해서 같은 테이블을 쓰시고, 다른 구조라면 다른 헬퍼를 쓰는게 맞지 않을까요?
쎄미 (162,410 포인트) 님이 2014년 5월 19일 답변
쩹팝님이 2014년 5월 19일 채택됨
아!!!!! 이렇게 간단한 방법을....-_-;;;생각을 못했었네요..정말 감사합니다..!!!
...