2012-02-14 3 views
1

임은 다음과 같은 함수 내 안드로이드 응용 프로그램 내 공기에 SQLite는 DB 생성 :안드로이드 SQLite 데이터베이스의 Air 덮어 쓰기를 방지하는 방법?

protected function createDatabase():void{ 

     _sqlConnection = new SQLConnection(); 
     _sqlConnection.addEventListener(SQLEvent.OPEN, openHandler); 
     _sqlConnection.addEventListener(SQLErrorEvent.ERROR, errorHandler); 

     var _sqlFolder:File = File.applicationStorageDirectory; 
     var _sqlFile:File = _sqlFolder.resolvePath("RouteLog.db");   

     _sqlConnection.open(_sqlFile); 
} 

내가 성공적으로 삽입하고 선택, 테이블을 만들 수 있습니다,하지만 플래시가를 CS5.5에서 내가 할 때마다 응용 프로그램을 다시 게시 데이터베이스를 덮어 쓰고 모든 데이터가 손실됩니다. 완전히 엉망이 된, 어떤 아이디어도 환영합니다!

건배

[편집]

그래서, USB를 통해 플래시 프로에서 직접 디버그 버전을 게시하고있다. 응용 프로그램이 초기화 될 때 나는 다음 몇 가지 작업, 삽입, 선택 등을 실행하고 모든 것이 예상대로 다음과 같은 SQL 문

var SQL:String =    
      "CREATE TABLE IF NOT EXISTS myRoutes (" + 
      "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      "name STRING, " + 
      "created DATE, " + 
      "duration NUMBER, " + 
      "waypoints OBJECT, " + 
      "avgSpeed NUMBER, " + 
      "distance NUMBER, " + 
      "rating NUMBER" + ")"; 

를 사용하여 테이블을 생성 OPEN 이벤트를 수신에있어서, 상기 호출합니다. 앱을 종료하고 다시 응용 프로그램을 다시 설치하면 이전 데이터 세트는 손상되지 않지만 플래시에서 다시 게시하면 이전 릴리스에서 저장 한 데이터가 사라집니다. 플래시 용 AS3 기준에 따라 문서 SQLConnection.open() 파라미터로 주어진 파일에 연결 열리고 존재하지 않는 경우,이 생성되며 따르면

...

+0

데이터를 액세스/할당하는 방법을 보여주지 않았기 때문에 더 많은 코드가 도움이 될 수 있습니다. –

+0

그건별로 중요하지 않습니다. 그는 실제 파일이 앱의 applicationStorageDirector에서 덮어 쓰여지고 있다고 말합니다. – Aaron

답변

0

어도비 포럼에 대한 추가 연구가 끝난 후 나는 Flash Pro에서 다시 게시 할 때 applicationStorageDirectory에 저장된 파일이 덮어 쓰지 않도록 할 수 없다고 생각합니다.

앱 설치는 Geolocation을 핵심 기능으로 사용하므로 실제 데이터 세트가 필요합니다. 결국 나를 위해 일했던 해결책은 applicationStorageDirectory에서 documentsDirectory (sd 카드)로 데이터베이스를 복사하는 한편 앱을 개발하는 것이 었습니다 (시장에 출시되면 제거 할 것입니다).

0

.filesystem.File :

AIR 응용 프로그램을 제거 할 때 제거 프로그램이 응용 프로그램 저장소 디렉토리와 파일을 삭제하는지 여부는 플랫폼에 따라 다릅니다.

앱을 수동으로 제거한 다음 다시 장치로 밀어 넣는 경우 해당 문제가 발생할 수 있습니다. 이 단계에 대한 자세한 내용은 앱 간 데이터 지속성이 Android 기기에 게시되도록 확실히 도움이 될 것입니다 (Flash Builder를 사용했지만).