KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework

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

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Иво Салмре, "Программирование мобильных устройств на платформе .NET Compact Framework" бесплатно, без регистрации.
Перейти на страницу:

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

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

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

 static public void CreateAndFillDatabase() {

  //Удалить базу данных, если она уже существует

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

   System.IO.File.Delete(DATABASE_NAME);

  }


  //Создать новую базу данных

  System.Data.SqlServerCe.SqlCeEngine sqlCeEngine;

  sqlCeEngine = new System.Data.SqlServerCe.SqlCeEngine(CONNECT_STRING);

  sqlCeEngine.CreateDatabase();


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

  //Попытаться подключиться к базе данных

  //и наполнить ее данными

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

  System.Data.SqlServerCe.SqlCeConnection conn = null;

  try {

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

   conn.Open();

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


   //Создает таблицу перевода

   //Поля:

   // 1. Слова на английском языке (English)

   // 2. Слова на немецком языке (German)

   // 3. Грамматический род (Gender)

   // 4. Тип слова

   cmd.CommandText = "CREATE TABLE " + TRANSLATIONTABLE_NAME + " (" +

    TRANSLATIONTABLE_ENGLISH_COLUMN + " ntext" + ", " +

    TRANSLATIONTABLE_GERMAN_COLUMN + " ntext" + ", " +

    TRANSLATIONTABLE_GERMANGENDER_COLUMN + " int" + ", " +

    TRANSLATIONTABLE_WORDFUNCTION_COLUMN + " int" + ")";

   cmd.ExecuteNonQuery();


   //Наполнить базу данных словами

   FillDictionary(cmd);

  } catch (System.Exception eTableCreate) {

   System.Windows.Forms.MessageBox.Show("Error occurred adding table :" + eTableCreate.ToString());

  } finally {

   //Всегда закрывать базу данных по окончании работы

   conn.Close();

  }

  //Информировать пользователя о создании базы данных

  System.Windows.Forms.MessageBox.Show("Created langauge database!");

 }


 static private void FillDictionary(System.Data.SqlServerCe.SqlCeCommand cmd) {

  //Глаголы

  InsertEnglishGermanWordPair(cmd, "to pay", "zahlen",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Verb);

  InsertEnglishGermanWordPair(cmd, "to catch", "fangen",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Verb);


  //Добавить другие слова...

  //Местоимения

  InsertEnglishGermanWordPair(cmd, "What", "was",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Pronoun);


  //Добавить другие слова...

  //Наречия

  InsertEnglishGermanWordPair(cmd, "where", "wo",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Adverb);

  InsertEnglishGermanWordPair(cmd, "never", "nie",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Adverb);


  //Добавить другие слова...

  //Предлоги

  InsertEnglishGermanWordPair(cmd, "at the", "am",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Preposition);


  //Имена прилагательные

  InsertEnglishGermanWordPair(cmd, "invited", "eingeladen",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Verb);

  InsertEnglishGermanWordPair(cmd, "yellow", "gelbe",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Adjective);

  InsertEnglishGermanWordPair(cmd, "one", "eins",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Adjective);

  InsertEnglishGermanWordPair(cmd, "two", "zwei",

   VocabularyWord.WordGender.notApplicable, VocabularyWord.WordFunction.Adjective);


  //Имена существительные мужского рода

  InsertEnglishGermanWordPair(cmd, "Man", "Mann",

   VocabularyWord.WordGender.Masculine, VocabularyWord.WordFunction.Noun);

  InsertEnglishGermanWordPair(cmd, "Marketplace", "Marktplatz",

   VocabularyWord.WordGender.Masculine, VocabularyWord.WordFunction.Noun);

  InsertEnglishGermanWordPair(cmd, "Spoon", "Löffel",

   VocabularyWord.WordGender.Masculine, VocabularyWord.WordFunction.Noun);


  //Имена существительные женского рода

  InsertEnglishGermanWordPair(cmd, "Woman", "Frau",

   VocabularyWord.WordGender.Feminine, VocabularyWord.WordFunction.Noun);

  InsertEnglishGermanWordPair(cmd, "Clock", "Uhr",

   VocabularyWord.WordGender.Feminine, VocabularyWord.WordFunction.Noun);

  InsertEnglishGermanWordPair(cmd, "Cat", "Katze",

   VocabularyWord.WordGender.Feminine, VocabularyWord.WordFunction.Noun);


  //Имена существительные среднего рода

  InsertEnglishGermanWordPair(cmd, "Car", "Auto",

   VocabularyWord.WordGender.Neuter, VocabularyWord.WordFunction.Noun);

  InsertEnglishGermanWordPair(cmd, "Book", "Buch",

   VocabularyWord.WordGender.Neuter, VocabularyWord.WordFunction.Noun);

 }


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

 //Помещает слово в базу данных

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

 static private void InsertEnglishGermanWordPair(

  System.Data.SqlServerCe.SqlCeCommand cmd,

  string englishWord, string germanWord,

  VocabularyWord.WordGender germanWordGender,

  VocabularyWord.WordFunction wordFunction) {

  cmd.CommandText = "INSERT INTO " + TRANSLATIONTABLE_NAME + "(" +

   TRANSLATIONTABLE ENGLISH_COLUMN + ", " +

   TRANSLATIONTABLE_GERMAN_COLUMN + ", " +

   TRANSLATIONTABLE_GERMANGENDER_COLUMN + ", " +

   TRANSLATIONTABLE_WORDFUNCTION_COLUMN + ") VALUES ('" +

   englishWord + "', '" + germanWord + "', '" +

   System.Convert.ToString(((int) germanWordGender))+ "', '" +

   System.Convert.ToString(((int) wordFunction)) + "' )";

  cmd.ExecuteNonQuery();

 }

} //Конец класса

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

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

