DotNet 笔记

东方欲晓,莫道君起早。

XML文件当作数据库,使用XMLDatabase第三方DLL进行CRUD操作

引子

当领导说:"用XML存储数据"。咱们啥也不说了...其他的数据存储方式再好,那也没有XML数据存储好。

鉴于XML当数据存储(数据库),在网上找了一个不错的dll库,分享出来。XmlDatabase.Core.dll下载 (25.00 kb)

XMLDatabase简单介绍:

1.1 完全基于XML的存储。数据库的配置信息和对象数据、索引、日志全部是用XML格式保存的。这样的出发点主要是XML数据格式很易于阅读和传输,转换。
1.2 基于文件夹的数据存储。这个设计褒贬不一,好处就是不用一个文件存放所有的东西,那么在读写的时候很方便。其可能导致的麻烦也许就是得小心地保证这个文件夹不被破坏。
1.3 完全基于.NET编写,结合了LINQ的语法。这个数据库引擎也可以算是一个所谓的嵌入式的数据库引擎吧,它是通过一个dll提供了全部的功能。目前是基.NET Framework 3.5开发的。后续可能会视情况提供直接可用于.NET Framework 2.0的版本。
1.4 目前提供的查询是基于LINQ to Object的,所有的操作都是面向对象的。但还没有设计专门的LINQ Provider来做查询。

适用场景

面向.NET开发平台的、小型的、面向对象的数据库。它比较适合于本地数据缓存、嵌入式数据库应用的场景。

使用方式

引入DLL,然后用代码说吧:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using XmlDatabase.Core;

namespace XmlDatabaseDo
{
    class Program
    {
        static void Main(string[] args)
        {
            //打开数据库,如果没有会自动创建。 【注:其实这个数据库就是一个文件夹,文件夹名就是数据库名,里面一个表就是一个xml文件】
            using (XDatabase db = XDatabase.Open(@"DbFile"))
            {
                //实例化一条数据
                Faces cut = new Faces { Name = "小红", Sex = "男", Tel = "15228187402", Age = 20, Position = "/image/faces.png", Eigenvalue = "Eigenvalue", saltV = "123123132" };

                //调用store函数:1:查看有没有这个表文件(没有就创建)  2:判断是添加还是修改(如何判断是添加还是修改的,不知道,很牛!!!)。
                //添加
                db.Store(cut);

                //查询
                var lrs = db.Query<Faces>().Where(r => r.Sex == "男").ToList();

                //修改
                foreach (var v in lrs)
                {
                    v.Name = "zhifeiya" + Guid.NewGuid().ToString();
                    db.Store(v);
                }

                //删除
                foreach (var v in lrs)
                {
                    db.Delete(v);
                }
            }
        }
    }

    /// <summary>
    /// 实体类
    /// </summary>
    public class Faces
    {
        #region 属性
        /// <summary>姓名</summary>       
        public String Name { get; set; }
        /// <summary>年龄</summary>
        public Int32 Age { get; set; }
        /// <summary>性别</summary>
        public String Sex { get; set; }
        /// <summary>手机号码</summary>       
        public String Tel { get; set; }
        /// <summary>图片位置</summary>      
        public String Position { get; set; }
        /// <summary>图像的特征值,不支持存储数组类型,要转换才行</summary>      
        public string Eigenvalue { get; set; }

        public string saltV { set; get; }
        #endregion
    }
}

 

 

 

Loading