DataSet и XML

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Последнее обновление: 31.10.2015

Встроенные возможности DataSet позволяют производить некоторые операции с xml-документами, в частности, сохранять данные из dataset в xml и, наоборот, загружать из xml в dataset. Подобные возможности позволяют при необходимости использовать dataset в качестве посредника между базой данных и xml-файлами.

Сохранение данных из dataset в xml осуществляется с помощью метода WriteXml. Например, загрузим данные из БД в DataSet и затем сохраним их в xml:

string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True";
string sql = "SELECT * FROM Users";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);

    DataSet ds = new DataSet("Users");
    DataTable dt = new DataTable("User");
    ds.Tables.Add(dt);
    adapter.Fill(ds.Tables["User"]);

    ds.WriteXml("usersdb.xml");
    Console.WriteLine("Данные сохранены в файл");
}

В метод WriteXml() передается имя файла, который после записи будет выглядеть примерно следующим образом:

<?xml version="1.0" standalone="yes"?>
<Users>
  <User>
    <Id>2</Id>
    <Name>Eugene</Name>
    <Age>31</Age>
  </User>
  <User>
    <Id>3</Id>
    <Name>Tom</Name>
    <Age>24</Age>
  </User>
  <User>
    <Id>4</Id>
    <Name>Ben</Name>
    <Age>43</Age>
  </User>
  <User>
    <Id>5</Id>
    <Name>Sam</Name>
    <Age>56</Age>
  </User>
  <User>
    <Id>6</Id>
    <Name>Tom</Name>
    <Age>26</Age>
  </User>
  <User>
    <Id>7</Id>
    <Name>Alex</Name>
    <Age>41</Age>
  </User>
  <User>
    <Id>8</Id>
    <Name>Adam</Name>
    <Age>36</Age>
  </User>
</Users>

Для считывания данных из xml применяется метод ReadXml():

DataSet ds = new DataSet();
ds.ReadXml("usersdb.xml");
// выбираем первую таблицу
DataTable dt = ds.Tables[0];

foreach (DataColumn column in dt.Columns)
    Console.Write("\t{0}", column.ColumnName);
Console.WriteLine();
// перебор всех строк таблицы
foreach (DataRow row in dt.Rows)
{
    var cells = row.ItemArray;
    foreach (object cell in row.ItemArray)
        Console.Write("\t{0}", cell);
    Console.WriteLine();
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850