//Код управления данными в памяти

//

//Этот код предназначен для управления представлением кода в памяти

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

using System;

internal class GameData {

 //Массив списков для сохранения загружаемых данных

 private static System.Collections.ArrayList m_vocabularyWords All;

 private static System.Collections.ArrayList m_vocabularyWords_Nouns;

 private static System.Collections.ArrayList m_vocabularyWords_Verbs;

 private static System.Collections.ArrayList m_vocabularyWords_Adjectives;

 private static System.Collections.ArrayList m_vocabularyWords_Adverbs;

 private static System.Collections.ArrayList m_vocabularyWords_Prepositions;


 public static bool isGameDataInitialized {

  //Инициализация данных игры, если слова загружены

  get {

   return (m_vocabularyWords_All != null);

  }

 }


 //Возвращает коллекцию всех имеющихся слов

 public static System.Collections.ArrayList AllWords {

  get {

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

   if (m_vocabularyWords_All == null) {

    InitializeGameVocabulary();

   }

   return m_vocabularyWords_All;

  }

 }


 //Возвращает коллекцию всех имеющихся имен существительных

 public static System.Collections.ArrayList Nouns {

  get {

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

   if (m_vocabularyWords_Nouns == null) {

    InitializeGameVocabulary();

   }

   return m_vocabularyWords_Nouns;

  }

 }


 //==========================================================

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

 //==========================================================

 static public void InitializeGameVocabulary() {

  //Создать новый массив списков для хранения наших слов

  m_vocabularyWords_All = new System.Collections.ArrayList();

  m_vocabularyWords_Nouns = new System.Collections.ArrayList();

  m_vocabularyWords Verbs = new System.Collections.ArrayList();

  m_vocabularyWords_Adjectives = new System.Collections.ArrayList();

  m_vocabularyWords_Adverbs = new System.Collections.ArrayList();

  m_vocabularyWords_Prepositions = new System.Collections.ArrayList();


  System.Data.IDataReader dataReader;

  dataReader = DatabaseAccess.GetListOfWords();

  VocabularyWord newWord;


  //Обойти все записи

  while (dataReader.Read()) {

   //Поместить данные для только что считанного слова в класс

   newWord = new VocabularyWord(

    dataReader.GetString(DatabaseAccess.DS_WORDS_COLUMNINDEX_ENGLISHWORD),

    dataReader.GetString(DatabaseAccess.DS_WORDS COLUMNINDEX_GERMANWORD),

    (VocabularyWord.WordGender)dataReader.GetInt32(DatabaseAccess.DS_WORDS_COLUMNINDEX_GERMANGENDER),

    (VocabularyWord.WordFunction)dataReader.GetInt32(DatabaseAccess.DS_WORDS_COLUMNINDEX_WORDFUNCTION));


   //Добавить новое слово в массив списков

   m_vocabularyWords_All.Add(newWord);

   //Слова могут принадлежать нескольким группам, поэтому необходимо

   //выполнить проверку с использованием операции логического И

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

   if ((newWord.getWordFunction & VocabularyWord.WordFunction.Noun) ! = 0) {

    m_vocabularyWords_Nouns.Add(newWord);

   }

   if ((newWord.getWordFunction & VocabularyWord.WordFunction.Verb) != 0) {

    m_vocabularyWords_Verbs.Add(newWord);

   }

   if ((newWord.getWordFunction & VocabularyWord.WordFunction.Adjective) != 0) {

    m_vocabularyWords Adjectives.Add(newWord);

   }

   if ((newWord.getWordFunction & VocabularyWord.WordFunction.Adverb) != 0) {

    m_vocabularyWords Adverbs.Add(newWord);

   }

   if ((newWord.getWordFunction & VocabularyWord.WordFunction.Preposition) != 0) {

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*