Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Листинг 14.6. Пример кода управления данными для DatabaseAccess.cs
Листинг 14.6. Пример кода управления данными для DatabaseAccess.cs
Option Strict On
'----------------------------------------------------------
'Код доступа к базе данных: Этот класс управляет доступом в
'базу данных наших приложений
'----------------------------------------------------------
Imports System
Friend Class DatabaseAccess
Const DATABASE_NAME As String = "LearnGerman.sdf"
Const CONNECT_STRING As String = _
"Data Source = " + DATABASE_NAME + "; Password = ''"
Const TRANSLATIONTABLE_NAME As String = "TranslationDictionary"
Const TRANSLATIONTABLE_ENGLISH_COLUMN As String = "EnglishWord"
Const TRANSLATIONTABLE_GERMAN_COLUMN As String = "GermanWord"
Const TRANSLATIONTABLE_GERMANGENDER_COLUMN As String = "GermanGender"
Const TRANSLATIONTABLE_WORDFUNCTION_COLUMN As String = "WordFunction"
Friend Const DS_WORDS_COLUMNINDEX_ENGLISHWORD As Integer = 0
Friend Const DS_WORDS_COLUMNINDEX_GERMANWORD As Integer = 1
Friend Const DS_WORDS_COLUMNINDEX_GERMANGENDER As Integer = 2
Friend Const DS_WORDS_COLUMNINDEX_WORDFUNCTION As Integer = 3
Public Shared Function GetListOfWords() As _
System.Data.IDataReader
Dim conn As System.Data.SqlServerCe.SqlCeConnection = Nothing
conn = New System.Data.Sq]ServerCe.SqlCeConnection( _
CONNECT_STRING)
conn.Open()
Dim cmd As System.Data.SqlServerCe.SqlCeCommand = _
conn.CreateCommand()
cmd.CommandText = "select " + _
TRANSLATIONTABLE_ENGLISH_COLUMN + ", " _
+ TRANSLATIONTABLE_GERMAN_COLUMN + ", " _
+ TRANSLATIONTABLE_GERMANGENDER_COLUMN + ", " _
+ TRANSLATIONTABLE_WORDFUNCTION_COLUMN + " " _
+ "from " + TRANSLATIONTABLE_NAME
'Выполнить команду базы данных
Dim myReader As System.Data.SqlServerCe.SqlCeDataReader = _
cmd.ExecuteReader(System.Data.CommandBehavior.SingleResult)
Return myReader
End Function
'------------------------------------------
'Создает базу данных в случае необходимости
'------------------------------------------
Public Shared Sub CreateDatabaseIfNonExistant()
If (System.IO.File.Exists(DATABASE_NAME) = False) Then
CreateAndFillDatabase()
End If
End Sub
'---------------------------------------
'Создает и наполняет данными базу данных
'---------------------------------------
Public Shared Sub CreateAndFillDatabase()
'Удалить базу данных, если она уже существует
If (System.IO.File.Exists(DATABASE_NAME)) Then
System.IO.File.Delete(DATABASE_NAME)
End If
'Создать новую базу данных
Dim sqlCeEngine As System.Data.SqlServerCe.SqlCeEngine
sqlCeEngine = New System.Data.SqlServerCe.SqlCeEngine( _
CONNECT_STRING)
sqlCeEngine.CreateDatabase()
'-------------------------------------
'Попытаться подключиться к базе данных
'и наполнить ее данными
'-------------------------------------
Dim conn As System.Data.SqlServerCe.SqlCeConnection = Nothing
Try
conn = New System.Data.SqlServerCe.SqlCeConnection( _
CONNECT_STRING)
conn.Open()
Dim cmd As System.Data.SqlServerCe.SqlCeCommand = _
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 eTableCreate As System.Exception
MsgBox("Error occured adding table :" + eTableCreate.ToString())
Finally
'Всегда закрывать базу данных по окончании работы
conn.Close()
End Try
'Информировать пользователя о создании базы данных
MsgBox("Created language database!")
End Sub
Private Shared Sub FillDictionary( _
ByVal cmd As System.Data.SqlServerCe.SqlCeCommand)
'Глаголы
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.KordFunction.Noun)
'Имена существительные среднего рода
InsertEnglishGermanWordPair(cmd, "Car", "Auto", _
VocabularyWord.WordGender.Neuter, _
VocabularyWord.WordFunction.Noun)
InsertEnglishGermanWordPair(cmd, "Book", "Buch", _
VocabularyWord.WordGender.Neuter, _
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.1. Простой пример создания и использования объекта ADO.NET DataSet
- Листинг 14.2. Использование параметра XMLWriteMode при сохранении объекта ADO.NET DataSet
- Листинг 14.3. Сравнение производительности различных вариантов доступа к данным с использованием объектов 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. Пример программы