이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8 앱과 함께 참조 데이터베이스를 배포하는 방법

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

Windows Phone OS 7.1 부터는 참조 데이터를 로컬 데이터베이스에 저장하고 Windows Phone 앱을 통해 배포할 수 있습니다. 앱이 단말기에 설치된 후 읽기 전용 연결을 위해 참조 데이터베이스를 설치 폴더에 그대로 두거나 읽기/쓰기 작업을 위해 로컬 폴더에 복사할 수 있습니다. 이 항목에서는 참조 데이터베이스를 만들고 앱에서 사용하는 프로세스에 대해 설명합니다. 로컬 데이터베이스를 사용하는 방법에 대한 자세한 내용은 Windows Phone 8의 로컬 데이터베이스를 참조하세요.

중요중요:

데스크톱에서 만든 Microsoft SQL CE(SQL Server Compact) 데이터베이스는 Windows Phone 앱에서 작동할 수도 있지만 공식적으로 지원되지 않습니다.

이 항목에는 다음 단원이 포함되어 있습니다.

 

기본 앱과 함께 배포할 로컬 데이터베이스를 만들려면 도우미 앱이 필요합니다. 도우미 앱은 개발 컴퓨터에서 실행되며 로컬 폴더에 로컬 데이터베이스를 만들고 데이터베이스에 원하는 참조 데이터를 로드합니다.

이 섹션에서는 도우미 앱을 만들고 도우미 앱을 사용하여 참조 데이터베이스를 만든 다음 격리된 저장소 탐색기(ISETool.exe)를 사용하여 로컬 데이터베이스 파일을 추출하고 컴퓨터에 저장합니다. 격리된 저장소 탐색기에 대한 자세한 내용은 Windows Phone 8의 격리된 저장소 탐색기 도구를 사용하는 방법을 참조하세요.

참조 데이터베이스를 만들려면

  1. 로컬 데이터베이스를 만들고 이 데이터베이스에 참조 데이터를 로드하는 도우미 앱을 만듭니다. 자세한 내용은 Windows Phone 8의 기본 로컬 데이터베이스 앱을 만드는 방법Windows Phone 8의 로컬 데이터베이스 앱(MVVM 포함)을 만드는 방법를 참조하세요.

  2. 도우미 앱을 Windows Phone 에뮬레이터나 Windows Phone 단말기에 배포합니다.

  3. 도우미 앱을 적절하게 실행하여 로컬 데이터베이스를 만들고 참조 데이터와 함께 로드합니다. 모든 로컬 데이터베이스는 로컬 폴더에 생성됩니다.

  4. WMAppManifest.xml 파일의 App 요소에 대한 ProductID 특성에 지정된 앱의 제품 GUID를 가져옵니다. 제품 GUID는 로컬 폴더에서 로컬 데이터베이스 파일을 복사할 때 필요합니다.

  5. 테더링된 단말기나 에뮬레이터가 실행되고 있는 동안 격리된 저장소 탐색기를 사용하여 로컬 데이터베이스를 컴퓨터에 복사합니다. 자세한 내용은 Windows Phone 8의 격리된 저장소 탐색기 도구를 사용하는 방법을 참조하세요.

로컬 데이터베이스 파일을 컴퓨터에 저장한 후 다른 형식의 종료 중인 파일을 추가할 때와 동일한 방식으로 기본 앱에 추가할 수 있습니다.

참조 데이터베이스를 앱에 추가하려면

  1. Visual Studio에서 참조 데이터베이스를 사용하는 Windows Phone 앱에 대한 프로젝트를 만듭니다. 이 앱은 기본 앱이며 도우미 앱과는 다른 앱입니다.

  2. 기본 앱의 프로젝트 메뉴에서 기존 항목 추가를 선택합니다.

  3. 기존 항목 추가 메뉴에서 격리된 저장소 탐색기를 사용하여 컴퓨터에 저장한 로컬 데이터베이스 파일을 선택하고 추가를 클릭합니다. 로컬 데이터베이스가 프로젝트에 추가됩니다.

  4. 솔루션 탐색기에서 로컬 데이터베이스 파일을 마우스 오른쪽 버튼으로 클릭한 다음 파일이 콘텐츠로 빌드되고 항상 출력 디렉터리에 복사되도록(항상 복사) 파일 속성을 설정합니다.

