Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Листинг 14.7. Пример кода управления данными для GameData.cs
Листинг 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) {
m_vocabularyWords_Prepositions.Add(newWord);
}
}
//Закрыть объект
DataReader dataReader.Close();
}
} //Конец класса
- Высокоуровневый подход, основанный на использовании объектов ADO.NET DataSet
- Низкоуровневый подход, основанный на использовании объектов подключения к данным ADO.NET
- В каких случаях следует использовать объекты ADO.NET DataSet
- Использование классов DataAdapter для организации взаимодействия с базами данных
- Использование файлов и потоков XML для сохранения и передачи данных
- Листинг 14.2. Использование параметра XMLWriteMode при сохранении объекта ADO.NET DataSet
- Сериализация объектов ADO.NET DataSet с помощью пользовательского кода
- Работа с нетипизированными объектами DataSet
- Перенос типизированных объектов ADO.NET DataSet на мобильные устройства
- Меры по обеспечению максимальной производительности при работе с объектами ADO.NET DataSet
- Листинг 14.3. Сравнение производительности различных вариантов доступа к данным с использованием объектов DataSet
- В каких случаях не следует использовать объекты ADO.NET DataSet
- Листинг 14.4. Результаты тестирования производительности при использовании пользовательского формата данных вместо объектов DataSet
- Пример использования базы данных на устройстве и управления пользовательскими данными
- Листинг 14.5. Пример пользовательского управления данными — код, помещаемый в форму Form1.cs
- Листинг 14.6. Пример кода управления данными для DatabaseAccess.cs
- Листинг 14.7. Пример кода управления данными для GameData.cs
- Листинг 14.8. Пример кода управления данными для VocabularyWord.cs
- Примеры к главе 14 (данные)
- Пример установочного скрипта
- Пример из практики
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Основные "рычаги" управления производительностью
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- Глава 5 Агрессивные формы кода и борьба с ними
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы