Книга: Программирование мобильных устройств на платформе .NET Compact Framework

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

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

//------------------------------------------------------------
//Код доступа к базе данных
//
//Этот класс управляет доступом к базе данных наших приложений
//------------------------------------------------------------
using System;
internal class DatabaseAccess {
 const string DATABASE_NAME = "LearnGerman.sdf";
 const string CONNECT_STRING = "Data Source = " + DATABASE_NAME + "; Password = ''";
 const string TRANSLATIONTABLE_NAME = "TranslationDictionary";
 const string TRANSLATIONTABLE_ENGLISH_COLUMN = "EnglishWord";
 const string TRANSLATIONTABLE_GERMAN_COLUMN = "GermanWord";
 const string TRANSLATIONTABLE_GERMANGENDER_COLUMN = "GermanGender";
 const string TRANSLATIONTABLE_ WORDFUNCTION_COLUMN = "WordFunction";
 internal const int DS_WORDS_COLUMNINDEX_ENGLISHWORD = 0;
 internal const int DS_WORDS_COLUMNINDEX_GERMANWORD = 1;
 internal const int DS_WORDS_COLUMNINDEX_GERMANGENDER = 2;
 internal const int DS_WORDS_COLUMNINDEX_WORDFUNCTION = 3;
 static public System.Data.IDataReader GetListOfWords() {
  System.Data.SqlServerCe.SqlCeConnection conn = null;
  conn = new System.Data.SqlServerCe.SqlCeConnection(CONNECT_STRING);
  conn.Open();
  System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand();
  cmd.ConmandText = "select " +
   TRANSLATIONTABLE_ENGLISH_COLUMN + ", " +
   TRANSLATIONTABLE_GERMAN_COLUMN + ", " +
   TRANSLATIONTABLE_GERMANGENDER_COLUMN + ", " +
   TRANSLATIONTABLE_WORDFUNCTION_COLUMN + " " + "from " +
   TRANSLATIONTABLE_NAME;
  //Выполнить команду базы данных
  System.Data.SqlServerCe.SqlCeDataReader myReader =
   cmd.ExecuteReader(System.Data.CommandBehavior.SingleResult);
  return myReader;
 }
 //------------------------------------------
 //Создает базу данных в случае необходимости
 //------------------------------------------
 static public void CreateDatabaseIfNonExistant() {
  if (System.IO.File.Exists(DATABASE_NAME) == false) {
   CreateAndFillDatabase();
  }
 }
 //---------------------------------------
 //Создает и наполняет данными базу данных
 //---------------------------------------
 static public void CreateAndFillDatabase() {
  //Удалить базу данных, если она уже существует
  if (System.IO.File.Exists(DATABASE_NAME)) {
   System.IO.File.Delete(DATABASE_NAME);
  }
  //Создать новую базу данных
  System.Data.SqlServerCe.SqlCeEngine sqlCeEngine;
  sqlCeEngine = new System.Data.SqlServerCe.SqlCeEngine(CONNECT_STRING);
  sqlCeEngine.CreateDatabase();
  //-------------------------------------
  //Попытаться подключиться к базе данных
  //и наполнить ее данными
  //-------------------------------------
  System.Data.SqlServerCe.SqlCeConnection conn = null;
  try {
   conn = new System.Data.SqlServerCe.SqlCeConnection(CONNECT_STRING);
   conn.Open();
   System.Data.SqlServerCe.SqlCeCommand cmd = 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 (System.Exception eTableCreate) {
   System.Windows.Forms.MessageBox.Show("Error occurred adding table :" + eTableCreate.ToString());
  } finally {
   //Всегда закрывать базу данных по окончании работы
   conn.Close();
  }
  //Информировать пользователя о создании базы данных
  System.Windows.Forms.MessageBox.Show("Created langauge database!");
 }
 static private void FillDictionary(System.Data.SqlServerCe.SqlCeCommand cmd) {
  //Глаголы
  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.WordFunction.Noun);
  //Имена существительные среднего рода
  InsertEnglishGermanWordPair(cmd, "Car", "Auto",
   VocabularyWord.WordGender.Neuter, VocabularyWord.WordFunction.Noun);
  InsertEnglishGermanWordPair(cmd, "Book", "Buch",
   VocabularyWord.WordGender.Neuter, VocabularyWord.WordFunction.Noun);
 }
 //----------------------------
 //Помещает слово в базу данных
 //----------------------------
 static private void InsertEnglishGermanWordPair(
  System.Data.SqlServerCe.SqlCeCommand cmd,
  string englishWord, string germanWord,
  VocabularyWord.WordGender germanWordGender,
  VocabularyWord.WordFunction 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(((int) germanWordGender))+ "', '" +
   System.Convert.ToString(((int) wordFunction)) + "' )";
  cmd.ExecuteNonQuery();
 }
} //Конец класса

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

Оглавление статьи/книги

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