Чтение онлайн

ЖАНРЫ

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

11. Добавьте в проект класс VocabularyWord, удалите из него весь добавленный по умолчанию код в окне редактора класса, и введите вместо него код из листинга 14.8.

12. Запустите приложение, нажав клавишу <F5>. Пользовательский интерфейс приложения должен выглядеть примерно так, как показано на рис. 14.4. Щелкните на кнопке buttonCreateDatabase для создания и наполнения данными базы данных SQL СЕ. Щелкните на кнопке buttonGameData с целью загрузки содержимого базы данных в память для последующего использования; в результате этого в текстовом окне должны отобразиться слова из словаря.

Рис. 14.4. Пример управления данными не с помощью объектов DataSet

Листинг 14.5. Пример пользовательского управления данными — код, помещаемый в форму Form1.cs

//Создает базу данных

private void buttonCreateDatabase_Click(object sender, System.EventArgs e) {

DatabaseAccess.CreateAndFillDatabase;

}

//Загружает данные из базы данных и отображает их

private void buttonLoadGameData_Click(object sender, System.EventArgs e) {

//Очистить текстовое окно

textBox1.Text = "";

//Загрузить данные для слов

GameData.InitializeGameVocabulary;

//Обойти все слова и добавить их в текстовый список

System.Text.StringBuilder thisStringBuilder;

thisStringBuilder = new System.Text.StringBuilder;

foreach (VocabularyWord thisWord in GameData.AllWords) {

thisStringBuilder.Append(thisWord.EnglishWord);

thisStringBuilder.Append(" = ");

thisStringBuilder.Append(thisWord.GermanWordWithArticleIfExists);

thisStringBuilder.Append("\r\n"); //Новая строка

}

//Отобразить список слов в текстовом окне

textBox1.Text = thisStringBuilder.ToString;

}

Листинг 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;

Поделиться с друзьями: