封装的一个简单的数据库操

下载

关于数据库操作的第三方类库比比谐是,比如有名的NHibernate,ActiveRecord,等等。ActiveRecord在开发项目中也用,但感觉不是很好用,最大的优点是,基本的添加修改,删除等操作,不需要写任何代码,但对于一些复杂的数据库查询,总感觉不太方便,如果实体类建的有问题也不好查错误。

今天试着封装了一个数据库操作类,都是些基本的操作,起什么名字好呢?功能简单,简单的就是最好的,故起名曰"SimpleDB".

先介绍一下实体类的创建:

  [Table("test")]
    public class PersonInfo
    {
        #region 私有变量
        private int _id;
        private int _age;
        private string _name;
        #endregion

        #region 属性
        /// <summary>
        ///
        /// </summary>
        [PrimaryKey("id",PrimaryKeyType.AutoGenerate)]
        public int PersonId
        {
            set { _id = value; }
            get { return _id; }
        }
        /// <summary>
        ///
        /// </summary>
        public int Age
        {
            set { _age = value; }
            get { return _age; }
        }
        /// <summary>
        ///
        /// </summary>
        [Field("name")]
        public string UserName
        {
            set { _name = value; }
            get { return _name; }
        }
        #endregion Model
    }
}
 [Table("test")]
    public class PersonInfo
Table属性,用来设置对应的数据库表名,当类名跟表名相同时可以不用Table属性。

 [PrimaryKey("id",PrimaryKeyType.AutoGenerate)]
        public int PersonId
        {
            set { _id = value; }
            get { return _id; }
        }
PrimaryKey("id",PrimaryKeyType.AutoGenerate),用来设置主键的属性,一是主键的字段名,一是主键的类别,一种是AutoGenerate自动增长,Assigned为非自动增长。

  [Field("name")]
        public string UserName
        {
            set { _name = value; }
            get { return _name; }
        }

用来设置普通字段的属性,指定该属性对应的数据库字段名称,当属性名,跟数据库字段的名称相同时,可以省略。

public class Person:Simples<Model.PersonInfo>

这样Person类就继承了Add(PersonInfo info),Update(PersonInfo info),Delete(PersonInfo info)等方法。

除了基本的添加,修改,删除的基本操作,还封装了以下方法:

 protected T GetInfoBySql(string strSql,params SqlParameter[] parm) 传SQL语句,返回一个实体类。

protected T GetByDataRow(DataRow dr) 传一个DataRow,返回一个实体类

protected T GetByReader(SqlDataReader reader)传SqlDataReader,返回一个实体类。

底层的数据库操作,在DBHelper.cs里,可根据需要进行修改。

下载

出自:http://www.soft000.com/newsInfo.aspx?id=a1abc334-ea3f-4735-90c6-e147abb8ec29
上一篇:一个 C#序列化的类    下一篇:WinForm的分页控件

评论人: 游客 评论时间: 6/4/2010 9:52:29 PM
里面包含一个test的项目,是一个测试项目,建表语句是test.sql,从sql2008直接导出的。

[STAThread]

static void Main()

{

DBHelper.ConnectionString = "server=.;integrated security=sspi;database=test;";

这里是设置了连接字符串,改成你自己的数据库就可以运行了。

评论人: 游客