2013-07-17 1 views
0

assets 폴더에서 전송 된 DB를 사용하는 Android 애플리케이션에서 작업하고 있습니다. 정기적으로 데이터베이스의 테이블 중 하나를 업데이트해야하지만 다른 테이블의 내용은 삭제하지 않아야합니다 (사용자의 데이터가 있기 때문에).다른 테이블을 삭제하지 않고 애플리케이션에서 전송 (또는 발송)하는 데이터베이스의 테이블을 수정하는 방법은 무엇입니까?

나는 DB의 버전을 증가 시키면 전체 DB를 업그레이드합니다 읽었습니다,하지만 모든 단일 테이블을 재설정하는 것을 의미한다.

이것을 달성 할 방법이 있습니까? 당신은 내부적으로 처리 할 수 ​​

+1

정적 테이블과 사용자 생성 테이블 간의 조인이 필요한 경우가 아니면 완전히 별도의 데이터베이스에 보관합니다. 이것은'SQLiteAssetHelper'와 같은 도구를 사용하여 다른 테이블을 엉망으로 만들지 않고 정적 데이터를 유지하는 것을 단순화합니다. 그리고'ATTACH DATABASE'를 사용하면 데이터베이스 간의 조인을 할 수도 있습니다. 단지 시도하지 않았습니다. – CommonsWare

+0

사실 테이블간에 조인을해야하지만 다른 솔루션이 없으면 디자인을 변경하여 테이블을 별도로 사용할 수 있습니다. ** Attach DATABASE **를 먼저 사용하려고합니다. 실패하면 디자인을 바꿀 것입니다. 귀하의 답변에 감사드립니다. – mgrdiez

답변

0

는 마침내 CommonsWare 추천 무슨 짓을했는지. 내 디자인이 바뀌어서 지금은 두 개의 다른 데이터베이스 (하나는 응용 프로그램 정보를 포함하고 다른 하나는 사용자 정보 포함)를 가지고 있습니다. 사용자 정보를 삭제하지 않고 응용 프로그램 DB를 업데이트 할 수 있습니다.

0

, 나는 테이블을 업데이트하는 당신의 필요, 당신의 처리의 초기 응용 프로그램의 설치 이상을 유발 모르겠어요. 과정은 일종의 초보적인 것입니다.

테이블 A에 데이터가 있고 'col_new'를 추가하려고한다고 가정 해 보겠습니다. 온도 TO

DROP 표 온도

ALTER TABLE 이름 변경

드롭 테이블의 모든 표 A가 가지고있는 열을 더한 'col_new'로 테이블 A를 만들기

를했다.

쿼리 테이블 온도와 카운트가 모두 테이블에 일치하는이

insert into A (name, phonenumber) select name, address from Temp 

확인과 같은 테이블 무언가에 삽입합니다. col_new를 설정하십시오.

듣고 싶지 않았을 지 모르지만 도움이되기를 바랍니다. 데이터베이스를 분리 :

+0

자, 조금 다른 점을 설명해 드리겠습니다. 내 앱은 사용자가 앱을 다운로드 할 때 원래 배송 된 DB의 3 가지 테이블에서 정보를 사용합니다. 표 A, B 및 C를 가정 해 봅시다. 런타임에 사용자가 입력 한 데이터로 더 많은 표가 생성됩니다. 문제는 내가 지금까지 DB 버전을 늘리고 Asset 폴더에서 "다시로드"해야하기 때문에 원래 테이블 (A, B 및 C 테이블)에 레코드를 추가해야 할 때 발생합니다. 그러나이 작업으로 인해 다른 모든 테이블이 지워집니다 데이터베이스의 테이블 ... 어쨌든, 나는 당신의 제안이 매우 흥미 롭다고 느낍니다. 이 일을하기 위해 어떤 식 으로든 사용할 수 있는지 알아보기 위해 노력할 것입니다. 고맙습니다! – mgrdiez

+0

원본 앱의 콘텐츠 제공 업체에 crud 옵션이있는 URI가 있습니까? –

+0

아니요, URI가 없습니다. 나는 CommonsWare가 처음 추천 한대로이 문제를 해결했다. 감사! – mgrdiez

관련 문제