PhoneGap 및 jQueryMobile을 사용하여 iOS 및 Android 용 교차 플랫폼 HTML/Javascript 앱을 만들고 있는데, 로컬 데이터베이스 (localdatabase/websql)의 한 테이블에 몇 가지 새로운 필드가 추가되었습니다.로컬 데이터베이스 (websql)에 원하는 새 필드가 포함되어 있는지 테스트하고없는 경우 추가하십시오.
나는 데이터베이스가 새 테이블 필드, 기존 사용자 데이터로 확장 될 때, 사용자 데이터를 제거하거나 데이터베이스의 inaccesible 이전 버전에 잠긴되지 않습니다 있는지 확인하려면 도전 .
배경 : 내 응용 프로그램에는 사용자 데이터 (소득 및 비용, 몇 가지 설정 포함)의 로컬 데이터베이스가 있습니다. 이러한 데이터는 신뢰할 수 있어야하며 처음 시작할 때 돌아갈 방법은 HTML5 localDatabase 기능을 사용했습니다.이 기능은 영구적이며 iOS 및 Android 브라우저뿐만 아니라 대부분의 데스크톱 브라우저에서 사용할 수 있기 때문에 사용할 수 있습니다.
localdb를 좀 더 쉽게 다루려면 persistenceJS라는 Javascript 플러그인/라이브러리/thingy를 사용하고 있습니다. 하지만 제 질문은 지속성에 정말로 관련이 없습니다 .JS.
새로운 버전의 앱에서 작업하고 있는데, 이는 설정 테이블의 몇 가지 새로운 필드를 사용합니다. 따라서이 사용자가 새 앱을 다운로드하여 실행하면 Settings 테이블에이 필드가 포함되어 있는지 테스트해야하며 그렇지 않은 경우 필드를 만들어야합니다.
어떻게 테스트합니까?
openDatabase 기능에서 사용되는 데이터베이스 레이블을 사용하십시오. 이것은 일부 개발자가 버전 번호를 저장하는 데 사용되는 것으로 보입니다. 이 옵션을 사용할 때 문제가되는 것은 openDatabase를 사용하여 데이터베이스를 열고 (존재하지 않으면 새 데이터베이스를 만드는) openDatabase를 사용하는 방법 만 알고 데이터베이스가 아직없는 경우 콜백을 구체적으로 실행하는 것입니다. 레이블에 "v2"와 같은 것을 지정하면서 테이블을 열면 새로운 테이블이 생성됩니까? 그렇다면 이전 테이블의 값을 새 테이블에 복사합니까?
테이블 필드가 있는지 확인하십시오 ... openDatabase를 사용하여 테이블 필드의 존재 여부를 테스트 할 수 있습니다. 그렇지 않으면 추가 할 수 있습니다. 이 테스트는 사용자가 앱을 열 때마다 실행되며 이는 약간 원시적 인 것으로 보입니다. 그런데
이 콜백의 예를 들어 줄 수 있습니까?이 함수로 데이터베이스의 존재를 확인할 수 있습니까? @Wytze – Learner