Создание мобильного приложения с SQL Server Compact Edition

В этом пошаговом руководстве описывается, как создать приложение в Microsoft Visual Studio 2005, использующее Microsoft SQL Server 2005 Compact Edition. База данных SQL Server Compact Edition будет задействована как подписчик для публикации SQL Server 2005. Для нее будет использоваться репликация слиянием для загрузки данных из базы данных SQL Server 2005 в базу данных SQL Server Compact Edition.

В этом пошаговом руководстве представлены следующие шаги:

  1. Настройка публикации SQL Server 2005.
  2. Настройка служб IIS для выполнения репликации.
  3. Создание подписки SQL Server Compact Edition.
  4. Создание приложения.
  5. Развертывание приложения и тестирование подписки.

Предварительные требования

Для выполнения всех шагов, описанных в руководстве, необходимо следующее.

  • Компьютер с установленными службами IIS и системой Windows XP.
  • Пакет обновления 2 (SP2) SQL Server 2005 или более поздней версии, установленный на том же компьютере, что и Visual Studio.

Операции в SQL Server 2005

Перед созданием приложения следует настроить публикацию в SQL Server 2005. Ниже приводится пошаговая инструкция по созданию образца базы данных и публикации данных из этой БД. База данных будет создана с помощью предварительно подготовленного файла сценария, а публикация — с помощью мастера создания публикаций.

Создание и наполнение базы данных

  1. Откройте SQL Server Management Studio.

  2. При появлении напоминания подключиться к серверу введите (локальный) в поле Имя сервера и нажмите кнопку Подключить.

  3. Откройте окно нового запроса. Создайте базу данных 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
    
  4. Для запуска сценария и создания базы данных нажмите кнопку Выполнить (!). В результате выполнения сценария будет создана база данных с именем SQLMobile.

    Примечание.
    Для выполнения запроса можно также нажать клавишу F5 либо выбрать команду Выполнить в меню Запрос.
  5. Чтобы проверить, что база данных создана, в обозревателе объектов разверните узлы (локальный), Базы данных и SQLMobile. Если база данных SQLMobile отсутствует в списке, обновите список баз данных. Для этого щелкните узел Базы данных правой кнопкой мыши и выберите команду Обновить.

Подготовка сервера к публикации данных

Перед созданием публикации необходимо подготовить сервер к данной операции. Для этого следует создать учетную запись пользователя для агента моментальных снимков и общую папку, в которой будут храниться моментальные снимки. Папка моментальных снимков используется при создании всех публикаций на сервере. Если на сервере ранее уже создавались публикации, то эти шаги можно пропустить.

Создание учетной записи пользователя для агента моментальных снимков

  1. На панели управления выберите Администрирование и откройте Управление комьютером.

  2. В консоли Управление компьютером разверните узлы Служебные программы и Локальные пользователи и группы, щелкните правой кнопкой мыши папку Пользователи и выберите Новый пользователь.

  3. В диалоговом окне Новый пользователь введите приведенные в таблице данные и нажмите кнопку Создать.

Поле Значение

Имя пользователя

агент_моментальных_снимков

Пароль

p@ssw0rd

Подтверждение

p@ssw0rd

Потребовать смену пароля при следующем входе в систему

Флажок снят

Срок действия пароля не ограничен

Флажок установлен

Важно!
Эти параметры настройки следует использовать только для тестирования. В рабочем режиме параметры учетной записи пользователя должны отвечать требованиям сетевой безопасности. Во многих случаях для запуска агента моментальных снимков используется учетная запись не локального, а доменного пользователя.

Создание папки моментальных снимков

  1. В проводнике Windows создайте папку с именем snapshot. Для выполнения данной процедуры в корневом каталоге диска C создайте папку c:\snapshot. Щелкните правой кнопкой мыши папку snapshot и выберите пункт Общий доступ и безопасность.

  2. На вкладке Доступ установите флажок Открыть общий доступ к этой папке и нажмите кнопку Разрешения.

  3. В диалоговом окне Разрешения для snapshot нажмите кнопку Добавить.

  4. В строке Введите имена, разделенные точкой с запятой, или выберите их из вышеприведенного списка введите имя_компьютера\агент_моментальных_снимков, где имя_компьютера — имя локального компьютера, нажмите Проверить имена, а затем щелкните кнопку ОК.

  5. В диалоговом окне Разрешения для snapshot в списке выберите агент_моментальных_снимков, предоставьте разрешения для общего ресурса на Изменение и Чтение и нажмите кнопку ОК.

  6. Перейдите на вкладку Безопасность.

  7. Нажмите кнопку Добавить.

  8. В строке Введите имена, разделенные точкой с запятой, или выберите их из вышеприведенного списка введите имя_компьютера\агент_моментальных_снимков, где имя_компьютера — имя локального компьютера, нажмите Проверить имена, а затем щелкните кнопку ОК.

  9. В списке выберите агент_моментальных_снимков и добавьте разрешение на Запись в список предоставленных разрешений. После этого учетная запись агента моментальных снимков будет обладать следующими разрешениями:

    • Чтение и выполнение
    • Список содержимого папки
    • Чтение
    • Запись
  10. Нажмите кнопку ОК, чтобы закрыть окно Свойства: snapshot.

  11. Закройте проводник Windows.

Создание публикации

  1. В обозревателе объектов SQL Server Management Studio при необходимости разверните узел (локальный), затем — узел Репликация.

  2. Щелкните правой кнопкой мыши папку Локальныепубликации и выберите команду Создать публикацию.

  3. На вводной странице мастера создания публикаций нажмите кнопку Далее.

  4. Если на этом компьютере прежде не создавались публикации, на экране будет отображено предложение настроить распространитель. Выберите первый вариант, чтобы в качестве распространителя использовать локальный компьютер, и нажмите кнопку Далее.

  5. Если на этом компьютере прежде не создавались публикации, на экране будет отображено предложение указать папку моментальных снимков. Введите путь общего доступа к папке моментальных снимков, созданной в предыдущей операции. Путь общего доступа отличается от локального пути и имеет вид \\имя_сервера\имя_общего_ресурса. Для этой процедуры рекомендуется указать путь \\компьютер\snapshot, где компьютер — имя компьютера, и нажать кнопку Далее.

  6. В списке баз данных выберите SQLMobile и нажмите кнопку Далее.

  7. В списке типов публикации выберите Публикация слиянием и нажмите кнопку Далее.

  8. На странице Типыподписчиков выберите Да, чтобы включить поддержку подписчиков SQL Server Compact Edition, и нажмите кнопку Далее.

  9. В списке объектов для публикации установите флажок Таблицы. Если развернуть узел Таблицы, станет видно, что выбраны обе таблицы в базе данных SQLMobile. Нажмите кнопку Далее.

  10. Отобразится уведомление, что в таблицы будут добавлены уникальные идентификаторы. Для всех статей слияния обязателен столбец uniqueindentifier. Нажмите кнопку Далее.

  11. На странице Фильтрация строк таблицы к публикуемым данным можно добавить фильтры. В этой процедуре фильтрация данных выполняться не будет. Нажмите кнопку Далее.

  12. На странице Агент моментальных снимков выполняется настройка времени создания моментального снимка и периодичности запуска агента моментальных снимков. Нажмите кнопку Далее, чтобы принять предусмотренные по умолчанию параметры.

  13. В диалоговом окне Безопасность агентов нажмите кнопку Настройки безопасности.

    1. В диалоговом окне Безопасность агента моментальных снимков введите данные учетной записи агента, созданной в предыдущей операции. Учетная запись процесса имеет вид computer_name\агент_моментальных_снимков (где имя_компьютера — имя локального компьютера), а пароль — p@ssw0rd.
    2. Нажмите кнопку ОК, чтобы сохранить изменения.
    3. Нажмите кнопку Далее на странице Безопасность агентов.
  14. На странице Действия мастера можно определить время создания публикации и указать, следует ли создавать файл сценария. Снимите флажок Создать моментальный снимок немедленно и нажмите кнопку Далее.

  15. На странице Завершение работы мастера в качестве имени публикации введите SQLMobile и нажмите кнопку Готово.

  16. Будет создана публикация. По завершении работы мастера нажмите кнопку Закрыть.

