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 автоматически отслеживают изменения, вносимые в содержащиеся в них данные, включая создание, удаление и изменение строк данных в таблицах данных. Затем эти изменения могут быть приняты или отвергнуты, а принятые изменения переданы в базу данных в соответствии с необходимостью. Если источник данных рассредоточен по нескольким базам данных, то возможно даже обновление данных с использованием распределенных транзакций.