每当自家之Winform开发框架中,底层的多寡访问支持多种不同的数据库,在数据库访问的支付过程被,发现Sqlite多数情形下,操作都与SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身为时有发生一对特之话语支持,本文主要基于自己的了解,以及当支撑之Sqlite基类中的提炼,总结他们不时因此到之局部不等,以便以后翻看,并跟豪门分享讨论。

        开单网店、书店、咖啡店大概是多多益善女童的企吧,我吗这么。

于自身的Winform开发框架中,是支撑Sqlite等如此的数据库联网的,示例图如下所示。 

       
2012年之上,我机缘巧合的和闺蜜并开始了一个网店,主营护肤品化妆品代购。有了这个关头,我不怕同闺蜜分配工作晚,轰轰烈烈的开起来了。对于自者IT民工来说,创建公司、装修、买服务就都无足轻重。闺蜜也高涉嫌,制订货单,然后等着货物从美国运回,之后找了影棚给商品摄影,我们ps图上架商品……当然还伙同找寻朋友打信誉。轰轰烈烈的召开了2只月后,我们的网店带在平等发小钻的名正式开课做买卖了。如果要是确实问我感触,我只能说“累”,我之腰间盘由生时段一直增长时伏案p图上架便坏了。

统计 1  

       
小店生意,一上最为多之时刻吧起十来单独,因为闺蜜五湖四海朋友大多,我吧有同事同学,一开始多吧熟人买卖,慢慢为发淘宝顾客,货真价实,童叟任欺,回头客也未掉,生意还算是对。我和闺蜜忙碌着客服、接订单、收货、发货。工作时间闺蜜做的还多些,我得上班,我多是故业余时间客服与发货,总之,别看网店规模小,但五脏俱全,忙的不亦乐乎,但咱也各级一样笔画成功的交易及好评如欢欣鼓舞着。同事同学对我于劳作之衍出只局表示羡慕,纷纷来问我怎么开店,我吗把团结明白之学问,走过的弯路知无不称之享用给她们。

现依据自家整理的有些异地方,和豪门大快朵颐讨论: 

       
有天,有同事跟自己说,老板知道乃开店的业务了,不极端开心,觉得这么耽误工作,影响啊坏。讲真,真不延误工作,大多数白天之客服工作且摸闺蜜,我使用中午或晚上下班装货发货,大多数情形闺蜜发货,再说有时候出订单,有时候几上还不曾。

1)特殊字符

       
有几乎糟我们从美国寄回去的事物叫捐了,闺蜜以及先生跑了几许个上午才从海关排队到税款把东西来回来。东西大量投给海关拦截下来的可能性还胜,还好我们的营业所为无走量。

每种数据库,基本上在操作SQL语句被,都出和好之片特殊的隔符号,如防止和重要性字重名的奇特引用字符,SqlServer是[],
这点Sqlite也沿用这个。参数化语词的占据位符,SqlServer和Access是@,Oracle是:,而Sqlite则支持$和@。

       
某宝上时时有人向我们销售她们之假化妆品,低价,我们祖祖辈辈都不容。我们无举行假货,所以价格自然比假货高,有些店出售半着实半假的勾兑品,价格为不及,我们以价钱达成确实没优势。

2)获取返回刚刚插入的主键字段值(自增长)

       
我们不停的拍摄、上架、下架、包货、客服……虽然事情不多,但真心累成狗;遇到不同评师、不友善的孤老非说是赝品、快递爆仓物流延期与嫖客和快递小哥周旋,各种心酸只有做过的美貌知道。有几次网上报道某宝店主了劳死绝对免是惊心动魄。如果有人认为朝九晚五的上班太辛苦,想自己开班单店轻松些,那我当这想法就是最为天真了,自己假如算开店谋生,我想使较由点滴独工都累吧!我开过网店后,就特意理解做事情的食指累的远在。

这种操作为是经常使用的,一般Sqlserver是故SELECT
SCOPE_IDENTITY() 语句操作,Access用之凡SELECT
@@IDENTITY,Oracle由于用的是行,所以是SELECT Seq_TestTable.Currval ID
From Dual这样的操作,Sqlite呢,他吗发生友好之非常语句了,就是:Select
LAST_INSERT_ROWID() ,是勿是比便于记住也。

       
后来我们在美国那里的代表购人不思做了,我和闺蜜综合考虑了网店情势,在此网店经营了少年差不多随后做了少已代购的操纵,这个时咱们的网店信誉已经四粒小钻。

3)Limit语句以

       
做这个店铺总体来说是喜气洋洋的。我同闺蜜三观契合、彼此信任,做工作的有数年被经持续的交流,相互鼓励,增进了友情,我也自它们身上学到了多处世做事的点子;在召开网店客服过程中,我学会了广大化妆品行业之专业英语词汇,客服技巧,护肤知识,商品真假辨识等学问;为了经营好企业,我嫌补了少时欧美奢侈品知识,各家经典款,自身的过带品味提高了诸多。我居然还请了《促销的原形:沃尔玛创始人山姆·沃尔顿自传》,看看我们商家能起沃尔玛的经营方式中赢得到什么启示。

