亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

流水號獲取的解決方案

2019-11-17 02:44:41
字體:
來源:轉載
供稿:網友

流水號獲取的解決方案

  流水號的獲取在單機版的程序中只需要簡單的遞增就可以解決。但是在分布式系統中存在多個客戶端同時請求同一個流水號的問題,如果處理不好容易導致多個客戶端獲得同一個流水號。

解決方案一

  在Oracle數據庫中有專門的序列管理sequence,具體的介紹在網上可以找到很多。但是在實際使用中存在很多的問題:

    1、如果有很多個不同的序列,并且在需要根據時間變化(每天0點重置)時處理起來很麻煩。

    2、隨時間增加數據庫中的序列越來越多。

    3、在首次創建一個序列的時候需要激活后才能正常使用。

  所以果斷放棄了這個方案。

解決方案二

  大體的思路:在數據庫中專門建一個表存儲各類的序列,在服務器端創建一個服務專門提供各類序列當前的流水號??蛻舳送ㄟ^這個服務來獲取序列,不能直接去數據庫中查

  第1步:在數據庫中專門創建一個新的表用來存儲這些序列。表結構如下:

    1、FLAG(標志碼 主鍵):代表序列的標志

    2、Sequence(當前的流水號):默認為0

    3、UpdateTime(更新時間):根據自己的需要來創建

  第2步:先創建一些接口

    1、數據服務的接口      

 1  public interface IDataOperator 2     { 3         int ExecuteNonQuery(List<string> list); 4         int ExecuteNonQuery(string strSql); 5         int ExecuteNonQuery(List<string> list, ref string strError); 6         int ExecuteNonQuery(string strSql, ref string strError); 7         T ExecuteScalar<T>(string strSql); 8         T ExecuteScalar<T>(string strSql, ref string strError); 9         DataSet GetDataSet(string strSql);10         DataSet GetDataSet(string strSql, ref string strError);11         DataTable GetDataTable(string strSql);12         DataTable GetDataTable(string strSql, ref string strError);13     }
View Code

    2、流水號的接口

