이 연습에서는 Microsoft Visual Studio 2005 에서 Microsoft SQL Server 2005 Compact Edition 을 사용하는 응용 프로그램을 만드는 방법에 대해 설명합니다. SQL Server Compact Edition 데이터베이스는 SQL Server 2005 게시의 구독자가 되며 병합 복제를 사용하여 SQL Server 2005 데이터베이스에서 SQL Server Compact Edition 데이터베이스로 정보를 다운로드합니다.
이 연습에서는 다음 단계를 따릅니다.
- SQL Server 2005 게시 구성
- 복제용 인터넷 정보 서비스(IIS) 구성
- SQL Server Compact Edition 구독 생성
- 응용 프로그램 생성
- 응용 프로그램 배포 및 구독 테스트
필수 구성 요소
이 연습에서 설명하는 대로 단계를 수행하려면 다음이 필요합니다.
- Windows XP 및 IIS가 설치된 컴퓨터
- Visual Studio 와 동일한 컴퓨터에 설치된 SQL Server 2005 SP2(서비스 팩 2) 이상 버전
SQL Server 2005 작업
응용 프로그램을 만들려면 먼저 SQL Server 2005 에서 게시를 구성해야 합니다. 그런 다음 예제 데이터베이스를 만들고 해당 데이터베이스에서 데이터를 게시합니다. 미리 작성된 스크립트 파일을 사용하여 데이터베이스를 만든 다음 새 게시 마법사를 사용하여 게시를 만듭니다.
데이터베이스 생성 및 데이터 채우기
SQL Server Management Studio 열기
서버에 연결하라는 메시지가 나타나면 서버 이름에 **(로컬)**이라고 입력한 다음 연결을 클릭합니다.
새 쿼리 창을 엽니다. SQL Server Compact Edition 데이터베이스를 만들고 데이터로 채웁니다.
USE master; GO IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'SQLMobile') BEGIN DROP Database SQLMobile; END GO CREATE DATABASE SQLMobile; GO USE SQLMobile; GO CREATE TABLE MembershipData (MemberID INTEGER IDENTITY (1,1) CONSTRAINT pkMemberID PRIMARY KEY, MemberName NVarChar (50)); CREATE TABLE FlightData (MemberID INTEGER FOREIGN KEY REFERENCES MembershipData(MemberID), Destination NVarChar (50), FlightStatus NVarChar(50), ArrivalDate DATETIME, FlownMiles INTEGER); INSERT INTO MembershipData (MemberName) VALUES ('Mr Don Hall'); INSERT INTO MembershipData (MemberName) VALUES ('Mr Jon Morris'); INSERT INTO MembershipData (MemberName) VALUES ('Ms TiAnna Jones'); INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (1, 'Seattle', 'Flight Delayed 1 hour', '8/25/00', '20000'); INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (2, 'London', 'Flight on time', '9/12/00', '15000'); INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (3, 'Sydney', 'Flight Gate Closing', '11/5/00', '30000'); INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (1, 'Tokyo', 'Delayed Fog', '5/25/00', '25000'); INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (2, 'Minneapolis', 'Flight on time', '5/1/00', '1000'); INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (3, 'Memphis', 'Flight Gate Closing', '1/5/00', '1000'); GO**실행(!)**을 클릭하여 스크립트를 실행하고 데이터베이스를 만듭니다. 스크립트가 실행되고 SQLMobile이라는 새 데이터베이스가 생성됩니다.
[!참고] F5 키를 누르거나 쿼리 메뉴에서 실행을 클릭하여 쿼리를 실행할 수도 있습니다.
데이터베이스가 생성되었는지 확인하려면 개체 탐색기에서 (로컬), 데이터베이스, SQLMobile을 차례로 확장합니다. SQLMobile 데이터베이스가 목록에 없으면 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 새로 고침을 선택하여 데이터베이스 목록을 업데이트하십시오.
데이터 게시용 서버 준비
게시를 만들려면 먼저 스냅숏 에이전트 사용자 계정을 만들고 스냅숏 파일을 저장할 공유 폴더를 만들어 게시에 사용할 서버를 준비해야 합니다. 스냅숏 폴더가 생성되면 서버의 모든 게시에 사용됩니다. 이 서버에서 게시를 이미 만든 경우에는 이 단계를 건너뛸 수 있습니다.
스냅숏 사용자 계정 생성
제어판의 관리 도구에서 컴퓨터 관리를 엽니다.
컴퓨터 관리에서 시스템 도구, 로컬 사용자 및 그룹을 차례로 확장하고 사용자를 마우스 오른쪽 단추로 클릭한 다음 새 사용자를 선택합니다.
새 사용자 대화 상자에서 다음 정보를 입력한 다음 만들기를 클릭합니다.
| 필드 | 값 |
|---|---|
사용자 이름 |
snapshot_agent |
암호 |
p@ssw0rd |
암호 확인 |
p@ssw0rd |
다음 로그온할 때 반드시 암호 변경 |
선택 안 함 |
암호 사용 기간 제한 없음 |
선택 |
중요: |
|---|
| 이러한 설정은 테스트 목적으로만 사용해야 합니다. 프로덕션 환경에서 사용자 계정 설정은 네트워크 보안 요구 사항을 준수해야 합니다. 대부분의 경우에는 스냅숏 에이전트에 로컬 사용자 계정 대신 도메인 사용자 계정을 사용합니다. |
snapshot 폴더 생성
Windows 탐색기에서 snapshot이라는 새 폴더를 만듭니다. 이 연습에서는 C 드라이브의 루트 디렉터리에 c:\snapshot 폴더를 만들 수 있습니다. snapshot 폴더를 마우스 오른쪽 단추로 클릭하고 공유 및 보안을 선택합니다.
공유 탭에서 이 폴더를 공유를 선택한 다음 사용 권한을 클릭합니다.
snapshot의 사용 권한에서 추가를 클릭합니다.
선택할 개체 이름을 입력하십시오에 computername\snapshot_agent를 입력한 다음 이름 확인, 확인을 차례로 클릭합니다. 여기서 computername은 로컬 컴퓨터의 이름입니다.
snapshot의 사용 권한에서 snapshot_agent를 선택하고 변경 및 읽기 공유 권한을 할당한 다음 확인을 클릭합니다.
보안 탭을 선택합니다.
추가를 클릭합니다.
선택할 개체 이름을 입력하십시오에 computername\snapshot_agent를 입력한 다음 이름 확인, 확인을 차례로 클릭합니다. 여기서 computername은 로컬 컴퓨터의 이름입니다.
snapshot_agent를 선택하고 허용된 사용 권한 목록에 쓰기 권한을 추가합니다. 이제 snapshot_agent 계정에 다음과 같은 권한이 부여됩니다.
- 읽기 및 실행
- 폴더 내용 보기
- 읽기
- 쓰기
확인을 클릭하여 snapshot 등록 정보 창을 닫습니다.
Windows 탐색기를 닫습니다.
게시 생성
SQL Server Management Studio 의 개체 탐색기에서 (로컬) 노드가 확장되어 있지 않으면 확장한 다음 복제를 확장합니다.
로컬게시 폴더를 마우스 오른쪽 단추로 클릭하고 새 게시를 선택합니다.
새 게시 마법사 시작 화면에서 다음을 클릭합니다.
이전에 이 컴퓨터에서 게시를 만든 적이 없으면 배포자를 구성하라는 메시지가 표시됩니다. 로컬 컴퓨터를 자체 배포자로 사용하도록 첫 번째 옵션을 선택한 후 다음을 클릭합니다.
이전에 이 컴퓨터에서 게시를 만든 적이 없으면 스냅숏 폴더를 지정하라는 메시지가 나타납니다. 이전 절차에서 만든 스냅숏 폴더의 공유 경로를 입력합니다. 로컬 경로 대신 공유 경로를 \\servername\share 형식으로 입력합니다. 이 연습에서는 \\computer\snapshot을 입력하고 다음을 클릭하는 것이 좋습니다. 여기서 computer는 사용자 컴퓨터의 이름입니다.
데이터베이스 목록에서 SQLMobile을 선택한 후 다음을 클릭합니다.
게시 유형 목록에서 병합 게시를 선택한 후 다음을 클릭합니다.
구독자유형 페이지에서 예를 선택하여 SQL Server Compact Edition 구독자에 대한 지원을 활성화한 후 다음을 클릭합니다.
게시할 개체 목록에서 테이블 확인란을 선택합니다. 테이블을 확장하면 SQLMobile 데이터베이스의 테이블 두 개가 선택되어 표시됩니다. 다음을 클릭합니다.
고유 식별자가 테이블에 추가된다는 알림을 받습니다. 모든 병합 아티클에는 uniqueindentifier 열이 필요합니다. 다음을 클릭합니다.
이제 테이블 행 필터 페이지에서 게시된 데이터에 필터를 추가할 수 있습니다. 이 연습에서는 데이터를 필터링하지 않습니다. 다음을 클릭합니다.
스냅숏 에이전트 페이지에서 스냅숏 생성 시기 및 스냅숏 에이전트 실행 빈도를 구성할 수 있습니다. 다음을 클릭하여 기본 설정을 그대로 적용합니다.
에이전트 보안 대화 상자에서 보안 설정을 클릭합니다.
- 스냅숏 에이전트 보안 대화 상자에 이전 절차에서 만든 계정의 로그온 정보를 입력합니다. 프로세스 계정은 computer_name\snapshot_agent이고 암호는 p@ssw0rd입니다. 여기서 computer_name은 사용자 컴퓨터의 이름입니다.
- 확인을 클릭하여 설정을 저장합니다.
- 에이전트 보안 페이지에서 다음을 클릭합니다.
마법사 작업 화면에서 게시 생성 시기 및 스크립트 파일 생성 여부를 결정할 수 있습니다. 즉시 스냅숏 만들기의 선택을 취소한 후 다음을 클릭합니다.
마법사 완료 화면에서 게시 이름으로 SQLMobile을 입력한 다음 마침을 클릭합니다.
게시가 생성됩니다. 마법사가 완료되면 닫기를 클릭합니다.
사용 권한 설정
스냅숏 에이전트 계정 및 IIS 익명 사용자 계정에 권한을 부여해야 합니다. 또한 PAL(게시 액세스 목록)에 IIS 익명 사용자 계정을 추가해야 합니다.
데이터베이스 사용 권한 설정
SQL Server Management Studio 의 개체 탐색기에서 보안을 확장하고 로그인을 마우스 오른쪽 단추로 클릭한 다음 새 로그인을 선택합니다.
새 로그인 대화 상자에서 Windows 인증을 선택하고 검색을 클릭하여 선택할 개체 이름을 입력하십시오 상자에 computername\snapshot_agent를 입력한 다음 이름 확인, 확인을 차례로 클릭합니다. 여기서 computername은 컴퓨터의 이름입니다.
탐색 창에서 사용자 매핑 창을 선택합니다.
데이터베이스 목록에서 배포, db_owner 역할, SQLMobile 및 db_owner 역할을 차례로 선택한 다음 확인을 클릭합니다.
로그인을 마우스 오른쪽 단추로 클릭하고 새 로그인을 선택합니다.
새 로그인 대화 상자에서 Windows 인증을 선택하고 검색을 클릭하여 선택할 개체 이름을 입력하십시오 상자에 computername\iusr_computername를 입력한 다음 이름 확인, 확인을 차례로 클릭합니다. 여기서 computername은 컴퓨터의 이름입니다.
탐색 창에서 사용자 매핑 창을 선택합니다.
데이터베이스 목록에서 배포 및 SQLMobile을 선택한 다음 확인을 클릭합니다.
게시 액세스 권한 부여
개체 탐색기에서 복제, 게시를 차례로 확장하고 [SQLMobile]:SQLMobile 게시를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
탐색 창에서 게시 액세스 목록을 선택합니다.
추가를 클릭합니다. 게시 액세스 추가 대화 상자에 IUSR 계정이 나열됩니다. 해당 계정을 선택한 다음 확인을 클릭합니다.
IUSR 계정이 PAL에 있는지 확인한 다음 확인을 클릭합니다.
게시 스냅숏 생성
SQLMobile 게시에 대한 구독을 초기화하려면 먼저 게시 스냅숏을 만들어야 합니다.
게시 스냅숏 생성
SQL Server Management Studio 의 개체 탐색기에서 (로컬) 컴퓨터 노드를 확장합니다.
로컬 게시 폴더를 확장하고 게시 이름을 선택한 다음 SQLMobile을 마우스 오른쪽 단추로 클릭하고 스냅숏 에이전트 상태 보기를 클릭합니다.
스냅숏 에이전트 상태 보기 대화 상자에서 시작을 클릭합니다.
진행하기 전에 스냅숏 작업이 성공적으로 수행되었는지 확인합니다.
웹 동기화용 IIS 및 SQL Server 2005 구성
SQL Server 에 게시가 구성되었으므로 SQL Server Compact Edition 클라이언트가 네트워크를 통해 해당 게시를 사용할 수 있도록 설정해야 합니다. SQL Server Compact Edition 에서는 IIS를 통해 SQL Server 에 연결합니다. 특히 클라이언트가 SQL Server Compact Edition 서버 에이전트를 사용할 수 있도록 만드는 가상 디렉터리를 만들고 구성해야 합니다.
SQL Server Compact Edition 서버 구성 요소 설치
Windows 탐색기에서 다음 디렉터리를 찾습니다.
C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE
sqlce30setupen.msi를 두 번 클릭하여 설치 프로그램을 실행합니다.
설치 마법사 시작 화면에서 다음을 클릭합니다.
Microsoft 소프트웨어 사용 조건의 내용을 읽고 동의한 후 다음을 클릭합니다.
시스템 구성 검사 화면에서 모든 항목이 통과되는지 확인합니다. SQL Server 2000 이 설치되어 있지 않으면 목록의 마지막 항목에 경고 표시가 나타납니다. SQL Server 2005 를 사용하고 있기 때문에 문제가 되지는 않습니다. 다음을 클릭합니다.
다음 화면에서 다음을 클릭하고 설치를 클릭하여 설치를 시작합니다.
마침을 클릭합니다.
웹 동기화용 게시 구성
SQL Server Management Studio 의 개체 탐색기에서 (로컬) 컴퓨터 노드를 확장합니다.
로컬 게시 폴더를 확장하고 게시 이름을 선택하여 마우스 오른쪽 단추로 클릭한 다음 웹 동기화 구성을 선택합니다.
마법사 시작 화면에서 다음을 클릭합니다.
구독자 유형 화면에서 SQL Server Compact Edition을 선택하고 다음을 클릭합니다.
웹 서버 화면에서 컴퓨터 이름을 아직 입력하지 않은 경우 IIS가 실행되는 컴퓨터 이름 입력에 입력한 다음 새 가상 디렉터리 만들기를 클릭합니다.
트리가 표시되면 컴퓨터를 확장하고 웹 사이트를 확장한 다음 기본 웹 사이트를 선택합니다.
다음을 클릭합니다.
가상 디렉터리 정보 화면의 별칭 입력란에 SQLMobile을 입력하고 다음을 클릭합니다.
경고 대화 상자가 표시되면 예를 클릭합니다.
보안 통신 화면에서 보안 채널(SSL)이 필요하지 않습니다를 선택합니다.
중요 프로덕션 환경에서는 인터넷을 통해 구독자와 IIS를 실행하는 서버 간에 교환하는 데이터를 보호하기 위해 SSL 암호화를 사용해야 합니다. 클라이언트 인증 화면에서 클라이언트가 익명으로 연결합니다를 선택한 후 다음을 클릭합니다.
익명 액세스 화면에서 다음을 클릭하여 기본 설정을 그대로 적용합니다.
스냅숏 공유 액세스 화면에서 \\computer\snapshot을 입력하고 다음을 클릭합니다. 여기서 computer는 사용자 컴퓨터의 이름입니다.
스냅숏 공유가 비어 있다는 경고가 표시되면 예를 클릭합니다.
마침을 클릭합니다.
닫기를 클릭합니다.
Internet Explorer에서 주소에 URL https://localhost/SQLMobile/sqlcesa30.dll?diag를 입력한 다음 이동을 클릭합니다. 이렇게 하면 진단 모드에서 서버에 연결됩니다. SQL Server Compact Edition 서버 에이전트 진단 보고서에 성공이 표시되는지 확인합니다.
SQL Server Compact Edition 작업
SQL Server Compact Edition 를 사용할 응용 프로그램을 개발하기 전에 SQL Server Compact Edition 데이터베이스 및 구독을 미리 만들면 시간을 절약할 수 있습니다. SQL Server Management Studio 를 사용하여 로컬 컴퓨터에서 SQL Server Compact Edition 데이터베이스를 만들고 해당 데이터베이스로 작업을 수행할 수 있습니다. 그런 다음 이 데이터베이스를 응용 프로그램 개발에도 사용할 수 있습니다.
새 SQL Server Compact Edition 데이터베이스 생성
SQL Server Management Studio 의 개체 탐색기에서 연결을 클릭한 다음 SQL Server Compact Edition을 선택합니다.
데이터베이스 파일 필드에서 **<새 데이터베이스>**를 선택합니다.
파일 이름 입력란에 c:\sqlmobile.sdf를 입력한 다음 확인을 클릭합니다.
빈 암호에 대한 경고가 표시되면 예를 클릭합니다. 이 자습서의 데이터베이스는 암호로 보호되지 않거나 암호화되어 있지 않습니다.
서버에 연결 대화 상자에서 연결을 클릭합니다.
개체 탐색기에 **SQL Server Compact Edition [내 컴퓨터\...\sqlmobile]**이라는 새 노드가 추가됩니다.
새 구독 생성
개체 탐색기에서 SQL Server Mobile 노드, 복제를 차례로 확장하고 구독을 마우스 오른쪽 단추로 클릭한 다음 새 구독을 선택합니다.
시작 화면에서 다음을 클릭합니다.
게시 선택 화면의 게시자 드롭다운 목록에서 **<SQL Server 게시자 찾기...>**를 선택합니다.
서버에 연결 대화 상자에서 로컬 컴퓨터의 이름을 입력하거나 선택한 다음 연결을 클릭합니다.
게시 선택 화면의 게시 목록에서 SQLMobile을 확장하고 SQLMobile 게시를 선택한 후 다음을 클릭합니다.
구독 식별 화면에서 구독 이름에 SQLMobile을 입력하고 다음을 클릭합니다.
웹 서버 인증 화면에서 이전 절차에서 만든 가상 디렉터리 URL을 입력합니다. 이 연습에서는 URL이 https://localhost/SQLMobile인 가상 디렉터리를 만들었습니다.
구독자가 익명으로 연결합니다를 클릭하고 다음을 클릭합니다.
SQL Server 인증 화면에서 다음을 클릭하여 기본 설정을 그대로 적용합니다.
마법사 마지막 화면에는 응용 프로그램에서 구독을 만들 때 사용할 수 있는 샘플 코드가 표시됩니다. 샘플 코드(응용 프로그램 생성에 사용할 언어에 따라 Visual Basic 또는 C#)를 선택하고 코드를 복사합니다. 이 작업을 수행하려면 코드를 선택하고 Ctrl+C를 누릅니다. 그런 다음 메모장 또는 다른 텍스트 편집기를 시작하고 샘플 코드를 붙여 넣습니다. 이 코드는 다음 절차에 따라 응용 프로그램을 만들 때 사용할 수 있습니다.
샘플 코드를 복사한 후 마침을 클릭합니다.
닫기를 클릭합니다.
응용 프로그램 빌드
새 스마트 장치 프로젝트 생성
Visual Studio 2005 를 엽니다.
파일 메뉴에서 새프로젝트를 선택합니다.
새 프로젝트 대화 상자의 프로젝트 형식 트리에서 개발 언어를 확장한 다음 스마트 장치를 선택합니다.
템플릿 목록에서 만들 프로젝트 유형을 선택합니다. 이 연습에서는 Pocket PC 2003 응용 프로그램을 선택합니다.
프로젝트 이름 및 위치를 지정한 다음 확인을 클릭합니다. 이 연습에서는 프로젝트 이름을 SQLMobile로 지정합니다.
Visual Studio 에서 새 프로젝트를 만들고 스마트 장치에 나타나는 대로 Form1을 표시합니다.
참조 추가
솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택합니다.
[!참고] 솔루션 탐색기에 참조 폴더가 없으면 솔루션 탐색기 상단에서 모든 파일 표시를 클릭합니다.
.NET 어셈블리 목록에서 System.Data.SqlServerCe를 선택한 다음 확인을 클릭합니다. System.Data.SqlServerCe가 나열되지 않으면 다음 단계를 수행합니다.
- 찾아보기 탭을 클릭합니다.
- 다음 디렉터리를 찾습니다.
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE - System.Data.SqlServerCe.dll을 선택한 다음 확인을 클릭합니다.
이제 솔루션 탐색기의 참조 목록에 System.Data.SqlServerCe가 포함되어 사용자 프로젝트에서 이 어셈블리를 사용할 수 있습니다.
솔루션 탐색기에서 Form1.cs 또는 Form1.vb를 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택합니다.
System.Data.SqlServerCe 네임스페이스를 사용하려면 폼의 코드 상단에 지시문을 추가합니다.
[C#]
using System.Data.SqlServerCe;[VB]
Imports System.Data.SqlServerCe
데이터 연결 추가
주 창에서 Form1의 디자인 보기(기본값)로 다시 전환합니다.
데이터 메뉴에서 새 데이터 원본 추가를 클릭합니다.
참고 새 데이터 원본 추가가 표시되지 않으면 Form1의 디자인 보기를 선택한 다음 데이터 메뉴를 다시 확인합니다.
데이터 원본 유형 선택 창에서 데이터베이스를 선택하고 다음을 클릭합니다.
데이터 연결 선택 대화 상자에서 새 연결을 클릭합니다.
연결 추가 대화 상자가 표시되면 변경을 클릭합니다.
데이터 소스 선택 대화 상자의 데이터 소스에서 Microsoft SQL Server Compact Edition을 선택합니다. 기존 연결이 있을 경우 이 대화 상자는 데이터 소스 변경으로 표시될 수 있습니다. 데이터 공급자 목록에서 .NET Framework Data Provider for SQL Server Compact Edition을 선택합니다. 계속 또는 확인을 클릭합니다.
연결 추가 대화 상자의 데이터 소스에서 내 컴퓨터를 선택합니다.
연결 속성 섹션의 데이터베이스에서 찾아보기를 클릭한 다음 이전 절차에서 만든 데이터베이스를 찾습니다. 단계를 제대로 수행한 경우에는 데이터베이스가 c:\sqlmobile.sdf에 있습니다.
연결 테스트를 클릭한 다음 확인을 클릭하여 새 데이터 연결을 만듭니다.
데이터 연결 선택 대화 상자에서 다음을 클릭합니다.
현재 프로젝트에 데이터 파일을 복사할지 여부를 묻는 대화 상자가 표시되면 예를 클릭합니다.
연결 문자열 저장 창에서 다음을 클릭합니다.
데이터베이스 개체 선택 창에서 테이블을 선택한 다음 마침을 클릭합니다.
표시할 데이터 선택
데이터 메뉴에서 데이터 원본 표시를 선택합니다.
데이터 원본 창에서 Form1 디자인 창으로 MembershipData 테이블을 끌어 옵니다. DataGrid가 Form1에 생성되며 열 이름은 자동으로 지정됩니다.
DataGrid를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
속성 창에서 Dock 값을 Top으로 변경합니다. 이 작업은 그래픽으로 표시되어 나타나는 상단의 막대를 클릭하거나 값 필드에 Top이라고 입력하여 수행할 수도 있습니다. DataGrid가 Form1에 생성되며 열 이름은 자동으로 지정됩니다.
DataGrid의 오른쪽 위 모서리에 있는 작은 화살표를 클릭합니다. 메뉴가 나타나면 데이터 폼 생성을 선택합니다.
데이터 원본 창에서 Form1 디자인 창으로 FlightData 테이블을 끌어 옵니다. DataGrid가 Form1에 생성되며 열 이름은 자동으로 지정됩니다.
이 DataGrid의 속성 설정을 사용하여 Dock 속성을 Bottom으로 설정할 수 있습니다.
코드 추가
응용 프로그램의 코드 페이지에서 데이터베이스 파일의 경로와 이름을 포함하는 문자열 변수를 추가하고 기존 데이터베이스 파일을 삭제하는 코드를 추가하며 SQL Server 게시에 대한 연결을 설정하고, 데이터를 동기화하고, 게시된 해당 데이터를 포함하는 새 로컬 데이터베이스를 만드는 코드를 추가할 수 있습니다.
코드 추가
솔루션 탐색기에서 Form1을 마우스 오른쪽 단추로 클릭하고 코드 보기를 선택합니다.
코드 페이지에서 Form1에 대한 클래스 정의를 찾습니다. 문자열 변수를 추가하고 이 변수에 .sdf 파일에 대한 경로와 파일 이름을 지정합니다. 이전 단계에서 Visual Studio 로 만든 데이터 원본이 예상하는 데이터베이스 파일 위치는 \Program Files\ApplicationName 폴더입니다. 여기서 ApplicationName은 응용 프로그램의 이름입니다. 예를 들어 새 프로젝트 이름을 SQLMobile로 지정한 경우 문자열 변수는
"\Program Files\SQLMobile\sqlmobile.sdf"로 지정됩니다.클래스 정의의 처음 몇 줄은 다음 코드와 유사해야 합니다.
[C#]
public partial class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.MainMenu mainMenu1; string filename = @"\Program Files\SQLMobile\sqlmobile.sdf"; public Form1() { InitializeComponent(); }[Visual Basic]
Public Class Form1 Dim filename As New String _ ("\Program Files\SQLMobile\sqlmobile.sdf")현재 데이터베이스 파일이 있는 경우 그 파일을 삭제하는 새 메서드를 작성하십시오. 이렇게 하면 응용 프로그램이 실행될 때마다 최신 데이터가 로드됩니다. 이 메서드의 이름은 DeleteDB로 지정해야 합니다. 코드는 다음과 유사해야 합니다.
[C#]
private void DeleteDB() { if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } }[Visual Basic]
Sub DeleteDB() If System.IO.File.Exists(filename) Then System.IO.File.Delete(filename) End If End Sub동기화를 수행하는 Sync라는 새 메서드를 만듭니다. 이 작업을 수행하려면 이전 단계의 새 게시 마법사에서 복사한 코드를 사용합니다. 코드를 붙여 넣은 다음에는 코드에서 다음 두 가지를 변경해야 합니다.
파일 이름 변수에서 지정한 대로 올바른 경로와 파일 이름을 가리키도록 SubscriberConnectionString 값을 변경합니다.
ExistingDatabase에서 CreateDatabase로 AddOption 값을 변경합니다.
작업을 완료하면 Sync 메서드는 다음과 유사해야 합니다.
[C#]private void Sync() { SqlCeReplication repl = new SqlCeReplication(); repl.InternetUrl = @"http://<computername>/sqlmobile/sqlcesa30.dll"; repl.Publisher = @"<computername>"; repl.PublisherDatabase = @"SQLMobile"; repl.PublisherSecurityMode = SecurityType.NTAuthentication; repl.Publication = @"SQLMobile"; repl.Subscriber = @"SQLMobile"; repl.SubscriberConnectionString = @"Data Source='" + filename + "';Password='';Max Database Size='128';Default Lock Escalation ='100';"; try { repl.AddSubscription(AddOption. CreateDatabase); repl.Synchronize(); } catch (SqlCeException e) { MessageBox.Show(e.ToString()); } }[Visual Basic]
Sub Sync() Dim repl As New SqlCeReplication() repl.InternetUrl = "http://<computername>/SQLMobile/sqlcesa30.dll" repl.Publisher = "<computername>" repl.PublisherDatabase = "SQLMobile" repl.PublisherSecurityMode = SecurityType.NTAuthentication repl.Publication = "SQLMobile" repl.Subscriber = "SQLMobile" repl.SubscriberConnectionString = _ "Data Source='" + filename + "';Password='';" _ & "Max Database Size='128';Default Lock Escalation ='100';" try repl.AddSubscription(AddOption. CreateDatabase) repl.Synchronize() catch err as SqlCeException MessageBox.Show(err.ToString) end tryEnd Sub
마지막으로 최근에 만든 두 메서드를 호출하는 Form1_Load 이벤트 처리기 시작 부분에 코드를 추가합니다. Form1_Load 이벤트 처리기는 다음과 유사해야 합니다.
[C#]
private void Form1_Load(object sender, EventArgs e) { DeleteDB(); Sync(); // TODO: Delete this line of code. this.flightDataTableAdapter.Fill(this.sqlmobileDataSet.FlightData); // TODO: Delete this line of code. this.membershipDataTableAdapter.Fill(this.sqlmobileDataSet.MembershipData); }[Visual Basic]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DeleteDB() Sync() 'TODO: Delete this line of code. Me.FlightDataTableAdapter.Fill(Me.SqlmobileDataSet.FlightData) 'TODO: Delete this line of code ... Me.MembershipDataTableAdapter.Fill(Me.SqlmobileDataSet.MembershipData) End Sub
응용 프로그램 배포 및 테스트
응용 프로그램 배포
디버그 메뉴에서 디버깅 시작을 선택합니다.
배포 대화 상자가 표시되면 Pocket PC 2003 SE 에뮬레이터를 선택한 다음 배포를 클릭합니다.
새 창에서 에뮬레이터가 열립니다. 에뮬레이터에 응용 프로그램을 처음으로 배포하면 .NET Compact Framework와 SQL Server Compact Edition 가 설치됩니다. 이 작업은 몇 분 정도 걸릴 수 있습니다. 이러한 프로그램이 설치되면 응용 프로그램이 설치되고 실행됩니다.
응용 프로그램은 두 개의 DataGrid를 로드하고 표시합니다. MembershipData DataGrid에서 값을 클릭하면 FlightData DataGrid의 데이터가 자동으로 업데이트됩니다.
응용 프로그램을 닫고 Visual Studio 의 디버그 메뉴에서 디버깅 중지를 클릭합니다.
참고 항목
개념
데이터베이스 보안 설정(SQL Server Compact Edition)
중요: