Четверг, 18.04.2024, 08:59
Приветствую Вас Гость | RSS
Главная | БЛОГ | Регистрация | Вход
Меню сайта
Форма входа
Категории раздела
WEB-Дизайн [2]
HTML, CSS, JAVA-Script
PHP [2]
Описание языка, скрипты, работа с MySQL
Технология .NET [6]
C#, ASP, основные принципы
Операционные системы [1]
Linux [1]
Все о Linux.
Бытиё [1]
Моя жизнь, мысли, переживания и размышления...
Поиск
Календарь
«  Март 2009  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Наш опрос
На каком языке вы предпочитаете программировать?
Всего ответов: 791
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Блог йуного кодера
Главная » 2009 » Март » 20 » C# и XML. Удобный способ хранения данных. Часть вторая
11:15
C# и XML. Удобный способ хранения данных. Часть вторая

Уникальный ID.

Вроде основное объяснил. Теперь все же вернемся к нашему айдишнику. Что бы сделать его уникальным, нам нужно что бы в каждой записи он был разным. Для этого делаем следующее: при создании новой записи ищем максимальное значение ID, добавляем к нему единицу и пишем в базу. Если записей в базе еще нет, то присваиваем ID значение 1. То есть у нас получается max(id)++.

  1.         private string MaxID(string filepath)  
  2.         {  
  3.             List<int> idList = new List<int>(); // Создаем массив айдишников  
  4.             int id; // отдельно взятый айдишник  
  5.   
  6.             XmlDocument xd = new XmlDocument();  
  7.             FileStream fs = new FileStream(filepath, FileMode.Open);  
  8.             xd.Load(fs);  
  9.             XmlNodeList list = xd.GetElementsByTagName("user");  
  10.   
  11.             // Если в базе есть записи  
  12.             if (list.Count > 0)  
  13.             {  
  14.                 for (int i = 0; i < list.Count; i++)  
  15.                 {  
  16.                     XmlElement user = (XmlElement)xd.GetElementsByTagName("user")[i];  
  17.                     id = Convert.ToInt32(user.GetAttribute("id")); // Считывае ID  
  18.                     idList.Add(id); // Добавляем его в массив  
  19.                 }  
  20.   
  21.                 // Ищем собсна максимальное значение.  
  22.                 int result = 0;  
  23.                 foreach (int j in idList)  
  24.                     if (j > result)  
  25.                         result = j;  
  26.   
  27.                 result++; // Добавляем единуцу к максимальному значению  
  28.                 fs.Close(); // Закрываем поток  
  29.                 return result.ToString(); // Возвращаем результат  
  30.             }  
  31.             else  
  32.             {  
  33.                 fs.Close();  
  34.                 return "1"// Возвращаем единицу  
  35.             }  
  36.         }  
  37. int>int>  

Для вычисления максимального значения нам для начала необходимо создать массив из значений ID. Здесь я создаю его с помощью элемента List. Дальше в цикле заполняем его и уже потом ищем максимум. И кстати, необходимо в таком случае немного изменить функцию записи в базу. В самое начало функции вносим переменную, которая будет хранить нужный ID:

  1. string id = MaxID(filepath);  

А также

  1. user.SetAttribute("id", "1”);  

меняем на

  1. user.SetAttribute("id", id);  

Ну и в завершении добавляем функции в обработчики событий нажатий кнопок:

  1. private void btnWrite_Click(object sender, EventArgs e)  
  2. {  
  3.     try  
  4.     {  
  5.         WriteToXMLDocument("users.xml", txtWLogin.Text, txtWPassword.Text);  
  6.         MessageBox.Show("Запись добавлена""Добавление", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);  
  7.     }  
  8.     catch (Exception er)  
  9.     {  
  10.         MessageBox.Show(er.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);  
  11.     }  
  12. }  
  13.   
  14. private void btnRead_Click(object sender, EventArgs e)  
  15. {  
  16.     string pid = txtID.Text;  
  17.     ReadXMLDocument("users.xml", pid);  
  18. }  

Категория: Технология .NET | Просмотров: 14081 | Добавил: dblog | Рейтинг: 4.2/5
Всего комментариев: 6
1 Виктор  
0
Спасибо за статью очень пригодилась!!!!!!

2 Виктор  
0
Тут такой вопрос пишу программу для создание прайс листов.
Т.е. В програме создается xml лист, а визуально он отображаться будет во flash
Вопрос в следующем как из диалога открыть выбрать только путь к изображению и записать его в узел xml
<img>../images/бла/бла/<img>

блин завернул.. :-)


3 Алексей  
0
Мног искал в инете инфы по XML в C#, но все что находил было написано БредоНедоПрофессорами. Спасибо за доступные для понимания статьи. Теперь умею создавать и читать XML документы. Хотелось чтобы вы также понятно рассказали и о том как удалять и редактировать записи в XML доках. Спасибо.

4 ильгиз  
0
отдуши ,

5 Владимир  
0
Все хорошо описано, а не могли бы показать как сформировать из дерева данных treeView хмл документ тут видимо нужно формировать его во время обхода по дереву но пока я себе ето не очень представляю было бы неплохо увидетья пример простой реализации.

6 art  
0
Большое спасибо за статью!!!
А почему забыли про
if (!File.Exists("users.xml"))
CreateXMLDocument("users.xml");

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Бесплатный хостинг uCozCopyright MyCorp © 2024