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

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分开的数据存储格式了,所以这样也方便它来查找数据了哦。

时间: 2024-10-07 20:21:16

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

php 用txt文本文件做数据库程序

define ("tblPath",".\"); define ("exten",".php"); define ("fileHead","<? echo "You are wellcome!"?".">This file only for class txtTbl"); class txtTbl {   var $innerName=

在ASP中通过oo4o连接Oracle数据库的例子

oracle|数据|数据库 下面这段代码能够显示,当前用户所能够看到的所有的用户和表,有兴趣的, 可以把每个表的内容加上 <%Dim objOraSession,objOraDbDim strDbUser,strDbPwd,strDbConnCall ConnectDB()Sub ConnectDB() '连接数据库 On Error Resume Next strDbUser = "tmpUser" '连接用户名 strDbPwd = "rt45ps1w"

ASP中文本文件与数据库文件的数据交换

数据|数据库|中文 ASP中文本文件与数据库文件的数据交换 网络数据库的应用是WWW上一个很重要的组成部分,可以这样说,如果缺少了数据库,网络也就失去了灵魂.大家可以想象一下,如果没有象YAHOO,SOHU等搜索引擎的话,那么在网上寻找一个目标变得多么困难,大家在茫茫网海里变得不知所往,动辄迷失方向.其实,这些搜索引擎是网络数据库的最典型的应用,在ASP(Active Server Pages)技术里对数据库的直接操作是比较多的,下面讲述一种由文本文件向数据库文件传递数据的方法.这个文本文体是由

ASP中文本文件与数据库文件的数据交换(FSO)

fso|数据|数据库|中文 ASP中文本文件与数据库文件的数据交换 网络数据库的应用是WWW上一个很重要的组成部分,可以这样说,如果缺少了数据库,网络也就失去了灵魂.大家可以想象一下,如果没有象YAHOO,SOHU等搜索引擎的话,那么在网上寻找一个目标变得多么困难,大家在茫茫网海里变得不知所往,动辄迷失方向.其实,这些搜索引擎是网络数据库的最典型的应用,在ASP(Active Server Pages)技术里对数据库的直接操作是比较多的,下面讲述一种由文本文件向数据库文件传递数据的方法.这个文本

ASP.NET备份恢复Sql Server数据库

本文将向大家介绍如何使用 ASP.NET 备份恢复 Sql Server 数据库,大家可以做个参考,也希望对大家有所帮助. 备份SqlServer数据库: string SqlStr1 = "Server=(local);database='" + this.DropDownList1.SelectedValue + "';Uid=sa;Pwd=";string SqlStr2 = "backup database " + this.DropDo

asp.net 怎么能实现下载数据库中二进制的图片

问题描述 asp.net 怎么能实现下载数据库中二进制的图片 sql中是以二进制的方式存入图片的 想在 GridView( 或其它控件)中添加一列'下载',点下载按钮就下载对应imageid中的图片,怎么实现,请举例说明 解决方案 服务器端直接用 Response.BinaryWrite((byte[])dataset.Tables[0].Rows[0]["图片字段"]); 返回客户端 客户端加上 <img src="服务器地址" /> 解决方案二: 完

asp.net mvc项目:做一个简单的购物网站,如何实现让多个用户同时在线购物?

问题描述 asp.net mvc项目:做一个简单的购物网站,如何实现让多个用户同时在线购物? 请知道的同行具体给晚辈吐槽点经验知识(asp.net mvc项目:做一个简单的购物网站,如何实现让多个用户同时在线购物?) 解决方案 每个用户的信息放在session里面,互不干扰的.在数据库中,通过用户id区分不同的用户,所以做网站天然就可以支持多个用户在线购物. 微软专门做了一个asp.net mvc的例子,叫mvcmusicstore,是一个音乐购物网站,你可以google下,有关于它全部的源代码

asp.net 怎么让这些从数据库读出来的数据相加并显示到充值金额里

问题描述 asp.net 怎么让这些从数据库读出来的数据相加并显示到充值金额里 我选择一条数据,就显示一条数据的总运费,选择两条就显示两条数据相加的总运费.我不知道这个怎么做,请知道的大神指导一下,有详细代码最好,或者类似的也可以 解决方案 两种方式,第一每次遍历所有数据得到合计,第二,如果每次都是自己添加,那么从第一次开始,记录一个值, 下次就把新值加上旧值得到合计 解决方案二: 你添加的界面在哪里?另外既然你的运费是算出来的,为什么要用文本框? 在你的添加的界面上更新总价就是了. 解决方案三

javascript动态添加表格数据行(ASP后台数据库保存例子)_javascript技巧

在很多web应用中,我们会遇到很多需要动态插入多行纪录的地方.比如,在人才网站上,我们填写简历的时候,我们要填写我们的项目经验,我们可以根据自己的实际情况动态的添加条数,这种不是以单独页面的形式添加,这种动态添加是在同一个页面下动态添加,最后再一起提交到服务器保存到数据库中. 本文,我将以一个类似的例子来做一个前台用Javascript动态添加数据项,后台保存到数据库的例子. 浏览器:IE.6.0 后台:ASP (VBScript ) 前台:HTML + JavaScript HTML代码: 复