于SqlServer中,我们常常因此Top语句来操作数据,以便赢得必要的记录信息,这个以Sqlite不支持之,而它和MySql一样,是使LIMIT语句子来落实平等的效力,下面就是自个儿Winform开发框架中,获取第一修记下与尾声一条记下的基类方法,我当此间享受一下。

       
虽然咱的网店最终为从不成为沃尔玛,盈利也未多,最终还关闭了,但自我一直都庆幸自己开了当时起事情。

        /// <summary>
        /// 查找记录表中极原始的一模一样长长的记下
        /// </summary>
        /// <returns></returns>
        public override T FindFirst()
        {
            string sql = string.Format(“Select {0} From {1} Order by {2} ASC LIMIT 1”, selectedFields, tableName, GetSafeFileName(sortField));
            T entity = null;

       
2012年之感恩节那天,闺蜜被自己在QQ上发了一如既往段话,大意是说感恩我们出缘能做些一直想做的政,这些自迄今还记忆。我眷恋使我与闺蜜不错过举行就桩业务,那我们永远都是想呀想呀把其算梦想,你失去开了意识无适当,嗯,梦想可以换成下一个了。换句话来说,我们的期实现了,我们于大多数总人口且有幸。

            Database db = CreateDatabase();
            DbCommand command = db.GetSqlStringCommand(sql);

       
在召开了这宗工作后,我当生意都是产生相同之处的,比如要发生上我之想望是始平寒咖啡店的上,我起码先会选址、计算人流量、找准顾客定位、制定商品品质、想吓营销手段、预计单日订单数,不至于真的头脑一热就去做了,也能抓好足够的身体以及心理准备。换句话说,我先兑现了底冀望吗本人事后再也去实现产一个可望奠定了迟早之根基。

            using (IDataReader dr = db.ExecuteReader(command))
            {
                if (dr.Read())
                {
                    entity = DataReaderToEntity(dr);
                }
            }
            return entity;
        }

       
记得网上发出个调查,对于60年度以上的口,调查他们60年底人生最后后悔的作业是啊?出乎意料,收到的结果统计,被查的人头大多数还勾了忏悔没有开某起业务,而非是忏悔做了某件事情。

        /// <summary>
        /// 查找记录表中流行的同样久记下
        /// </summary>
        /// <returns></returns>
        public override T FindLast()
        {
            string sql = string.Format(“Select {0} From {1} Order by {2} DESC LIMIT 1”, selectedFields, tableName, GetSafeFileName(sortField));
            T entity = null;

       
我回忆并无增长的人生经验,我真正为从未后悔做了之各级一样项事情。我没有后悔自己开了之各一个选择,我吧从来不后悔交了之每一个朋友,即使有人真正彻彻底底伤过我之胸臆。我思的凡后悔没有早踏踏实实学英语,没准现在会晤发展的重复好;后悔没有多读些书,那样的话现在眼界会又有望些;后悔没有早几年开始询问护肤知识,这样能要青春不要痘……

            Database db = CreateDatabase();
            DbCommand command = db.GetSqlStringCommand(sql);

       
绝大多数状况咱无见面后悔做了呀,而是后悔没有开。当然现在知晓并无晚,毕竟种同等蔸树最好的时是十年前,其次是现在。

            using (IDataReader dr = db.ExecuteReader(command))
            {
                if (dr.Read())
                {
                    entity = DataReaderToEntity(dr);
                }
            }
            return entity;

 
      } 

4、分页实现

前我介绍了同一篇稿子,介绍做了Sqlite语句分页逻辑的分页控件,随笔名称是《Winform分页控件更新的集成Sqlite数据库分页》,其实Sqlite分页逻辑吗无暧昧,无非也是应用Limit语句实现所需要的记录得,如下所示。

        /// <summary>
        /// 不借助让储存过程的分页(SQLite)
        /// </summary>
        /// <param name=”isDoCount”>如果isDoCount为True,返回总数统计Sql;否则回分页语句Sql</param>
        /// <returns></returns>
        private string GetSQLiteSql(bool isDoCount)
        {
            string sql = “”;
            if (string.IsNullOrEmpty(this.strwhere))
            {
                this.strwhere = ” (1=1) “;
            }

            if (isDoCount)//执行总额统计
            {
                sql = string.Format(“select count(*) as Total from {0} Where {1} “, this.TableOrSqlWrapper, this.strwhere);
            }
            else
            {
                //SELECT * FROM 表名称 LIMIT M,N 
                string strOrder = string.Format(” order by {0} {1}”, this.fieldNameToSort, this.isDescending ? “DESC” : “ASC”);

                int minRow = pageSize * (pageIndex – 1);
                int maxRow = pageSize * pageIndex;
                sql = string.Format(“select {0} from {1} Where {2} {3} LIMIT {4},{5}”,
                    fieldsToReturn, this.TableOrSqlWrapper, this.strwhere, strOrder, minRow, maxRow);
            }

            return sql;

 
      }