Установка разрешений

Необходимо предоставить разрешения для учетной записи агента моментальных снимков и учетной записи анонимного пользователя служб IIS. Также следует добавить учетную запись анонимного пользователя служб IIS в список доступа к публикациям (PAL).

Установка разрешений для базы данных

  1. В , в обозревателе объектов разверните узел Безопасность, щелкните правой кнопкой мыши папку Имена входа и выберите Новое имя входа.

  2. В диалоговом окне Новое имя входа выберите Проверка подлинности Windows, затем щелкните Поиск и в поле Введите имена, разделенные точкой с запятой, или выберите их из вышеприведенного списка введите имя_компьютера\агент_моментальных_снимков, где имя_компьютера — имя локального компьютера. Нажмите Проверить имена, а затем щелкните кнопку ОК.

  3. На панели переходов выберите панель Сопоставление пользователей.

  4. В списке баз данных выберие distribution и роль db_owner, затем выберите SQLMobile и роль db_owner, нажмите кнопку ОК.

  5. Щелкните правой кнопкой мыши папку Имена входа и выберите пункт Создать имя входа.

  6. В диалоговом окне Новое имя входа выберите Проверка подлинности Windows, затем щелкните Поиск и в поле Введите имена, разделенные точкой с запятой, или выберите их из вышеприведенного списка введите имя_компьютера\имя_компьютера_iuser, где имя_компьютера — имя локального компьютера. Нажмите Проверить имена, а затем щелкните кнопку ОК.

  7. На панели переходов выберите панель Сопоставление пользователей.

  8. В списке баз данных выберите distribution и SQLMobile, нажмите кнопку ОК.

Предоставление доступа к публикации

  1. В обозревателе объектов разверните узлы Репликация и Публикации, щелкните правой кнопкой мыши публикацию [SQLMobile]:SQLMobile и выберите пункт Свойства.

  2. На панели переходов выберите Список доступа к публикации.

  3. Нажмите кнопку Добавить. В диалоговом окне Добавление доступа к публикации в списке отобразится учетная запись IUSR. Выберите ее и нажмите кнопку ОК.

  4. Проверьте, внесена ли учетная запись IUSR в список доступа к публикации, и нажмите кнопку ОК.

Создание моментального снимка публикации

Перед инициализацией подписки на публикацию SQLMobile необходимо создать моментальный снимок публикации.

Создание моментального снимка публикации

  1. В SQL Server Management Studio откройте обозреватель объектов и разверните узел компьютера (локальный).

  2. Раскройте папку Локальные публикации, выберите имя публикации, щелкните правой кнопкой мыши SQLMobile, и затем выберите Просмотреть состояние агента моментальных снимков.

  3. В диалоговом окне просмотра состояния агента моментальных снимков нажмите кнопку Запуск.

    Перед продолжением убедитесь, что задание моментального снимка выполнено успешно.

Настройка служб IIS и SQL Server 2005 для веб-синхронизации

После настройки SQL Server и создания публикации необходимо сделать эту публикацию доступной по сети клиентам SQL Server Compact Edition. SQL Server Compact Edition подключается к SQL Server с помощью служб IIS. В частности, следует создать и настроить виртуальный каталог, чтобы сделать агент сервера SQL Server Compact Edition доступным для клиентов.

Установка компонентов сервера SQL Server Compact Edition

  1. В проводнике Windows перейдите к следующему каталогу:

    C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE

  2. Дважды щелкните файл sqlce30setupen.msi, чтобы запустить программу установки.

  3. На вводной странице мастера установки нажмите кнопку Далее.

  4. Прочитайте и примите условия лицензионного соглашения, затем нажмите кнопку Далее.

  5. На странице Проверка конфигурации системы проверьте, по всем ли пунктам проверка выполнена успешно. Если SQL Server 2000 не установлен, то последним пунктом в списке будет предупреждение. Поскольку используется SQL Server 2005, его можно игнорировать. Нажмите кнопку Далее.

  6. На следующей странице нажмите кнопку Далее, затем нажмите кнопку Установить, чтобы запустить программу установки.

  7. Нажмите кнопку Готово.

