ADO.NET处理数据的保存(序列化和反序列化,XML文件)

数据的保存技术

使用文档进行数据保存

问题

  1. 当对象属性发生变化时,需要增加或减少信息的写入和读取次数
  2. 信息的安全性较差

序列化和反序列化

在这里插入图片描述

注意:

  1. 只要是对象皆可进行序列化和反序列化操作
  2. 如果某个数据对象要进行序列化和反序列化操作,首先要将这个对象进行添加特性-序列化标识

对象数据进行序列化保存

        private void btnSavesl_Click(object sender, EventArgs e)
        {
            //首先数据封装
            objStudent student = new objStudent()
            {
                ID = int.Parse(txtID.Text.Trim()),
                Name = txtName.Text.Trim(),
                Age = int.Parse(txtAge.Text.Trim()),
                Birthday = txtBirthday.Text.Trim()
            };
            //【1】创建文件流
            FileStream fs = new FileStream("Student.stu",FileMode.Create);
            //【2】创建二进制格式化器
            BinaryFormatter formatter = new BinaryFormatter();
            //【3】调用这个格式化器的序列化方法
            formatter.Serialize(fs,student);
            fs.Close();
        }

对象数据反序列化读取

        private void btnReadersl_Click(object sender, EventArgs e)
        {
            //【1】创建文件流
            FileStream fs = new FileStream("Student.stu", FileMode.Open);
            //【2】创建二进制格式化器
            BinaryFormatter formatter = new BinaryFormatter();
            //【3】调用反序列化方法
            objStudent student=(objStudent)formatter.Deserialize(fs);
            fs.Close();
            txtID.Text = student.ID.ToString();
            txtName.Text = student.Name;
            txtAge.Text = student.Age.ToString();
            txtBirthday.Text = student.Birthday;
        }

应用场合

  1. 应用程序配置信息(如果信息量较大,则使用该方法更方便读取和写入)
  2. 不需要数据库的时候,可以作为数据存取的载体
  3. WebServerice等服务中对象的传递
  4. 模块之间的数据传递
    https://www.cnblogs.com/jpfss/p/8397596.html

好处

  1. 对象数据的存取更方便,扩展性强
  2. 数据安全性更强

XML文件的操作

XML概念

  1. eXtensible Markup Language的缩写,可扩展标记语言
  2. 是一种可以用来创建自定义的标记语言,由万维网协会(W3C)创建,用来克服HTML的局限
  3. 从使用功能上看XML主要用于数据的存储,而HTML主要用于数据显示

XML文档格式要求

  1. 确定且唯一的根元素
  2. 开始标签和结束标签匹配
  3. 元素标签的正确嵌套
  4. 属性值要用引号括起来
  5. 同一个元素的属性不能重复
    语法要求:
  6. 元素:<标签>文本内容</标签>
  7. 处理指令:< ?xml version=“1.0”?>
  8. 注释:< !-- 注释内容 -->
  9. 属性:< zhangsan currentMoney=“ZH¥”>200< /zhangsan>

XML文件读取

XML文件的读取

  1. 创建文档对象
  2. 加载xml文档
  3. 获取根节点
  4. 遍历节点并封装数据
        private void btnLoadXML_Click(object sender, EventArgs e)
        {
            XmlDocument document = new XmlDocument();
            document.Load("XMLFile.xml");
            XmlNode root = document.DocumentElement;
            List<Book> books = new List<Book>();
            foreach (XmlNode item in root.ChildNodes)
            {
                if (item.Name=="Book")
                {
                    Book book = new Book();
                    foreach (XmlNode node in item.ChildNodes)
                    {
                        switch (node.Name)
                        {
                            case "Name":
                                book.Name = node.InnerText;
                                break;
                            case "Author":
                                book.Author = node.InnerText;
                                break;
                            case "Price":
                                book.Price = node.InnerText;
                                break;
                            default:
                                break;
                        }
                    }
                    books.Add(book);
                }
            }
            dataGridView1.DataSource = books;
        }

常用对象

  1. XmlDocument对象表示XML整个文档
  2. XmlNode对象表示XML文件中的单个节点

常用属性/方法

XmlDocument:

  1. DocumentElement:获取根节点
  2. ChildNodes:获取其内部所有子节点
  3. Load():读取整个XML结构
  4. Save():保存整个XML文档

XmlNode:

  1. InnerText:获取当前节点之间的内容数据
  2. Name:当前节点的名字
  3. ChildNodes:当前节点的所有子节点
  4. AppendChild():向当前节点中添加一个字节点
发布了134 篇原创文章 · 获赞 118 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dust__/article/details/104829409