Литмир - Электронная Библиотека
Содержание  
A
A

9. Добавьте в проект класс DatabaseAccess, удалите из него весь добавленный по умолчанию код в окне редактора класса, и введите вместо него код из листинга 14.6.

10. Добавьте в проект класс GameData, удалите из него весь добавленный по умолчанию код в окне редактора класса, и введите вместо него код из листинга 14.7.

11. Добавьте в проект класс VocabularyWord, удалите из него весь добавленный по умолчанию код в окне редактора класса, и введите вместо него код из листинга 14.8.

12. Запустите приложение, нажав клавишу <F5>. Пользовательский интерфейс приложения должен выглядеть примерно так, как показано на рис. 14.4. Щелкните на кнопке buttonCreateDatabase для создания и наполнения данными базы данных SQL СЕ. Щелкните на кнопке buttonGameData с целью загрузки содержимого базы данных в память для последующего использования; в результате этого в текстовом окне должны отобразиться слова из словаря.

Программирование мобильных устройств на платформе .NET Compact Framework - image110.jpg

Рис. 14.4. Пример управления данными не с помощью объектов DataSet

Листинг 14.5. Пример пользовательского управления данными — код, помещаемый в форму Form1.cs

//Создает базу данных

private void buttonCreateDatabase_Click(object sender, System.EventArgs e) {

 DatabaseAccess.CreateAndFillDatabase();

}

//Загружает данные из базы данных и отображает их

private void buttonLoadGameData_Click(object sender, System.EventArgs e) {

 //Очистить текстовое окно

 textBox1.Text = &quot;&quot;;

 //Загрузить данные для слов

 GameData.InitializeGameVocabulary();

 //Обойти все слова и добавить их в текстовый список

 System.Text.StringBuilder thisStringBuilder;

 thisStringBuilder = new System.Text.StringBuilder();

 foreach (VocabularyWord thisWord in GameData.AllWords) {

  thisStringBuilder.Append(thisWord.EnglishWord);

  thisStringBuilder.Append(&quot; = &quot;);

  thisStringBuilder.Append(thisWord.GermanWordWithArticleIfExists);

  thisStringBuilder.Append(&quot;\r\n&quot;); //Новая строка

 }

 //Отобразить список слов в текстовом окне

 textBox1.Text = thisStringBuilder.ToString();

}

Листинг 14.6. Пример кода управления данными для DatabaseAccess.cs

//------------------------------------------------------------

//Код доступа к базе данных

//

//Этот класс управляет доступом к базе данных наших приложений

//------------------------------------------------------------

using System;

internal class DatabaseAccess {

 const string DATABASE_NAME = &quot;LearnGerman.sdf&quot;;

 const string CONNECT_STRING = &quot;Data Source = &quot; + DATABASE_NAME + &quot;; Password = ''&quot;;

 const string TRANSLATIONTABLE_NAME = &quot;TranslationDictionary&quot;;

 const string TRANSLATIONTABLE_ENGLISH_COLUMN = &quot;EnglishWord&quot;;

 const string TRANSLATIONTABLE_GERMAN_COLUMN = &quot;GermanWord&quot;;

 const string TRANSLATIONTABLE_GERMANGENDER_COLUMN = &quot;GermanGender&quot;;

 const string TRANSLATIONTABLE_ WORDFUNCTION_COLUMN = &quot;WordFunction&quot;;

 internal const int DS_WORDS_COLUMNINDEX_ENGLISHWORD = 0;

 internal const int DS_WORDS_COLUMNINDEX_GERMANWORD = 1;

 internal const int DS_WORDS_COLUMNINDEX_GERMANGENDER = 2;

 internal const int DS_WORDS_COLUMNINDEX_WORDFUNCTION = 3;

 static public System.Data.IDataReader GetListOfWords() {

  System.Data.SqlServerCe.SqlCeConnection conn = null;

  conn = new System.Data.SqlServerCe.SqlCeConnection(CONNECT_STRING);

  conn.Open();

  System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand();

  cmd.ConmandText = &quot;select &quot; +

   TRANSLATIONTABLE_ENGLISH_COLUMN + &quot;, &quot; +

   TRANSLATIONTABLE_GERMAN_COLUMN + &quot;, &quot; +

   TRANSLATIONTABLE_GERMANGENDER_COLUMN + &quot;, &quot; +

   TRANSLATIONTABLE_WORDFUNCTION_COLUMN + &quot; &quot; + &quot;from &quot; +

   TRANSLATIONTABLE_NAME;

  //Выполнить команду базы данных

  System.Data.SqlServerCe.SqlCeDataReader myReader =

   cmd.ExecuteReader(System.Data.CommandBehavior.SingleResult);

  return myReader;

 }

 //------------------------------------------

 //Создает базу данных в случае необходимости

 //------------------------------------------

 static public void CreateDatabaseIfNonExistant() {

  if (System.IO.File.Exists(DATABASE_NAME) == false) {

   CreateAndFillDatabase();

  }

 }

 //---------------------------------------

 //Создает и наполняет данными базу данных

 //---------------------------------------

173
{"b":"947732","o":1}