Настройка публикации для веб-синхронизации

  1. В SQL Server Management Studio откройте обозреватель объектов и разверните узел компьютера (локальный).

  2. Раскройте папку Локальные публикации, выберите имя публикации, щелкните правой кнопкой мыши и выберите пункт Настройка веб-синхронизации.

  3. На вводной странице мастера нажмите кнопку Далее.

  4. На странице Тип подписчика выберите SQL Server Compact Edition и нажмите кнопку Далее.

  5. На странице Веб-сервер в текстовом поле компьютер с IIS при необходимости введите имя компьютера и щелкните Создать новый виртуальный каталог.

  6. В выведенном на экран дереве разверните узлы компьютера и Веб-узлы, затем выберите Веб-узел по умолчанию.

  7. Нажмите кнопку Далее.

  8. В текстовом поле Псевдоним на странице Сведения о виртуальном каталоге введите SQLMobile и нажмите кнопку Далее.

    Если будет выведено диалоговое окно с предупреждением, нажмите кнопку Да.

  9. На экране Безопасные соединения выберите Не обязательное применение безопасного канала (SSL).

  10. Внимание   В рабочем режиме необходимо включить шифрование SSL для обеспечения безопасности обмена данными между подписчиком и сервером, на котором запущены службы IIS, при использовании Интернета. Для этого на экране Проверка подлинности клиента выберите Клиенты будут подключаться в режиме анонимного доступа и нажмите кнопку Далее.

  11. На странице Анонимный доступ примите предусмотренные по умолчанию параметры, нажав кнопку Далее.

  12. На странице Доступ к общей папке снимков введите \\компьютер\snapshot, где компьютер — имя локального компьютера, и нажмите кнопку Далее.

    Если будет выведено предупреждение, что общая папка моментальных снимков пуста, нажмите кнопку Да.

  13. Нажмите кнопку Готово.

  14. Нажмите кнопку Закрыть.

  15. В обозревателе Internet Explorer в поле Адрес введите URL-адрес https://localhost/SQLMobile/sqlcesa30.dll?diag и нажмите Перейти. Таким образом соединение с сервером будет установлено в режиме диагностики. Убедитесь, что отчет диагностики агента сервера SQL Server Compact завершен успешно.

Задачи SQL Server Compact Edition

В целях экономии времени при разработке приложений, совместимых с SQL Server Compact Edition, полезно заранее создать базу данных и подписку SQL Server Compact Edition. SQL Server Management Studio служит для создания на локальном компьютере баз данных SQL Server Compact Edition и управления ими. Полученные базы данных можно использовать при разработке приложений.

Создание базы данных SQL Server Compact Edition

  1. В SQL Server Management Studio откройте обозреватель объектов, нажмите кнопку Подключить и выберите SQL Server Compact Edition.

  2. В поле со списком Файл базы данных выберите пункт <Создать базу данных>.

  3. В текстовом поле имени файла введите c:\sqlmobile.sdf и нажмите кнопку ОК.

    Если будет выведено предупреждение о пустом пароле, нажмите кнопку Да. База данных для этого учебного пособия не зашифрована и не предохраняется паролем.

  4. В диалоговом окне Подключение к серверу нажмите кнопку Соединиться.

    В обозреватель объектов будет добавлен новый узел, именованный SQL Server Compact Edition [My Computer\...\sqlmobile].