1   public interface ISequence2     {3         int GetNext(string strFlag);4     }
View Code

 第3步:在服務器端創建一個服務,這個服務有兩個功能。我這邊客戶端和服務端的通信用的是Remoting技術。這里就不展示相關的代碼了。

    1、做客戶端的數據中轉,直接和數據庫服務器之間通信,

  1   public class SqlServer : MarshalByRefObject,IDataOperator  2     {  3         #region 私有字段  4         PRivate string strConn;  5         #endregion  6         /// <summary>  7         /// 構造器  8         /// </summary>  9         public SqlServer () 10         { 11                         strConn = string.Format(@"User ID={0};PassWord={1};Data Source={2};Pooling=true;Min Pool Size=0;Max Pool Size={3};", 12                                    “”, 13                                  “”, 14                                   “” 15                                  “”; 16              17         } 18         /// <summary> 19         /// 打開數據庫連接 20         /// </summary> 21         /// <param name="strError">返回錯誤信息</param> 22         /// <returns></returns> 23         public bool OpenTest(ref string strError) 24         { 25             bool blResult = false; 26             try 27             { 28                 using (SqlConnection conn = new SqlConnection(strConn)) 29                 { 30                     conn.Open(); 31                     conn.Close(); 32                 } 33                 blResult = true; 34             } 35             catch(Exception ex) 36             { 37                 strError = ex.Message; 38             } 39             return blResult; 40         } 41         /// <summary> 42         /// 執行一個SQL語句集合返回操作成功數 43         /// </summary> 44         /// <param name="strsql"></param> 45         /// <param name="parameter"></param> 46         /// <returns></returns> 47         public int   ExecuteNonQuery(List<string> list, ref string strError) 48         { 49             int intResult = 0; 50             int i = 0; 51             if (list.Count > 0) 52             { 53                 try 54                 { 55                     using (SqlConnection conn = new SqlConnection(strConn)) 56                     { 57                        58                         conn.Open(); 59                         SqlTransaction tran = conn.BeginTransaction(); 60  61                         try 62                         { 63                             using (SqlCommand cmd = conn.CreateCommand()) 64                             { 65                                 cmd.Transaction = tran; 66                                 for (i = 0; i < list.Count; i++) 67                                 { 68                                    cmd.CommandText = list[i].Trim();  69                                     intResult+= cmd.ExecuteNonQuery(); 70                                 } 71                                 tran.Commit(); 72                             } 73                            74                         } 75                         catch (Exception ex) 76                         { 77                             try 78                             { 79                                 intResult = -1; 80                                 tran.Rollback(); 81  82                                 strError = 83                                     string.Format("{0}個操作回滾成功!{1}/r/n ErrSQL:/r/n   {2}", 84                                       i, ex.Message, list[i]); 85                             } 86                             catch(Exception ex2) 87                             { 88                                 intResult = -2; 89                                 strError = 90                                       string.Format("{0}個操作回滾失敗!{1}/r/n ErrSQL:/r/n   {2}", 91                                         i, ex2.Message, list[i]); 92                             } 93                         } 94                         finally 95                         { 96                             conn.Close(); 97                         } 98                     } 99                 }100                 catch (SqlException ex)101                 {102 103                     strError = ex.Message;104                 }105                106             }107             else108             {109                 strError = string.Format("ExecuteNonQuery(List<string> list):未傳入需要執行的SQL語句");110             }111             return intResult;112 113         }114         /// <summary>115         /// 執行一個SQL語句集合返回操作成功數116         /// </summary>117         /// <param name="strsql"></param>118         /// <param name="parameter"></param>119         /// <returns></returns>120         public int  ExecuteNonQuery(List<string> list)121         {122             int intResult = 0;123             int i = 0;124             if (list.Count > 0)125             {126                 using (SqlConnection conn = new SqlConnection(strConn))127                 {128                     conn.Open();129                     SqlTransaction tran = conn.BeginTransaction();130                     using (SqlCommand cmd = conn.CreateCommand())131                     {132                         try133                         {134                             cmd.Transaction = tran;135                             for (i = 0; i < list.Count; i++)136                             {137                                 cmd.CommandText = list[i].Trim(); 138                                 intResult += cmd.ExecuteNonQuery();139
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产丝袜一区视频在线观看| 91久久精品一区| 亚洲精品久久久久中文字幕欢迎你| 国产成人啪精品视频免费网| 91经典在线视频| 久久成人精品电影| 91福利视频在线观看| 日韩av网站电影| 国内成人精品一区| 国产欧美va欧美va香蕉在| 精品国产乱码久久久久酒店| 欧美重口另类videos人妖| 精品国产1区2区| 亚洲精品ady| 动漫精品一区二区| 亚洲国产精品美女| 国产精品你懂得| 欧美日韩国产中文精品字幕自在自线| 久久福利网址导航| 久久99精品久久久久久琪琪| 精品久久久久久久大神国产| 亚洲国产小视频在线观看| 欧美精品18videosex性欧美| 影音先锋欧美在线资源| 国产精品国内视频| 色诱女教师一区二区三区| 国产成人亚洲综合91| 国产欧美一区二区三区在线| 最近2019中文免费高清视频观看www99| 亚洲网址你懂得| 国产精品免费网站| 久久亚洲私人国产精品va| 欧美多人爱爱视频网站| 欧美国产乱视频| 国产精品视频一区二区高潮| 欧洲成人在线视频| 国产一级揄自揄精品视频| 亚洲已满18点击进入在线看片| 久久亚洲影音av资源网| 欧美日韩国产999| 久久91精品国产91久久跳| 超薄丝袜一区二区| 亚洲国产高清高潮精品美女| 亚洲激情在线视频| 亚洲在线观看视频网站| 亚洲a级在线播放观看| 国产精品久久久久久久久久免费| 少妇久久久久久| 久精品免费视频| 亚洲天堂免费视频| 伊人久久久久久久久久久| 91爱爱小视频k| 日韩禁在线播放| 亚洲激情视频在线观看| 欧美日韩精品在线| 国产精品免费福利| 69视频在线播放| 中文字幕日韩精品在线观看| 日韩在线播放av| 日韩美女福利视频| 国产啪精品视频网站| 中国china体内裑精亚洲片| 欧洲精品久久久| 中文一区二区视频| 欧美日在线观看| 亚洲精品国精品久久99热| 国产精品老女人精品视频| 日韩美女在线观看一区| 国产激情久久久| 日韩精品视频免费专区在线播放| 国产精品久久久久国产a级| 欧美一级片在线播放| 日韩中文字幕在线视频| 欧美电影免费观看电视剧大全| 色综合伊人色综合网| 九九热精品视频国产| 亚洲第一偷拍网| 久久亚洲综合国产精品99麻豆精品福利| 色吧影院999| 欧美黑人性生活视频| 亚洲国语精品自产拍在线观看| 亚洲精品午夜精品| 亚洲国产精品嫩草影院久久| 日本一区二区三区四区视频| 成人h视频在线观看播放| 91系列在线播放| 国产精品劲爆视频| 亚洲春色另类小说| 精品国产一区二区三区四区在线观看| 国产精品男人爽免费视频1| 日韩欧美精品在线观看| 亚洲免费一级电影| 亚洲最大在线视频| 在线电影av不卡网址| 久久精品国产亚洲| 成人免费福利在线| 91福利视频在线观看| 韩剧1988免费观看全集| 国产精品va在线播放我和闺蜜| 亚洲精品第一国产综合精品| 欧美又大粗又爽又黄大片视频| 国产精品久久久久高潮| 午夜精品蜜臀一区二区三区免费| 国产精品久久久av| 亚洲精品久久久久久久久| 欧美福利小视频| 久久久久久久影视| 亚洲福利精品在线| 国产精品xxx视频| 精品成人国产在线观看男人呻吟| 久久影院资源站| 欧美在线视频观看免费网站| 亚洲精品中文字幕av| 欧美黑人一级爽快片淫片高清| 久久综合网hezyo| 色综合天天狠天天透天天伊人| 亚洲人成网站在线播| 国产精品一区=区| 欧美性jizz18性欧美| 欧美制服第一页| 国产一区二区三区毛片| 国内偷自视频区视频综合| 欧美理论在线观看| 久久久在线观看| 18性欧美xxxⅹ性满足| 国产午夜精品免费一区二区三区| 精品露脸国产偷人在视频| 国产亚洲人成网站在线观看| 欧美精品性视频| 亚洲国产中文字幕久久网| 精品国产91久久久| 亚洲精品久久在线| 日韩黄色av网站| 日韩国产激情在线| 中文字幕日韩精品有码视频| 91tv亚洲精品香蕉国产一区7ujn| 国产精品第一视频| 国产精品久久久久久久app| 久久黄色av网站| 国产视频在线一区二区| 在线视频亚洲欧美| 国产91在线高潮白浆在线观看| 成人激情视频小说免费下载| 91免费国产视频| 韩国欧美亚洲国产| 日韩免费在线看| 在线精品播放av| 久久伊人精品一区二区三区| 欧美日韩免费区域视频在线观看| 亚洲人成在线观看网站高清| 91精品视频一区| 久久躁日日躁aaaaxxxx| 91久久在线播放| 欧洲日本亚洲国产区| 欧美日韩在线免费观看| 欧美一级电影在线| 国产亚洲一区二区精品| 中日韩美女免费视频网站在线观看| 26uuu另类亚洲欧美日本一| 97久久精品国产| 欧美日韩一区免费| www欧美xxxx| 日韩欧美一区二区在线| 伊人av综合网|