2013-03-09 3 views
0

Windows Store 응용 프로그램 내에 Sqlite 데이터베이스가 있습니다. 이제 응용 프로그램을 재설치 할 때 데이터베이스를 사용할 수 있다고 말하고 싶습니다. 따라서 필자는이 파일을 내 프로젝트에 파일로 추가해야합니다.Windows Store App에서 Sqlite 데이터베이스 내보내기

이제 PickSaveFileAsync() - 메서드를 사용하여 데이터베이스 파일을 내보내려고합니다. 불행하게도 파일을 얻은 후에는 어떻게 해야할지 잘 모릅니다. 여기에 내가 지금까지 가지고있는 것이있다 :

private async void exportDB_Click(object sender, RoutedEventArgs e) 
    { 
     StorageFile database = await ApplicationData.Current.LocalFolder.GetFileAsync("Hashes.db"); 
     var picker = new FileSavePicker(); 
     picker.FileTypeChoices.Add("Database File", new string[] { ".db" }); 
     picker.CommitButtonText = "Save DB"; 
     picker.SuggestedFileName = "Database"; 
     StorageFile file = await picker.PickSaveFileAsync(); 
     if (file != null) 
     { 
      // What to do here? 
     } 
    } 
+0

사용자 내보낼 필요가 없습니다 및 따라서 업데이트 또는 다시 설치 사이에 응용 프로그램 데이터베이스를 가져올 생각하십니까? 다른 사용자에게 친숙한 옵션이 있습니까? – letiagoalves

+0

이 앱의 최종 사용자 버전과 관리자 버전이 있으며, 데이터베이스 내보내기는 후자의 경우에만 사용할 수 있습니다. – Thomas

답변

2

나는 당신이 정확히 무엇을 얻으려고 노력하고 있는지 알기 힘들다.

코드를 보면 데이터베이스 파일을 사용자 정의 위치에 복사하려는 것으로 보입니다. 이렇게하려면 당신의 if 블록 내부에 다음 코드를 추가합니다

using (var srcStream = await database.OpenStreamForReadAsync()) 
{ 
    using (var destStream = await file.OpenStreamForWriteAsync()) 
    { 
     await srcStream.CopyToAsync(destStream); 
    } 
} 

을 당신이 응용 프로그램을 사용하여 파일을 포함하려고하는 것 같다 소개 텍스트를 읽기. 이 경우 실제로 프로젝트에 Content으로 추가해야합니다. 당신이 모르는 경우

var dbFile = Package.Current.InstalledLocation.GetFileAsync(@"db\Hashes.db"); 

, 당신은 다음 디렉토리에 LocalFolder에있는 파일을 찾을 수 있습니다 : 다음과 같이 다음 코드에서 액세스 할 수

C:\Users\Username\AppData\Local\Packages\PackageName\LocalState 
+0

정말 고마워요, 그게 내가 정말로 찾고 있었던 것이 었습니다. 또한 app 폴더에서 데이터베이스 파일을 찾을 수 있다는 것을 알지 못했습니다. 또한 편리 할 것입니다. – Thomas

관련 문제