Встроенные возможности DataSet позволяют производить некоторые операции с xml-документами, в частности, сохранять данные из dataset в xml и, наоборот, загружать из xml в dataset. Подобные возможности позволяют при необходимости использовать dataset в качестве посредника между базой данных и xml-файлами.
Сохранение данных из dataset в xml осуществляется с помощью метода WriteXml. Например, загрузим данные из БД в DataSet и затем сохраним их в xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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()
передается имя файла, который после записи будет выглядеть примерно следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?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():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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(); } |