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.csOption 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.csOption Strict On
Imports System
'------------------------------
'Хранит данные слова из словаря
'------------------------------
Friend Class VocabularyWord
<System.FlagsAttribute()> _