Xqk.Data数据框架使用说明之:一个简单的示例

该例子建立了一个Person的实体类,该实体类与数据表person关联,通过Person对象就可以实现对数据表person的操作。

  1. 通过Visual Studio创建一个WinForm项目XqkDataDemo1;
  2. 把Xqk.Data.dll复制到项目中;把数据库连接库复制到项目中(本例用SqlLite,需要把System.Data.SqlLite.dll复制到项目中);
  3. 创建一个实体类Person;代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Xqk.Data;

    namespace XqkDataDemo1
    {

        public class Person
        {
            [DbField]
            public string Name { get; set; }

            [DbField]
            public bool IsMale { get; set; }

            [DbField]
            public int Height { get; set; }

            [DbField]
            public double Weight { get; set; }

            [DbField]
            public DateTime Birthday { get; set; }


            public int Age
            {
                get
                {
                    return 1+ DateTime.Now.Year - Birthday.Year;
                }
            }

        }
    }

        正如上述代码所示,为了让一个实体类与一张数据表关联,仅需在实体类的属性中添加DbField特性。

    DbField特性使得实体类的属性与数据表列对应起来,关于这种对应关系,以后会详尽描述。

  4. 在Visual Studio创建的默认窗体Form1中添加一个名为listview1的列表控件和一个名为AddButton的按钮控件;
  5. 在Form1的代码中引入Xqk.Data命名空间,并在Form1代码中添加一个DbTable<T>字段:

    using Xqk.Data; 

    namespace XqkDataDemo1
    {
        public partial class Form1 : Form
        {
            DbTable<Person> _DbtPerson; 

            ......

        }

    }

  6. 在Form1的Load代码中连接数据库并初始化刚才创建的_DbtPerson字段:

            private void Form1_Load(object sender, EventArgs e)
            {
                DbConnector db = DbConnector.SQLite("E: empdemo1.db");
                //DbConnector db = DbConnector.MySQL("localhost", "root", "123", "test");

                _DbtPerson = db.GetTable<Person>();
                _DbtPerson.EnsureExist();

                ShowAllPersons();
            }

    使用DbConnector为特定数据库系统提供的静态函数来连接数据库。本例使用SQLite数据库,则使用下DbConnector的下列静态函数连接:

    public static DbConnector SQLite(string datasrc);

    如果数据库系统使用MySQL,则用:

    public static DbConnector MySQL(string server, string userid, string password, string dbname);

    事实上,DbConnector类为不同数据库系统还提供使用数据库连接字符串连接的版本。

     

    用DbConnector实体对象的GetTable<T>方法为数据表与实体类建立关联:

    public DbTable<T> GetTable<T>() where T : class, new()

    该方法绑定的数据表名称,默认为实体类名的小写形式,在本示例中,数据表的名称为实体类名称Person的小写形式person;

    DbTable<T>的实体对象方法EnsureExist表示当数据表不存在时,自动建立该数据表。在本例中,如果E: emp目录下不存在demo1.db文件,当_DbtPerson.EnsureExist();运行后,会自动建立demo1.db文件,并创建名为person的数据表,含有name, ismale, height,weight, birthday共5个数据列。

     初始化数据表后,把数据表中的数据显示在列表中

  7. 用DbTable<T>的实体对象方法SelectAll方法从关联的数据表中读取所有数据到实体对象数组:
          public T[] SelectAll();

    显示Person列表的方法如下:

            private void ShowAllPersons()
            {
                listView1.Items.Clear();
                listView1.BeginUpdate();
                foreach(Person person in _DbtPerson.SelectAll())
                {
                    ListViewItem lvi = new ListViewItem(person.Name);
                    lvi.SubItems.Add(person.IsMale ? "男" : "女");
                    lvi.SubItems.Add(person.Height.ToString());
                    lvi.SubItems.Add(person.Weight.ToString());
                    lvi.SubItems.Add(person.Birthday.ToString("yyyy-MM-dd"));
                    lvi.SubItems.Add(person.Age.ToString());

                    listView1.Items.Add(lvi);
                }
                listView1.EndUpdate();
            }

  8. 为AddButton添加click事件处理方法,在该方法中弹出一个新建Person的对话框,给对话框返回DialogResult.OK时,表明用户输入了一个有效的Person数据,然后用DbTable<T>的实体对象方法Insert把该实体对象添加到关联的数据表中:

            private void AddButton_Click(object sender, EventArgs e)
            {
                PersonDetailForm f = new PersonDetailForm();
                f._Person = null;
                if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    _DbtPerson.Insert(f._Person);
                    ShowAllPersons();
                }
            } 

点此返回到Xqk.Data数据框架首页下载本示例(用Vitual Studio 2010生成)

转载于:https://www.cnblogs.com/xqkblog/archive/2011/11/02/2232474.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值