Выбрать главу

5. Установите для свойства MultiLine элемента управления TextBox значение true и измените размеры текстового окна таким образом, чтобы оно заняло почти всю форму.

6. Установите для свойства ScrollBar элемента управления TextBox значение vertical.

7. Дважды щелкните на элементе управления Button в окне конструктора форм и введите код функции button1_Click(), приведенный в листинге.

8. Введите весь оставшийся код, приведенный в листинге 14.1.

9. Вернитесь в окно конструктора форм.

10. Установите для свойства MinimizeBox формы значение false. Благодаря этому во время выполнения в верхней правой части формы появится кнопка OK, с помощью которой вы легко сможете закрыть форму и выйти из приложения. Эта возможность оказывается очень полезной при многократном тестировании приложения.

11. Запустите приложение и щелкните на кнопке Button; полученные вами результаты должны воспроизводить те, которые представлены на рис. 14.1.

Рис. 14.1. Простой пример, демонстрирующий создание объекта ADO.NET DataSet

Листинг 14.1. Простой пример создания и использования объекта ADO.NET DataSet

//Объект DataSet, который мы собираемся загрузить

System.Data.DataSet m_myDataSet;

//Константы, которые будут использоваться

const string FILE_EMPTY_DATASET = "EmptyDataSet.xml";

const string FILE_1TABLE_DATASET = "1TableDataSet.xml";

const string dividerLine = "-----------------------------\r\n";

const string nextLine = "\r\n";

//-------------------------------------------------------

//Загрузить содержимое файла и присоединить его к тексту,

//содержащемуся в элементе управления textBox1

//-------------------------------------------------------

private void  addFileContentsToTextBox(string fileName) {

 //Открыть файл и считать его содержимое

 System.IO.StreamReader myStreamReader;

 myStreamReader = System.IO.File.OpenText(fileName);

 string fileText = myStreamReader.ReadToEnd();

 //Закрыть файл

 myStreamReader.Close();

 //Присоединить содержимое к тексту, находящемуся в текстовом окне

 textBox1.Text = textBox1.Text +

  dividerLine + "FILE: '" + fileName + "'" + nextLine +

  dividerLine + fileText + nextLine;

}

//-------------------------------------------------------

//1. Создает набор данных,

// сохраняет набор данных в виде XML,

// отображает результаты в текстовом окне

//2. Добавляет таблицу данных в набор данных,

// добавляет два типизированных столбца в таблицу данных,

// добавляет две строки в таблицу данных,

// сохраняет набор данных в виде XML,

// отображает результаты в текстовом окне

//-------------------------------------------------------

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

 //Очистить текстовое окно от содержимого

 textBox1.Text = "";

 //===========================================

 //1. Создать новый набор данных

 //===========================================

 m_myDataSet = new System.Data.DataSet("HelloWorld-DataSet");

 //Записать содержимое ADO.NET DataSet в виде XML и отобразить

 //файл в текстовом окне

 m_myDataSet.WriteXml(FILE_EMPTY_DATASET);

 addFileContentsToTextBox(FILE_EMPTY_DATASET);

 //==================================================

 //2. Добавить таблицу данных в набор данных ADO.NET,

 // а также 2 строки данных в таблицу данных

 //==================================================

 System.Data.DataTable myTestTable;

 myTestTable = m_myDataSet.Tables.Add("TestTable");

 //----------------------------

 //Добавить 2 столбца в таблицу

 //----------------------------

 //Добавить столбец данных в таблицу DataTable набора DataSet

 myTestTable.Columns.Add("TestColumn0", typeof(System.DateTime));

 //Добавить строковый столбец в таблицу DataTable набора DataSet

 myTestTable.Columns.Add("TestColumn1", typeof(string));

 //--------------------------------

 //Добавить строки данных в таблицу

 //--------------------------------

 //Добавить строку данных в таблицу данных

 object[] rowOfData;

 rowOfData = new object[2];

 //Столбец 0 — это тип даты

 rowOfData[0] = System.DateTime.Today;

 //Столбец 1 — это строковый тип

 rowOfData[1] = "а string of data today";

 myTestTable.Rows.Add(rowOfData);

 //Добавить вторую строку данных в таблицу данных

 object[] rowOfData2;

 rowOfData2 = new object[2];

 //Столбец 0 — это тип даты

 rowOfData2[0] = System.DateTime.Today.AddDays(1);

 //Столбец 1 — это строковый тип

 rowOfData2[1] = "tomorrow's string";

 myTestTable.Rows.Add(rowOfData2);

 //Записать содержимое набора ADO.NET DataSet в виде XML и отобразить

 //файл в текстовом окне

 m_myDataSet.WriteXml(FILE_1TABLE_DATASET);

 addFileContentsToTextBox(FILE_1TABLE_DATASET);

} //Конец функции

Отслеживание изменения данных

Объекты ADO.NET DataSet автоматически отслеживают изменения, вносимые в содержащиеся в них данные, включая создание, удаление и изменение строк данных в таблицах данных. Затем эти изменения могут быть приняты или отвергнуты, а принятые изменения переданы в базу данных в соответствии с необходимостью. Если источник данных рассредоточен по нескольким базам данных, то возможно даже обновление данных с использованием распределенных транзакций.