Создание новой подписки

  1. В обозревателе объектов разверните узлы SQL Server CompactEdition и Репликация, а затем щелкните правой кнопкой мыши папку Подписки и выберите пункт Создать подписку.

  2. На вводной странице мастера нажмите кнопку Далее.

  3. На странице Выбор публикации в раскрывающемся списке Издатель выберите <Поиск издателя SQL Server>.

  4. В диалоговом окне Подключение к серверу введите или выберите имя локального компьютера и нажмите кнопку Подключить.

  5. На странице Выбор публикации в списке публикаций разверните узел SQLMobile, выберите публикацию SQLMobile и нажмите кнопку Далее.

  6. На странице идентификации подписки введите имя подписки SQLMobile и нажмите кнопку Далее.

  7. На странице Проверка подлинности веб-сервера введите URL-адрес виртуального каталога, созданного в предыдущей операции. В этой процедуре был создан виртуальный каталог с URL-адресом https://localhost/SQLMobile.

  8. Установите флажок Подписчик будет подключен в режиме анонимного доступа и нажмите кнопку Далее.

  9. На странице проверки подлинности SQL Server нажмите кнопку Далее, чтобы принять предусмотренные по умолчанию параметры.

    На последней странице мастера будет отображен образец кода, который можно использовать в разрабатываемом приложении для создания подписки. Выберите образец кода (на Visual Basic или C# — в зависимости от языка, на котором создается приложение) и скопируйте его. Для этого выделите фрагмент кода и нажмите клавиши CTRL+C. Запустите Блокнот или другой редактор текста и вставьте образец кода. Он будет использован в последующих операциях.

  10. Скопировав образец кода, нажмите кнопку Готово.

  11. Нажмите кнопку Закрыть.

Сборка приложения

Создание проекта для смарт-устройств

  1. Откройте Visual Studio 2005.

  2. В меню Файл выберите команду Создатьпроект.

  3. В диалоговом окне Новый проект в дереве Типы проектов разверните узел используемого языка программирования и выберите папку Смарт-устройство.

  4. В списке шаблонов выберите тип проекта, который требуется создать. Для данной процедуры выберите Приложение Pocket PC 2003.

  5. Укажите имя и расположение проекта, затем нажмите кнопку ОК. Для данной процедуры укажите имя проекта SQLMobile.

    В Visual Studio будет создан новый проект и отобразится основная форма Form1 в том виде, в каком она будет представлена на устройстве.

Добавление ссылок

  1. В обозревателе решений щелкните правой кнопкой мыши папку Ссылки и выберите команду Добавить ссылку.

    Примечание.
    Если папка Ссылки не отображается в обозревателе решений, нажмите кнопку Показать все файлы на панели инструментов в верхней части обозревателя решений.
  2. В списке сборок .NET выберите System.Data.SqlServerCe и нажмите кнопку ОК. Если System.Data.SqlServerCe отсутствует в списке, выполните следующие действия.

    1. Перейдите на вкладку Обзор.
    2. Найдите папку:
      C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
    3. Выберите файл System.Data.SqlServerCe.dll и нажмите кнопку ОК.

    В список ссылок обозревателя решений будет включен пункт System.Data.SqlServerCe, а в проекте можно будет использовать эту сборку.

  3. В обозревателе решений щелкните правой кнопкой мыши Form1.cs или Form1.vb и выберите команду Просмотреть код.

  4. В код формы сверху добавьте указание использовать пространство имен System.Data.SqlServerCe:

    [C#]

    using System.Data.SqlServerCe;
    

    [VB]

    Imports System.Data.SqlServerCe
    

Добавление соединения для обмена данными

  1. В главном окне переключитесь в представление Конструирование формы Form1 (представление по умолчанию).

  2. В меню Данные выберите команду Добавить источник данных.

    Примечание   Если команда "Добавить источник данных" не отображается, выберите представление Конструирование формы Form1 и вновь откройте меню Данные.

  3. В окне Выбор типа источника данных выберите тип База данных и нажмите кнопку Далее.

  4. В диалоговом окне Выбор соединения щелкните Создать соединение.

  5. Если будет выведено диалоговое окно Добавление соединения, нажмите кнопку Изменить.

  6. В диалоговом окне Выбор источника данных в списке Источник данных выберите Microsoft SQL Server Compact Edition (если соответствующее соединение уже имеется, возможен вывод диалогового окна Изменение источника данных). В списке поставщиков данных выберите Поставщик данных .NET Framework для SQL Server Compact Edition. Нажмите кнопку Продолжить или кнопку ОК.

  7. В диалоговом окне Добавление соединения в списке Источник данных выберите Мой компьютер.

    В разделе Свойства соединения рядом с полем База данных нажмите кнопку Обзор и укажите путь к базе данных, созданной в предыдущей операции. Если все действия выполнялись по инструкции, то путь к базе данных — c:\sqlmobile.sdf.

  8. Нажмите кнопку Проверить соединение, а затем — кнопку ОК, чтобы создать новое соединение для обмена данными.

  9. В диалоговом окне Выбор подключения базы данных нажмите кнопку Далее .

  10. Если будет выведено диалоговое окно с предложением скопировать файл данных в текущий проект, нажмите кнопку Да.

  11. В окне Сохранить строку соединения нажмите кнопку Далее.

  12. В окне Выбор объектов базы данных выберите Таблицы и нажмите кнопку Готово.

Выбор данных для отображения

  1. В меню Данные выберите команду Показать источники данных.

  2. Перетащите таблицу MembershipData из окна Источники данных в окно Конструирование Form1. В форме Form1 будет создана сетка данных с автоматически заданными именами столбцов.

  3. Щелкните правой кнопкой мыши сетку данных и выберите пункт Свойства.

  4. В окне Свойства измените значение параметра Закрепить на Вверху. Для этого следует щелкнуть верхнюю панель выведенного на экран графического представления или ввести Вверху в поле значения. Сетка данных будет перемещена и подогнана под размер верхней секции формы Form1.

  5. Щелкните маленькую стрелку в правом верхнем углу сетки данных. В открывшемся меню выберите команду Создать формы данных.

  6. Перетащите таблицу FlightData из окна Источники данных в окно Конструирование Form1. В форме Form1 будет создана сетка данных с автоматически заданными именами столбцов.

  7. В окне Свойства этой сетки данных для свойства Закрепить задайте значение Внизу.

Добавление кода

На странице с кодом приложения необходимо добавить строковую переменную, содержащую путь и имя файла базы данных, код для удаления файла базы данных, если этот файл существует, а также код для установки соединения с публикацией SQL Server, синхронизации данных и создания локальной базы с опубликованнымыи данными.

Добавление кода

  1. В обозревателе решений щелкните правой кнопкой мыши форму Form1 и выберите команду Просмотреть код.

  2. На странице с кодом найдите определение класса для Form1. Добавьте строковую переменную, содержащую путь и имя файла SDF. При выполнявшемся ранее создании в Visual Studio источника данных предполагалось, что файл базы данных расположен в папке \Program Files\ApplicationName. Здесь ApplicationName — это имя приложения. Например, если новый проект называется SQLMobile, строковая переменная должна иметь значение "\Program Files\SQLMobile\sqlmobile.sdf".

  3. Код первых нескольких строк определения класса должен быть примерно следующим.

    [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")
    
  4. Создайте метод для удаления файла базы данных, если этот файл существует. В этом случае приложение будет при каждом запуске гарантированно загружать самые свежие данные. Метод должен называться 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
    
  5. Для выполнения синхронизации создайте новый метод с именем Sync. Для этого воспользуйтесь кодом, скопированным из мастера создания публикаций в предыдущей операции. При вставке следует внести в образец кода два изменения.

    1. Измените значение SubscriberConnectionString, чтобы оно отражало правильное имя файла и путь к нему, как указано в переменной имени файла.

    2. Измените значение AddOption с ExistingDatabase на CreateDatabase.
      По завершении метод 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
      
  6. В заключение добавьте код в начало обработчика события 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
    

Развертывание и тестирование приложения

Развертывание приложения

  1. В меню Отладка выберите команду Начать отладку.

  2. Если будет выведено диалоговое окно Развертывание, выберите Эмулятор Pocket PC 2003 SE и нажмите кнопку Развернуть.

  3. Эмулятор запустится в новом окне. При первом развертывании приложения с помощью эмулятора автоматически устанавливаются .NET Compact Framework и SQL Server Compact Edition. Это может занять несколько минут. После этого устанавливается и запускается само приложение.

    Приложение загружает и отображает две сетки данных. Если щелкнуть значение в сетке данных MembershipData, данные в сетке данных FlightData обновляются автоматически.

  4. Закройте приложение, а в Visual Studio в меню Отладка выберите команду Остановить отладку.

См. также

Основные понятия

Защита баз данных (SQL Server Compact Edition)

Справка и поддержка

Получение помощи по SQL Server Compact Edition