zoukankan      html  css  js  c++  java
  • CodeFirst实战:用文本数据库存档软件配置

    背景:

    以前要写软件的时候,在编写用户配置这一块时,由于存档数据库不靠谱或大题小作,所以一般是存在文本中。
    一开始是一个文件保存一个配置(图个File.Read与File.Write的操作简单)
    由于软件经常升级,用户的配置也会不停的增加,又得兼容以前,又要新增加,之后的配置又用了分隔与换行来来保存多条配置。
    重复多了之后,多少感觉到麻烦~~~

    解决:

    所以,对于DBImport,你看早期的版本,对于用户的数据库链接,也没保存配置,说白了就是懒啊。
    后来有用户反应要增加,加之CYQ.Data的文本数据库功能相对越来越完善,以及使用上也方便了,所以就增加上去了。

    所以今天就以这个为实例,讲解一下是怎么方便法:

    对于DBImport来说,有两个输入框,为了方便存档及下次启动,需要保存下并于下次启动时还原:

     

    实战如下:

    1:用入CYQ.Data.dll V5版本的。

    2:CodeFirst编写个实体:

     class Config : CYQ.Data.Orm.OrmBase
        {
            public Config()
            {
                base.SetInit(this"Config""txt path={0};ts=0");
            }
            private int ID{get;set;}
            private string Key{get;set;}
            public string Value{get;set;}
        }

    说明:

    表名:Config;

    {0}:代码根目录,即软件运行目录; 

    ts=0:新增的识别参数,不创建Config.ts的表结构文件。 

    3:接下来就是按钮点击事件成功后,把数据为链接保存:

     //保存链接字符串。
                        using (Config config = new Config())
                        {
                            if (config.Fill("key='ConnFrom'"))
                            {
                                config.Value = connFrom;
                                config.Update();
                            }
                            else
                            {
                                config.Key = "ConnFrom";
                                config.Value = connFrom;
                                config.Insert(InsertOp.None);
                            }
                        }

    如果链接已存在,就是更新,如果不存在,就是插入了。

    4:软件初运行的时候检测数据是否存在,并设置初始值还原:

        using (Config config = new Config())
                {
                    if (config.Fill("Key='ConnFrom'"))
                    {
                        txtConnFrom.Text = config.Value.ToString();
                    }
                    if (config.Fill("Key='ConnTo'"))
                    {
                        txtConnTo.Text = config.Value.ToString();
                    }
                }

    5:一切就绪,F5运行后,软件目录下就多了一个文件(文本数据存存档json或xml格式数据):

     

    这里提一下,如果文本数据库链接不指定ts=0,在同一目录下会创建数据库结构:

     

    示例就到这里结束了。


    对于CodeFirst,是支持所有数据库,但是又有些许区别:

    如果是对于sqlite,mssql,oracle,mysql等,由于数据是肯定是存到数据库的,所以CodeFirst编码运行后,肯定是会创建表结构到数据库中,才能存储数据。

    意思就是,如果有数据库字段变化,可能需要到数据库里修改对应的字段;

    而文本数据库,如果是增加或减少属性字段,则完全无事,如果是删除或修改字段名称,如果字段的数据不要,则也无事,如果原字段数据需要,自己打开事本,批量替换一下,也是相当方便。


    总体来说,个人觉的CodeFirst的操作方式,还是文本数据库来的实在与方便~~~ 而其它数据库,虽然如果中间变更,还是要变更,那就又回到CodeLast了。。。


  • 相关阅读:
    C++模板学习之优先队列实现
    static 和const分别怎么用,类里面static和const可以同时修饰成员函数吗?
    C和C++的区别
    C++多态例子_虚函数
    转:master公式(主方法)
    C++11最常用的新特性如下
    转:哈夫曼树详解
    linux shell脚本
    linux 正则表达式
    linux shell命令
  • 原文地址:https://www.cnblogs.com/cyq1162/p/3213531.html
Copyright © 2011-2022 走看看