2012-03-30 1 views
0

내 앱에 sqlite 파일이 있습니다. 응용 프로그램은 기업 인증서와 함께입니다. 내가 다음 데이터베이스에 변경 새 버전을 만들려고하면새 버전의 앱을 만들 때 sqlite 파일의 변경

이제 :

1) 난 내 SQLite는 파일 이름을 변경해야?
2) 그렇다면 내 앱을 사용하는 사람, 저장된 데이터가있는 사람이 내 앱의 새 버전에 자동으로 삽입되는 방식이 있습니까?

그렇지 않으면 내가 새 파일을 만든 다음 이전 데이터가 제거됩니다 !!! 사전에

덕분에 ..

+0

이 질문과 그 답변은 유용 할 것입니다. http://stackoverflow.com/questions/554009/deploying-sqlite-db-on-iphone-app-upgrade – ArjunShankar

+0

가장 좋은 방법은 기존 데이터베이스에 구조적 변경을 만들어야한다는 것입니다 만. 그것은하기 쉽고 더 논리적 일 것입니다. –

+0

하지만 내 앱이 기기에 설치되어 있고 새 버전을 설치하는 경우 이전 데이터가 그대로 유지되도록 새로운 변경 사항을 얻을 수있는 방법이 있습니다. – PJR

답변

1

1) AFAIK, 당신은 업데이트 할 때, 기존의 응용 프로그램 번들은 새로운 응용 프로그램 번들로 대체됩니다. 그러나 사용자 데이터는 변경되지 않습니다. 즉 앱이 사용자에 의해 사용과 함께 변경되는 sqlite DB의 사본은 삭제되거나 대체되지 않습니다.

2) 그래서, 당신은 쿼리로 DB에 아마도 배를 변경 할 수 있습니다

가) 새로운 테이블 CREATE TABLE 쿼리로 이동합니다.

b) 테이블 구조를 변경하면 ALTER TABLE 개의 검색어가 표시됩니다.

3) 이제 한 가지 문제는 이전 버전을 출시했을 때이 모든 것을 생각하지 않았다는 것입니다. 그렇다면 2a2b과 같은 쿼리가 업그레이드시에만 실행되도록하려면 어떻게해야합니까?

a) 처음으로 응용 프로그램에서 제어권을 얻었을 때 사용자 상호 작용을 허용하기 전에 새 버전에서 '변경 한'테이블에 더미 SELECT SINGLE * FROM <tablename>을 발생 시키십시오.

b) sqlite3_column_countsqlite3_column_name을 사용하여 DB가 [이전 또는 신규]에 해당하는 앱 버전을 확인하십시오. 이 새 버전 (새 열이 이미 존재 즉), 다른 사람, 아무것도하지 않고 내가 2A2B으로 앞서 언급 한 쿼리를 발생하는 경우

C).

0

이것을 사용하여 시작하지 않았다면 문제는 아닐지 모르지만 Core Data는 마이그레이션을 상당히 잘 처리합니다. API를 배우는 데 장애가 될만큼 가치가 있습니다. 우리는 그것을 통해 큰 성공을 거두었습니다 (복잡한 이주, "관계"사이에 새로운 객체 삽입 등).

관련 문제