Выбрать главу

  VocabularyWord.WordFunction.Noun)

End Sub

'----------------------------

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

'----------------------------

Private Shared Sub InsertEnglishGermanWordPair( _

 ByVal cmd As System.Data.SqlServerCe.SqlCeCommand, _

 ByVal englishWord As String, ByVal germanWord As String, _

 ByVal germanWordGender As VocabularyWord.WordGender, _

 ByVal wordFunction As VocabularyWord.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(CType(germanWordGender, Integer)) + "', '"

  + System.Convert.ToString(CType(wordFunction, Integer)) + "')"

 cmd.ExecuteNonQuery()

End Sub

End Class

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

Option Strict On

'-----------------------------------------------------------------

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

'

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

'-----------------------------------------------------------------

Imports System

Friend Class GameData

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

Private Shared m_vocabularyWords_All As _

 System.Collections.ArrayList

Private Shared m_vocabularyWords_Nouns As _

 System.Collections.ArrayList

Private Shared m_vocabularyWords Verbs As _

 System.Collections.ArrayList

Private Shared m_vocabularyWords_Adjectives As _

 System.Collections.ArrayList

Private Shared m_vocabularyWords Adverbs As _

 System.Collections.ArrayList

Private Shared m_vocabularyWords_Prepositions As _

 System.Collections.ArrayList

Public Shared ReadOnly Property _

 isGameDataInitialized() As Boolean

 Get

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

  Return Not (m_vocabularyWords_All Is Nothing)

 End Get

End Property

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

Public Shared ReadOnly Property _

 AllWords() As System.Collections.ArrayList

 Get

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

  If (m_vocabularyWords_All Is Nothing) Then

   InitializeGameVocabulary()

  End If

  Return m_vocabularyWords_All

 End Get

End property

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

Public Shared ReadOnly Property _

 Nouns() As System.Collections.ArrayList

 Get

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

  If (m_vocabularyWords_Nouns Is Nothing) Then

   InitializeGameVocabulary()

  End If

  Return m_vocabularyWords_Nouns

 End Get

End Property

'==========================================================

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

'==========================================================

Public Shared Sub 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

 Dim dataReader As System.Data.IDataReader

 dataReader = DatabaseAccess.GetListOfWords()

 Dim newWord As VocabularyWord

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

 While (dataReader.Read())

  Dim thisword_gender As VocabularyWord.WordGender

  Dim thisword_function As VocabularyWord.WordFunction

  thisword_gender = CType(dataReader.GetInt32( _

   DatabaseAccess.DS_WORDS_COLUMNINDEX_GERMANGENDER), _

   VocabularyWord.WordGender)

  thisword_function = CType(dataReader.GetInt32( _

   DatabaseAccess.DS_WORDS_COLUMNINDEX_WORDFUNCTION), _

   VocabularyWord.WordFunction)

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

  newWord = New VocabularyWord(dataReader.GetString( _

   DatabaseAccess.DS_WORDS_COLUMNINDEX_ENGLISHWORD), dataReader.GetString( _

   DatabaseAccess.DS_WORDS_COLUMNINDEX_GERMANWORD), _

   thisword_gender, thisword_function)

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

  m_vocabularyWords_All.Add(newWord)

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

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

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

  If ((newWord.getWordFunction And _

   VocabularyWord.WordFunction.Noun) <> 0) Then

   m_vocabularyWords_Nouns.Add(newWord)

  End If

  If ((newWord.getWordFunction And _

   VocabularyWord.WordFunction.Verb) <> 0)

   Then m_vocabularyWords_Verbs.Add(newWord)

  End If

  If ((newWord.getWordFunction And _

   VocabularyWord.WordFunction.Adjective) <> 0) Then

   m_vocabularyWords_Adjectives.Add(newWord)

  End If

  If ((newWord.getWordFunction And _

   VocabularyWord.WordFunction.Adverb) <> 0) Then

   m_vocabularyWords_Adverbs.Add(newWord)

  End If

  If ((newWord.getWordFunction And _

   VocabularyWord.WordFunction.Preposition) <> 0) Then

   m_vocabularyWords_Prepositions.Add(newWord)

  End If

 End While

 'Закрыть объект DataReader

 dataReader.Close()

End Sub

End Class

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

Option Strict On

Imports System

'------------------------------

'Хранит данные слова из словаря

'------------------------------

Friend Class VocabularyWord

<System.FlagsAttribute()> _