asp.net C#用文本文件做数据库的例子

作者:袖梨 2022-06-25

1.数据集基类

 

 代码如下 复制代码

///


/// 数据集基类
///

///
public abstract class BaseTB
    where T : class
{
    private static string _TextFile = Path.Combine(ConfigurationManager.AppSettings["TextDBDir"], typeof(T).Name + "TB.txt");
    private static List _data = null;

    ///


    /// 数据容器
    ///

    internal static List Container
    {
        get
        {
            if (_data == null)
            {
                if (File.Exists(_TextFile))
                {
                    _data = JsonHelper.Deserialize>(File.ReadAllText(_TextFile));
                }
                else
                {
                    _data = new List();
                }
            }
            return _data;
        }
    }

    ///


    /// 获取记录
    ///

    ///
    ///
    public abstract T Get(T obj);

    ///


    /// 属性复制
    ///

    ///
    ///
    public abstract void Copy(T obj1, T obj2);

    ///


    /// 添加记录
    ///

    ///
    ///
    public bool Add(T obj)
    {
        bool result = false;

        T item = Get(obj);
        if (item == null)
        {
            Container.Add(obj);
            Save();
            result = true;
        }

        return result;
    }

    ///


    /// 更新记录
    ///

    ///
    ///
    public bool Update(T obj)
    {
        bool result = false;

        T item = Get(obj);
        if (item != null)
        {
            Copy(item, obj);
            Save();
            result = true;
        }

        return result;
    }

    ///


    /// 删除记录
    ///

    ///
    ///
    public bool Remove(T obj)
    {
        bool result = false;

        T item = Get(obj);
        if (item != null)
        {
            Container.Remove(item);
            Save();
            result = true;
        }

        return result;
    }

    ///


    /// 保存数据
    ///

    internal void Save()
    {
        File.WriteAllText(_TextFile, JsonHelper.Serialize(Container));
    }
}

2.实体及数据集类

 

 代码如下 复制代码

///


/// 实体类
///

public class User
{
    public string Usn { get; set; }
    public string Pwd { get; set; }
}

///


/// 数据集
///

public class UserTB : BaseTB
{      
    #region 实现父类方法

    ///


    /// 获取对象
    ///

    ///
    ///
    public override User Get(User user)
    {
        return Get(user.Usn);
    }

    ///


    /// 属性复制
    ///

    ///
    ///
    public override void Copy(User user1, User user2)
    {
        user1.Usn = user2.Usn;
        user1.Pwd = user2.Pwd;
    }

    #endregion

    ///


    /// 获取对象
    ///

    ///
    ///
    public User Get(string usn)
    {
        User result = null;

        foreach (User item in Container)
        {
            if (item.Usn.ToLower() == usn.ToLower())
            {
                result = item;
                break;
            }
        }

        return result;
    }

    ///


    /// 删除记录
    ///

    ///
    public void Remove(string usn)
    {
        User user = new User() { Usn = usn };
        Remove(user);
    }
}

3.数据库

 

 代码如下 复制代码

///


/// 数据库
///

public static class Database
{
    ///
    /// 初始化
    ///

    static Database()
    {
        if (!Directory.Exists(ConfigurationManager.AppSettings["TextDBDir"]))
        {
            Directory.CreateDirectory(ConfigurationManager.AppSettings["TextDBDir"]);
        }
    }

    private static UserTB _usertb;
    ///


    ///
    ///

    public static UserTB UserTB
    {
        get
        {
            if (_usertb == null)
            {
                _usertb = new UserTB();
            }
            return _usertb;
        }
    }
}

调用示例

 

 代码如下 复制代码
User user = new User() { Usn = "dnawo", Pwd = "666666" };
Database.UserTB.Add(user);
user.Pwd = "999999";
Database.UserTB.Update(user);


这样在txt文件中是存储按行以tab分开的数据存储格式了,所以这样也方便它来查找数据了哦。

相关文章

精彩推荐