문제

iPhone 앱에서 sqlite를 데이터 소스로 사용하고 있습니다. 응용 프로그램 업그레이드에 관한 두 가지 질문이 있습니다.

1.) 데이터는 모두 구성/비 트랜잭션입니다. 의미가 있습니다. 구성 데이터를 업데이트/추가하면 앱의 업그레이드가 발행됩니다. 사용자가 업데이트 된 iPhone 앱을 받으면 원본이 제거됩니까? 이 경우 새로운 DB 구성 데이터가 배포되기 때문에 괜찮습니다. 그렇지 않은 경우 데이터를 어떻게 교체합니까?

2.) 데이터는 구성 및 트랜잭션입니다. 즉, 사용자가 데이터를 DB에 저장할 수 있음을 의미합니다. 사용자가 새 버전의 앱으로 업그레이드하면 기존 데이터를 유지하지만 모든 구성 데이터를 교체하려고합니다. 이를 달성하기 위해 앱 내에 저장된 삽입 및 업데이트 스크립트가 필요하다고 생각합니다. 효율적인 방법은 무엇입니까?

도움이 되었습니까?

해결책

CDESPINOSA는 시나리오 #1을 잘 설명 했으므로 #2를 다룰 것입니다.

아직 iPhone에서는이 작업을 수행하지 않았지만 데스크탑 환경 에서이 작업을 처리하는 가장 쉬운 방법은 구성 데이터를 별도의 데이터베이스에 유지하는 것입니다. 여러 데이터베이스에 쉽게 연결할 수 있습니다. 기본 데이터베이스를 열어 시작할 수있는 데이터베이스 일 것입니다. 그 다음에 sqlite3_exec an ATTACH 다음과 같이 보이는 진술 :

ATTACH 'filepath' AS config;

그때부터 다음과 같은 일을 할 수 있습니다.

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

구성 데이터베이스에 쓰면 응용 프로그램이 서명 검사에 실패하고 시작하지 않을 것이며 iPhone에 포함 된 SQLITE 버전은 읽기 전용 플래그를 지원하지 않을 정도로 오래된 것입니다. 이러한 이유로 구성 데이터베이스 파일을 샌드 박스에 복사하고 번들의 사본 대신 해당 사본을 열어야합니다.

(물론 SQL을 사용하고 한 데이터베이스에서 다른 데이터베이스로 값을 복사 할 수 있습니다. 그러나 이미 전체 구성 데이터베이스를 샌드 박스에 복사하고 있다면 ... 그럼에도 불구하고 ... 그것은 추가 단계 일뿐입니다. 그냥 첨부하십시오.)

다른 사람이 더 자세한 정보를 제공 할 수 있기를 바랍니다. :)

다른 팁

사용자가 앱을 업그레이드하면 이전 앱 번들이 제거되고 새로운 앱 번들이 설치되지만 앱 번들과 관련된 사용자 데이터가 손상되지 않습니다.

따라서 선택 사항은 a) 앱 번들에 데이터를 두십시오 (자동으로 교체) 또는 b) 일방적으로 첫 번째 실행시 사용자 데이터 영역으로 복사 할 수 있습니다 (따라서 업그레이드시이를 의도적으로 교체 할 것입니다).

나는 #2를 sqlite-knowledgable 사람에게 맡길 것이지만, 그것이 실제로하고있는 일이라면 "mysql"태그 대신 "sqlite"태그를 사용하고 싶을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top