2012-07-25 4 views
6

우리는 cordova (phonegap)와 자신의 sqlite DB (우리는 외부 sqlite를 설치하지 않은 것을 의미)를 사용하는 응용 프로그램을 가지고 있습니다.phonegap 응용 프로그램에서 sqlite db 내보내기

DB를 SD 메모리에 백업해야하지만 sqlite 파일을 phonegap에서 SD로 내보내는 데 문제가 있습니다.

아무도 도와 줄 수 있습니까?

+0

질문에 더 구체적으로 설명해야합니다. 너 뭐 해봤 니? – NuSkooler

+0

나는 또한 같은 것을 찾고있다. 해결책을 찾았 니? –

답변

0

많은 시간 전에 ...하지만 난이 해결책이라고 생각 :

function failFiles(error) {   
    if (error.code == FileError.NOT_FOUND_ERR) alert("Message : NOT_FOUND_ERR") 
    else if (error.code == FileError.SECURITY_ERR) alert("Message : SECURITY_ERR") 
    else if (error.code == FileError.ABORT_ERR) alert("Message : ABORT_ERR") 
    else if (error.code == FileError.NOT_READABLE_ERR) alert("Message : NOT_READABLE_ERR") 
    else if (error.code == FileError.ENCODING_ERR) alert("Message : ENCODING_ERR") 
    else if (error.code == FileError.NO_MODIFICATION_ALLOWED_ERR) alert("Message : NO_MODIFICATION_ALLOWED_ERR") 
    else if (error.code == FileError.INVALID_STATE_ERR) alert("Message : INVALID_STATE_ERR") 
    else if (error.code == FileError.SYNTAX_ERR) alert("Message : SYNTAX_ERR") 
    else if (error.code == FileError.INVALID_MODIFICATION_ERR) alert("Message : INVALID_MODIFICATION_ERR") 
    else if (error.code == FileError.QUOTA_EXCEEDED_ERR) alert("Message : QUOTA_EXCEEDED_ERR") 
    else if (error.code == FileError.PATH_EXISTS_ERR) alert("Message : PATH_EXISTS_ERR") 
} 

function successDump() {  
} 

//Export DB. Get the file  file:///data/data/yourproject/app_database/file__0/0000000000000001.db 
//and save in the SD with the name yourproject.db 
function copyBdtoSD() {  
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, successDump, failFiles);   window.resolveLocalFileSystemURI("file:///data/data/yourproject/app_database/file__0/0000000000000001.db", copyFileToSd, failFiles); 
} 


function copyFileToSd(entry) {  
    var parent = "file:///mnt/sdcard", 
     parentName = parent.substring(parent.lastIndexOf('/')+1),   
     parentEntry = new DirectoryEntry(parentName, parent);  
    var newName = "yourproject.db"; 

    // copy the file 
    entry.copyTo(parentEntry, newName, successExport, failFiles);  
} 
+0

선생님 우리는 sdcard에 db 파일을 복사 할 수 있습니다 또는 우리는 우리의 전화가 다음 사용자가 다른 장치에서 데이터베이스 파일을 복원 묻습니다, 우리는 바로 같은 파일에 그것을 복원하는 경우 서버에 저장할 수 있습니다 ..하지만 나는 이것을 시도 몇 일 동안 아무런 해결책도 얻지 못했습니다. 이걸 확인해주세요. – user3107283

1

이 코르도바 3.5 좋은 소리와 필요 1.2.1

어떤 변화를 org.apache.cordova.file differents 경로입니다.

window.resolveLocalFileSystemURL("file:///data/data/my-app-name/databases/name-of.db", function(fs) { 
       var parent = "file://mnt/external_sd/"; 
       var newName = "mybackup.db"; 
       window.resolveLocalFileSystemURL(parent, function(directoryEntry) { 
        fs.copyTo(directoryEntry, newName, function() { 
         alert("Backup ok"); 
        }, failFiles); 
       }); 
      }, failFiles); 

function failFiles(error) {   
    if (error.code == FileError.NOT_FOUND_ERR) alert("Message : NOT_FOUND_ERR") 
    else if (error.code == FileError.SECURITY_ERR) alert("Message : SECURITY_ERR") 
    else if (error.code == FileError.ABORT_ERR) alert("Message : ABORT_ERR") 
    else if (error.code == FileError.NOT_READABLE_ERR) alert("Message : NOT_READABLE_ERR") 
    else if (error.code == FileError.ENCODING_ERR) alert("Message : ENCODING_ERR") 
    else if (error.code == FileError.NO_MODIFICATION_ALLOWED_ERR) alert("Message : NO_MODIFICATION_ALLOWED_ERR") 
    else if (error.code == FileError.INVALID_STATE_ERR) alert("Message : INVALID_STATE_ERR") 
    else if (error.code == FileError.SYNTAX_ERR) alert("Message : SYNTAX_ERR") 
    else if (error.code == FileError.INVALID_MODIFICATION_ERR) alert("Message : INVALID_MODIFICATION_ERR") 
    else if (error.code == FileError.QUOTA_EXCEEDED_ERR) alert("Message : QUOTA_EXCEEDED_ERR") 
    else if (error.code == FileError.PATH_EXISTS_ERR) alert("Message : PATH_EXISTS_ERR") 
} 
+0

선생님, DB 파일을 sdcard에 복사 할 수 있습니다. 그렇지 않으면 서버에 저장할 수 있습니다. 그럼 우리는 바로 같은 파일에 그것을 복원 할 수 있습니다 ..하지만 난 일하는 해결책을 못 얻으려면이 커플 노력하고 있습니다 .. 이걸 확인해 주시기 바랍니다 수 – user3107283

1

몇 년 후반, 나는 알고있다, 그러나 이것은 코르도바 5.4.1에 나를 위해 노력하고 (나는 아이폰 OS가 너무 cordova.file.application를 사용하여 생각하지만, 나는 아직 테스트하지 않은) 안드로이드에서 실행되는 :

this.getdbfilename = function() { 
    return "dbfile.db"; 
}; 

this.getdbdirectory = function() { 
    return cordova.file.applicationStorageDirectory + "databases/"; 
}; 


// copy DB file out to non-private app directory. 
this.copyDBFileOut = function (outfilename) { 
    window.resolveLocalFileSystemURL(this.getdbdirectory() + this.getdbfilename(), function (fileEntry) { 
     window.resolveLocalFileSystemURL((cordova.file.externalDataDirectory || cordova.file.documentsDirectory), function(dirEntry) { 
      fileEntry.copyTo(dirEntry, outfilename, function() { console.log("copyDBFileOut() succeeded");}, this.errorHandler); 
     }); 
     }); 
    }; 
+0

선생님 우리는 DB 파일을 sdcard로 복사하거나 우리는 서버에 저장할 수 있습니다 , 우리는 우리의 전화를 누른 다음 사용자가 다른 장치에서 데이터베이스 파일을 복원 묻습니다, 그럼 우리는 바로 같은 파일에 그것을 복원 할 수 있습니다 ..하지만 난 일하는 솔루션을 얻지 못하는이 커플을 시도하고 .. u는 그것을 확인하시기 바랍니다 이? 당신이 아는 한 Pls 도와주세요 – user3107283