Создание приложения для карманных компьтеров с использованием БД.
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.
|