앱과 함께 배포한 로컬 데이터베이스는 배포 후 설치 폴더에 저장되어 있습니다. 설치 폴더는 읽기 전용입니다. 기본 앱은 이 폴더에서 읽기 전용 방식으로 로컬 데이터베이스에 연결하거나 읽기/쓰기 작업을 위해 로컬 폴더에 복사할 수 있습니다. 이 섹션에서는 이러한 두 가지 옵션에 대해 자세히 설명합니다.

중요중요:

설치 폴더에서 참조 데이터베이스 파일에 단독으로 액세스하려는 경우 이 파일을 암호화하지 않는 것이 좋습니다. 이 파일을 암호화할 경우 처음 연결 시 시스템에 인덱스 재작성 등과 같은 일상적인 데이터베이스 유지 관리 작업을 수행하지 못하게 됩니다. 암호화된 참조 데이터베이스를 사용하려면 데이터베이스를 처음 사용하기 전에 로컬 폴더에 이 데이터베이스를 복사한 후 읽기/쓰기 연결로 이 데이터베이스에 연결합니다.

설치 폴더에서 읽으려면

  • 설치 폴더의 참조 데이터베이스에 연결하는 경우 연결 문자열의 File Mode 속성을 사용하여 연결을 읽기 전용으로 지정해야 합니다. 다음 예제에서는 설치 폴더에 대해 읽기 전용 연결을 만드는 방법을 보여 줍니다. 연결 문자열에 대한 자세한 내용은 Windows Phone 8의 로컬 데이터베이스 연결 문자열을 참조하세요.

    // Create the data context.
    MyDataContext db = new MyDataContext("Data Source = 'appdata:/mydb.sdf'; File Mode = read only;");
    

    이 예제에서는 파일 경로에 appdata 접두사를 사용하여 설치 폴더의 경로(appdata)와 로컬 폴더의 경로(isostore)를 구분합니다. 접두사가 없으면 데이터 컨텍스트에서 로컬 폴더의 경로를 적용합니다.

참조 데이터베이스를 로컬 폴더에 복사하려면

  • 설치 폴더의 참조 데이터베이스를 로컬 폴더에 복사하려면 스트림 기반 복사를 수행합니다. 다음 예제에서는 설치 폴더 루트의 로컬 데이터베이스 파일 ReferencedDB.sdf를 로컬 폴더 루트에 복사하는 MoveReferenceDatabase라는 메서드를 보여 줍니다.

    using System;
    using System.IO;
    using System.IO.IsolatedStorage;
    using System.Windows;
    
    
    namespace PrimaryApplication
    {
        public class DataHelper
        {
    
            public static void MoveReferenceDatabase()
            {
                // Obtain the virtual store for the application.
                IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
    
                // Create a stream for the file in the installation folder.
                using (Stream input = Application.GetResourceStream(new Uri("ReferenceDB.sdf", UriKind.Relative)).Stream)
                {
                    // Create a stream for the new file in the local folder.
                    using (IsolatedStorageFileStream output = iso.CreateFile("ReferenceDB.sdf"))
                    {
                        // Initialize the buffer.
                        byte[] readBuffer = new byte[4096];
                        int bytesRead = -1;
    
                        // Copy the file from the installation folder to the local folder. 
                        while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0)
                        {
                            output.Write(readBuffer, 0, bytesRead);
                        }
                    }
                }
            }
        }
    }
    
    

표시:
© 2015 Microsoft