//Константы, которые будут использоваться
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 автоматически отслеживают изменения, вносимые в содержащиеся в них данные, включая создание, удаление и изменение строк данных в таблицах данных. Затем эти изменения могут быть приняты или отвергнуты, а принятые изменения переданы в базу данных в соответствии с необходимостью. Если источник данных рассредоточен по нескольким базам данных, то возможно даже обновление данных с использованием распределенных транзакций.
Важно понимать, что объектам ADO.NET DataSet ничего не известно о базах данных, в которых данные хранятся постоянно; для восполнения этого пробела используются классы DataAdapter. Класс ADO.NET DataAdapter предназначен для перемещения данных между объектами ADO.NET DataSet и долговременными хранилищами. Все классы ADO.NET DataAdapter состоят из пользовательского кода; любая логика, необходимая для подключения к источнику данных, с которым ведется работа, получения этих данных и их обновления, пишется разработчиком. По сути дела, объекты ADO.NET DataSet представляют собой небольшие базы данных в памяти, и классы DataAdapter пишутся для того, чтобы обеспечить синхронизацию данных DataSet с базой данных; находится ли эта база данных на устройстве или на сервере, известно лишь коду адаптера данных (data adapter).
Читать дальше