asp.net C#用文字檔做資料庫的例子

來源:互聯網
上載者:User

1.資料集基類

 

 代碼如下 複製代碼

/// <summary>
/// 資料集基類
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class BaseTB<T>
    where T : class
{
    private static string _TextFile = Path.Combine(ConfigurationManager.AppSettings["TextDBDir"], typeof(T).Name + "TB.txt");
    private static List<T> _data = null;

    /// <summary>
    /// 資料容器
    /// </summary>
    internal static List<T> Container
    {
        get
        {
            if (_data == null)
            {
                if (File.Exists(_TextFile))
                {
                    _data = JsonHelper.Deserialize<List<T>>(File.ReadAllText(_TextFile));
                }
                else
                {
                    _data = new List<T>();
                }
            }
            return _data;
        }
    }

    /// <summary>
    /// 擷取記錄
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public abstract T Get(T obj);

    /// <summary>
    /// 屬性複製
    /// </summary>
    /// <param name="obj1"></param>
    /// <param name="obj2"></param>
    public abstract void Copy(T obj1, T obj2);

    /// <summary>
    /// 添加記錄
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public bool Add(T obj)
    {
        bool result = false;

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

        return result;
    }

    /// <summary>
    /// 更新記錄
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public bool Update(T obj)
    {
        bool result = false;

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

        return result;
    }

    /// <summary>
    /// 刪除記錄
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public bool Remove(T obj)
    {
        bool result = false;

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

        return result;
    }

    /// <summary>
    /// 儲存資料
    /// </summary>
    internal void Save()
    {
        File.WriteAllText(_TextFile, JsonHelper.Serialize(Container));
    }
}

2.實體及資料集類

 

 代碼如下 複製代碼

/// <summary>
/// 實體類
/// </summary>
public class User
{
    public string Usn { get; set; }
    public string Pwd { get; set; }
}

/// <summary>
/// 資料集
/// </summary>
public class UserTB : BaseTB<User>
{      
    #region 實現父類方法

    /// <summary>
    /// 擷取對象
    /// </summary>
    /// <param name="user"></param>
    /// <returns></returns>
    public override User Get(User user)
    {
        return Get(user.Usn);
    }

    /// <summary>
    /// 屬性複製
    /// </summary>
    /// <param name="user1"></param>
    /// <param name="user2"></param>
    public override void Copy(User user1, User user2)
    {
        user1.Usn = user2.Usn;
        user1.Pwd = user2.Pwd;
    }

    #endregion

    /// <summary>
    /// 擷取對象
    /// </summary>
    /// <param name="usn"></param>
    /// <returns></returns>
    public User Get(string usn)
    {
        User result = null;

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

        return result;
    }

    /// <summary>
    /// 刪除記錄
    /// </summary>
    /// <param name="usn"></param>
    public void Remove(string usn)
    {
        User user = new User() { Usn = usn };
        Remove(user);
    }
}

3.資料庫類

 

 代碼如下 複製代碼

/// <summary>
/// 資料庫
/// </summary>
public static class Database
{
    /// <summary>
    /// 初始化
    /// </summary>
    static Database()
    {
        if (!Directory.Exists(ConfigurationManager.AppSettings["TextDBDir"]))
        {
            Directory.CreateDirectory(ConfigurationManager.AppSettings["TextDBDir"]);
        }
    }

    private static UserTB _usertb;
    /// <summary>
    ///
    /// </summary>
    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分開的資料存放區格式了,所以這樣也方便它來尋找資料了哦。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.