dotSITE
Вопросы/Ответы Учебник по ASP.NET Форумы
новости материалы решения форумы группы настройки/о проекте
Логин/Регистрация
Логин:
Пароль:
Запомнить вас:
Регистрация
Забыли пароль?

Комментарии

Создание приложения для карманных компьтеров с использованием БД.

Compact Framework and ADO.NET

gif1.GIF
gif2.GIF
gif3.GIF

Создание приложения для карманных компьтеров с использованием БД.

Недавно мне поставили задачу по созданию приложения для карманного компьтера с использованием Microsoft Server CE 2.0. На создание приложения ушло гораздо блоше времени, чем предполагалось изначально (как обычно). На решение этой задачи мне отводилось 3 полных рабочих дня, однако пришлось много работать сверхурочно из-за весьма скудной документации по этой теме. Надеюсь мой опыт окажится полезным другим разаботчикам, работующим с Pocket PC. Ниже я приведу свой путь создания проекта. Для начала, думаю, стоит описать задание: «...Он представляет из себя программу для социологических опросов, тестов, изучения мнения покупателей. Приложение представляет из себя одно окно с несколькими элементами управленияю На форме присутствуют кнопки «следующий вопрос» и «результат сессии», лейбл, который отображает текст текущий вопрос, и список в котором находятся варианты ответов на данный вопрос. Ниже приведен пример экрана приложения (Скриншот эмулятора во время рабочей сессии):

Думаю, мои пояснения будут тут излишни…
Итак, идем дальше. Эту статью я разбил на 2 этапа – установка SQL Server CE и работа с ним.

 

Установка.

Установка оказалась очень непростой. Для меня это оказался самый сложный этап. Раздобыть дистрибутив не представляло большой проблемы – он входит в состав Visual Studio 2003 Everett, и находится в папке «CompactFrameworkSDK», каталога установленной студии. Проблемы начались с установкой SQL Server CE на эмулятор. Для того чтобы это сделать мне пришлось около часов 5 бродить по Интернету, пока я не нашел статью на французком языке (хорошо что я его знаю...). Нигде больше ничего интересного я так и не нашел – даже на сайте Microsoft!
Итак, рассмотрим порядок установки на эмулятор SQL Server CE 2.0 (конечно, можно обойтись и без него (эмулятора, а не SQL!), однако потребуется Pocket PC, который не всегда находится под рукой у разработчика...):
1. Для начала надо включить в проект ссылку на файл «System.Data.SqlServerCe.dll», который лежит в следующем каталоге: «Директория_студии\CompactFrameworkSDK\v1.0.5000\Windows CE», а так же добавить в свой проект следующую строку «using System.Data.SqlServerCe;»
2. Запустить компиляцию проекта. Если произошла установка на эмулятор и SQL Server CE – то вам очень повезло( хотя это маловероятно...) Это можно проверить, поискав в главном меню ярлык «SQL Query». Если он есть то SQL Server CE успешно установился на эмулятори и можно переходить к разделу, посвящённом установке SQL Server CE на устройство (если таковое имеется в наличии). Ну а если не установился – читайте дальше!
3. Создать Каталог «platform» в дирестории «Директория_студии\CompactFrameworkSDK\v1.0.5000\Windows CE», а в нем подкаталог «processor» и Скопировать туда следующие фаилы: «CompactFrameworkSDK\v1.0.5000\Windows CE\wce300\x86\sqlce.ppc3.x86.CAB» и «CompactFrameworkSDK\v1.0.5000\Windows CE\wce300\x86\netcf.core.ppc3.x86.cab». Попробуйте снова запустить приложение. В этот раз точно все должнополучиться!

После установки в главном меню появится ярлычок: «SQL Query» - попробуйте запустить соответствующее приложение. Должно появиться следующее окно:

Здесь вы можите управлять своими базами данных. В SQL Server CE встроена поддержка визуального управления БД. Хотелось бы обратить внимание на тот факт, что все БД должны лежать внутри каталога «My Documents», иначе SQL Query Analyser не сможет с ними работать, равно, как и ваше приложение.
Итак, осталось установить SQL Server CE на «Железо». С этим моментом проблем возникнуть тоже не должно, после добавления в проект всего неодходимого (см пункт 1 о установке на эмулятор), и установки Deployment Device (панель Vicual Studio) в положение «Pocket PC device» нажмите на клавишу запуска приложения. На ваше устройство будет поставлены «Microsoft .NET Compact Framework» и «Microsoft SQLCE 2.0». Если этого не произошло, то будем ставить «вручную». Установите на Pocket PC следующие файлы: «\CompactFrameworkSDK\v1.0.5000\Windows CE\wce300\arm\sqlce.dev.ppc3.arm.CAB», «CompactFrameworkSDK\v1.0.5000\Windows CE\wce300\arm\ sqlce.ppc3.arm.CAB» и «\CompactFrameworkSDK\v1.0.5000\Windows CE\wce300\arm\netcf.core.ppc3.arm.cab». на это с установкой всё!


Составление кода приложения.

Вот и настало время для самого главного в проекте - написание кода. И так по порядку. Ниже я привёл список проблем с которыми я столкнулся:
Соединение с созданной БД.
Классы работы с данными.
Создание строк запроса в программе для получения/сохранения данных.
Оптимизация полученного кода.


Соединение с Базой Данных.

Строка соединения должна выглядить следующим образом:

string Source="\My" _connStr="@”Data" \Documents\имя_БД.sdf”;

Никаких других параметров не надо!
Ниже привожу отрывок кода из своего проекта, соединяюшего программу с БД:

string  conStr= @” Data Source=\My Documents\test.sdf”; // connection string
SqlCeConnection conn=new SqlCeConnection(conStr); // creation connection

Этих двух строк вполне достаточно для соединения с БД.
 
Внимание! У SQL CE есть одна очень важная особенность: не возможность паралельного чтения БД! Т.е если с БД работает SQL Query Analyser, то при запуске вашей программы, работующей с той же БД, она аварийно завершится при попытке соединиться! И выдаст следующую ошибку:

Так что я советую перед началом работы Вашего приложения завершать другие приложения. работающие с Вашей базой данных.


Классы работы с данными.

SQL CE использует классы сходные с классами обычного SQL. Единственное внешнее изменение касается префикса “Sql”: в CE-версии он заменяется на “SqlCe”. Для сравнения я приведу 2 участка кода – один для SQL CE,а другой для обычного SQL:

string conStr=@” Data Source=\My Documents\test.sdf”;
SqlCeConnection conn=new SqlCeConnection(conStr);
SqlCeCommand cmd=new SqlCeCommand(“SELECT * from TEST where ID=’12’ ”,conn);
DataAdapter da = new da();
Da.SelctCommand(cmd);
DataSet ds=new DataSet();
da.Fill(ds);
string res=ToString(ds.Table[o].Rows[0][“TEST”]);
MessageBox.Show(res);

Ниже привожу подобный код для обычного SQL:

string conStr=@”Data Source=c:\winnt\db\test.dbo”;
SqlConnection conn=new SqlConnection(conStr);
SqlCommand cmd=new SqlCommand(“SELECT * from TEST where ID=’12’ ”,conn);
DataAdapter da = new da();
Da.SelctCommand(cmd);
DataSet ds=new DataSet();
da.Fill(ds);
string res=ToString(ds.Table[o].Rows[0][“TEST”];
MessageBox.Show(res);

Думаю, Вы обратите внимание на общие классы DataAdapter и DataSet – они абсолютно идентичны для всех версий SQL. Для сведения, ниже я привожу список этих «хороших» классов

DataAdapter;
DataSet;
DataBindings;
DataColumn;
SqlDbType;
DataColumnCollection;
DataException;

В принципе приведённой документации достаточно для создания кода, однако впереди еще много интересного, а у нас нет лишнего времени, и мы переходим к следующему разделу.


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

Главной особенностью SQL CE стало значительное упрощение самого языка запросов! Для рассмотрения этой темы я советую обратиться к следующему источнику – документации входящей в комплект поставки Compact Framework .NET, Visual Studio 7.1 Everett (2003) или дополнительного пакета к Visual Studio 7.0 (2002) “Smart Device Extensions” – «Sqlce.chm» - очень полезная вещь! В ней подробно изложены концепции построения SQL CE-запросов со множеством примеров! Этот «help» сэкономил мне 5-6 часов работы, а фирме – несколько десятков MB интернет-траффика...

И так я сдал своё приложение, а Вы, Вы получили полную документацию на русском по работе и установке SQL CE Server-edition.


Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2010 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development