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

数据的保存技术

使用文档进行数据保存

问题

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

一.序列化和反序列化

在这里插入图片描述
注意
(1)只要是对象皆可进行序列化和反序列化操作
(2)如果某个数据对象要进行序列化和反序列化操作,首先要将这个对象进行添加特性-序列化标识

1.序列化

对象数据进行序列化保存

        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();
        }

2.反序列化

对象数据反序列化读取

        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;
        }

3.应用场合

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

4.好处

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

二.XML文件的操作

1.XML概念

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

2.XML文档格式要求

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

3.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>常用对象

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

2>常用属性/方法

1.XmlDocument:
(1) DocumentElement:获取根节点
(2) ChildNodes:获取其内部所有子节点
(3) Load():读取整个XML结构
(4) Save():保存整个XML文档
2.XmlNode
(1) InnerText:获取当前节点之间的内容数据
(2) Name:当前节点的名字
(3) ChildNodes:当前节点的所有子节点
(4) AppendChild():向当前节点中添加一个字节点

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页