Книга: Программирование мобильных устройств на платформе .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

Оглавление книги


Генерация: 1.124. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз