欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

[原創(chuàng),分享]DbHelper 續(xù)

系統(tǒng) 1907 0

一直在想怎么樣才能讓dbHelper更簡單,更靈活,更僵化。終于我發(fā)布了第一個開源版本的dbhelper.此helper將使用System.Data.DbHelper作為命名空間。采用內(nèi)部驅動與內(nèi)容Session的方式來進行管理。而作為使用者,你只需要作兩件事情。1、注冊一個驅動;2、繼承Dal創(chuàng)建自己的數(shù)據(jù)處理層。Dbhelper在進行事務操作時需要使用Lock來開啟事務;Unlock提交事務。當出錯時自動進行事務回滾(獲立事務的Dal除外)。多個Dal可以通過Group()方法將事務進行統(tǒng)一(即使驅動不同)。若存在多層嵌套關系,且每個Dal都有Lock,那么事務以最外層的為準。

調(diào)用方法很簡單

1、注冊驅動

                  DbService.Instance.RegistDriver(
      
        "
      
      
        sql
      
      
        "
      
      , config.Sql, 
      
        typeof
      
      
         (SqlHelper));

            DbService.Instance.RegistDriver(
      
      
        "
      
      
        oracle
      
      
        "
      
      , config.Oracle, 
      
        typeof
      
      (MsOracleHelper));
    

2、普通查詢

      
        public
      
      
         DataTable GetSource(DateTime time)

        {

            
      
      
        var
      
       sql = 
      
        new
      
      
         StringBuilder()

                .Append(
      
      
        "
      
      
         select checktime,sn_name,badgenumber 
      
      
        "
      
      
        )

                .Append(
      
      
        "
      
      
         FROM checkinout c
      
      
        "
      
      
        )

                .Append(
      
      
        "
      
      
         LEFT join userinfo u
      
      
        "
      
      
        )

                .Append(
      
      
        "
      
      
         ON c.userid = u.userid
      
      
        "
      
      
        )

                .AppendFormat(
      
      
        "
      
      
         WHERE CONVERT(VARCHAR(10),c.checktime,23)= '{0}'
      
      
        "
      
      , time.ToString(
      
        "
      
      
        yyyy-MM-dd
      
      
        "
      
      
        ));

            CommandText 
      
      =
      
         sql.ToString();

            
      
      
        return
      
      
         GetDataTable();

        }
      
    

3、參數(shù)化提交

      
        public
      
      
        bool
      
      
         SyncCardPress(DataTable source,DateTime time)

        {

            
      
      
        if
      
       (source == 
      
        null
      
       || source.Rows.Count == 
      
        0
      
      ) 
      
        return
      
      
        true
      
      
        ;

            Lock();

            
      
      
        var
      
       d = time.ToString(
      
        "
      
      
        yyyy-MM-dd
      
      
        "
      
      
        );

            CommandText 
      
      = 
      
        string
      
      .Format(
      
        "
      
      
        delete FROM TB_ROLL_RECORD r WHERE to_char(r.presstime,'yyyy-mm-dd') = '{0}'
      
      
        "
      
      
        ,d);

            ExecuteNonQuery();

            CommandText 
      
      = 
      
        "
      
      
        INSERT INTO TB_ROLL_RECORD VALUES(:userId,:machine,to_date(:pressTime,'yyyy-mm-dd hh24:mi:ss'),sysdate)
      
      
        "
      
      
        ;

            
      
      
        var
      
       userId = AddParameter<OracleParameter>(
      
        "
      
      
        userid
      
      
        "
      
      
        );

            
      
      
        var
      
       machine = AddParameter<OracleParameter>(
      
        "
      
      
        machine
      
      
        "
      
      
        );

            
      
      
        var
      
       presstime = AddParameter<OracleParameter>(
      
        "
      
      
        pressTime
      
      
        "
      
      
        );

            
      
      
        foreach
      
       (DataRow row 
      
        in
      
      
         source.Rows)

            {

                userId.SetValue(row.To
      
      <
      
        string
      
      >(
      
        "
      
      
        badgenumber
      
      
        "
      
      ).TrimStart(
      
        '
      
      
        0
      
      
        '
      
      ).PadLeft(
      
        4
      
      , 
      
        '
      
      
        0
      
      
        '
      
      
        ));

                machine.SetValue(row.To
      
      <
      
        string
      
      >(
      
        "
      
      
        sn_name
      
      
        "
      
      
        ));

                presstime.SetValue(row.To
      
      <DateTime>(
      
        "
      
      
        checktime
      
      
        "
      
      
        ).ToDateTimeString());

                ExecuteNonQuery();

                
      
      
        if
      
       (!
      
        Success)

                {

                    Debug.WriteLine(Error.Message);

                    
      
      
        break
      
      
        ;

                }

            }

            UnLock();

            
      
      
        return
      
      
         Success;

        }
      
    

?

4、使用存儲過程

      
        public
      
      
        void
      
      
         Calc(DateTime time)

        {

            CommandText 
      
      = 
      
        "
      
      
        CalcAttendanceByDay
      
      
        "
      
      
        ;

            CommandType 
      
      =
      
         CommandType.StoredProcedure;

            AddParameter
      
      <OracleParameter>(
      
        "
      
      
        xType
      
      
        "
      
      ).SetValue(
      
        1
      
      
        );

            AddParameter
      
      <OracleParameter>(
      
        "
      
      
        xIds
      
      
        "
      
      ).SetValue(
      
        ""
      
      
        );

            AddParameter
      
      <OracleParameter>(
      
        "
      
      
        xDay
      
      
        "
      
      ).SetValue(time.AddDays(-
      
        1
      
      
        ));

            AddParameter
      
      <OracleParameter>(
      
        "
      
      
        xCmt
      
      
        "
      
      ).SetValue(
      
        1
      
      
        );

            Lock();

            ExecuteNonQuery();

            UnLock();

        }
      
    

5、說明

發(fā)布版本已經(jīng)去掉對CommanText的直接賦值方法,改為Prepare(.....)來進行

6、哪里有下載 點擊這里

好了,祝大家使用愉快。

?

[原創(chuàng),分享]DbHelper 續(xù)


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩中文在线观看 | 色综色天天综合网 | 午夜精品一区二区三区免费视频 | 亚洲成人黄色 | 91免费在线看 | 国产片自拍 | 日本午夜免费无码片三汲大片 | 在线国产一区二区 | 日韩午夜伦y4480私人影院 | 久久久久日韩精品免费观看网 | 日产中文字乱码卡一卡二视频 | 热er99久久6国产精品免费 | 中文字幕日韩精品在线 | 国产真实乱freesex | 日本欧美人xxxxx在线观看 | 欧美成人生活片 | 亚洲精品97福利在线 | 免费一区| 三级理论中文字幕在线播放 | 欧美日韩亚洲综合另类ac | 亚洲精品在线免费 | 婷婷色综合久久五月亚洲 | 国产欧美精品午夜在线播放 | 欧美黑人性受xxxx喷水 | 精品久久久久久无码中文字幕 | 久久精品a一级国产免视看成人 | 91在线 | porny | 欧美 | 国产激情久久久久久熟女老人AV | 夜夜爱网站 | 9久久99久久久精品齐齐综合色圆 | 一级做a爰性视频 | 亚洲成人福利在线观看 | 久久久亚洲一区 | 国产精品久久久久久久一区探花 | 九九资源站 | 污视频在线免费 | 欧美1024性视频 | 欧美日韩在线一区 | 欧美成人在线免费 | 欧美在线精品一区二区在线观看 | 牛和人交vide○s欧美 |