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

一點構想-直觀的強類型的SQL查詢的一種實現(xiàn)

系統(tǒng) 2335 0
??? 看過很多強類型查詢的實現(xiàn),覺得通過層層嵌套的方法來構造,感覺很不直觀,昨天下午花了點時間寫了個驗證的代碼,現(xiàn)在發(fā)上來大家看看這樣子實現(xiàn)的查詢方便不方便,有什么問題,因為是突發(fā)奇想,所以未經過嚴格驗證,所以如果發(fā)現(xiàn)問題請溫柔提出.
??? 這里只是個驗證想法的代碼,所以沒有作任何容錯和擴展性處理.也不要提出OO不OO的看法,毫無疑義.
??? 我所設想的是一個查詢 Select [Columnlist] From [TableName] Where [Exp] Order By [PK] 一般來說是這個格式,我們最難表述的其實就是[Exp]這個部分。前面的都比較格式化,所以可以通過嵌套方法來實現(xiàn)還是比較合適的,但是[Exp]這個部分用諸如AND(Exp1,Exp2)這樣子的形式不能很直觀的看出表達式的意義,所以通過重載操作符的方式來實現(xiàn),這里我們假設在Entity的Class里有static成員來存儲列的名稱。那么
????
???? Exp Rs=new Exp(User.ID) == 2 & new Exp(User.State) > 0 ;
????
??? ?這樣子的格式就能表達Where后面的?ID=2 AND State>0 這個表達式

???? 具體代碼如下

??1 ???? class ?Program
??2 ???? {
??3 ???????? static ? void ?Main( string []?args)
??4 ???????? {
??5
??6 ????????????Exp?rs? = ? new ?Exp( " C1 " )? == ? 25 ? & ? new ?Exp( " C2 " )? > ? 3 ? | ? new ?Exp( " C3 " )? < ? 5 ? ^ ? new ?Exp( " C4 " )? % ? " hehe " ;
??7 ????????????Console.WriteLine(rs.Sql);
??8 ???????????? foreach ?(SqlParameter?sp? in ?rs.Sps)
??9 ???????????? {
?10 ????????????????Console.WriteLine(sp.ParameterName);
?11 ????????????}

?12 ????????????Console.Read();
?13 ????????}

?14 ????}

?15
?16 ???? class ?Exp
?17 ???? {
?18 ???????? private ? string ?_Sql;
?19
?20 ???????? private ?List < SqlParameter > ?sps;
?21
?22 ???????? public ?List < SqlParameter > ?Sps
?23 ???????? {
?24 ???????????? get ? {? return ?sps;?}
?25 ???????????? set ? {?sps? = ?value;?}
?26 ????????}

?27
?28 ???????? private ?SqlParameter?sp;
?29
?30 ???????? public ? string ?Sql
?31 ???????? {
?32 ???????????? get ? {? return ?_Sql;?}
?33 ????????}

?34
?35 ???????? private ?Exp()
?36 ???????? {
?37 ????????????sps? = ? new ?List < SqlParameter > ();
?38 ????????}

?39
?40 ???????? public ?Exp( string ?CollumnName)
?41 ???????? {
?42 ????????????_Sql? = ?CollumnName;
?43 ????????}

?44
?45 ???????? public ? static ?Exp? operator ? == (Exp?Left,?Object?Value)
?46 ???????? {
?47 ????????????Exp?Next? = ? new ?Exp();
?48 ????????????Next.sp? = ? new ?SqlParameter(Left._Sql,?Value);
?49 ????????????Next.sps.Add(Next.sp);
?50 ????????????Next._Sql? = ?Left._Sql? + ? " ?=?@ " ? + ?Left.Sql;
?51 ???????????? return ?Next;
?52 ????????}

?53 ???????? public ? static ?Exp? operator ? != (Exp?Left,?Object?Value)
?54 ???????? {
?55 ????????????Exp?Next? = ? new ?Exp();
?56 ????????????Next.sp? = ? new ?SqlParameter(Left._Sql,?Value);
?57 ????????????Next.sps.Add(Next.sp);
?58 ????????????Next._Sql? = ?Left._Sql? + ? " ?<>?@ " ? + ?Left._Sql;
?59 ???????????? return ?Next;
?60 ????????}

?61
?62 ???????? public ? static ?Exp? operator ? < (Exp?Left,?Object?Value)
?63 ???????? {
?64 ????????????Exp?Next? = ? new ?Exp();
?65 ????????????Next.sp? = ? new ?SqlParameter(Left._Sql,?Value);
?66 ????????????Next.sps.Add(Next.sp);
?67 ????????????Next._Sql? = ?Left._Sql? + ? " ?<?@ " ? + ?Left._Sql;
?68 ???????????? return ?Next;
?69 ????????}

?70 ???????? public ? static ?Exp? operator ? > (Exp?Left,?Object?Value)
?71 ???????? {
?72 ????????????Exp?Next? = ? new ?Exp();
?73 ????????????Next.sp? = ? new ?SqlParameter(Left._Sql,?Value);
?74 ????????????Next.sps.Add(Next.sp);
?75 ????????????Next._Sql? = ?Left._Sql? + ? " ?>?@ " ? + ?Left._Sql;
?76 ???????????? return ?Next;
?77 ????????}

?78
?79 ???????? public ? static ?Exp? operator ? % (Exp?Left,?Object?Value)
?80 ???????? {
?81 ????????????Exp?Next? = ? new ?Exp();
?82 ????????????Next.sp? = ? new ?SqlParameter(Left._Sql,?Value);
?83 ????????????Next.sps.Add(Next.sp);
?84 ????????????Next._Sql? = ?Left._Sql? + ? " ?Like?@ " ? + ?Left._Sql;
?85 ???????????? return ?Next;
?86 ????????}

?87
?88 ???????? public ? static ?Exp? operator ? & (Exp?Left,?Exp?Right)
?89 ???????? {
?90 ????????????Exp?Next? = ? new ?Exp();
?91 ???????????? foreach ?(SqlParameter?sp? in ?Left.sps)
?92 ???????????? {
?93 ????????????????Next.sps.Add(sp);
?94 ????????????}

?95 ???????????? foreach ?(SqlParameter?sp? in ?Right.sps)
?96 ???????????? {
?97 ????????????????Next.sps.Add(sp);
?98 ????????????}

?99 ????????????Next._Sql? = ?Left.Sql? + ? " ?AND? " ? + ?Right.Sql;
100 ???????????? return ?Next;
101 ????????}

102
103
104 ???????? public ? static ?Exp? operator ? | (Exp?Left,?Exp?Right)
105 ???????? {
106 ????????????Exp?Next? = ? new ?Exp();
107 ???????????? foreach ?(SqlParameter?sp? in ?Left.sps)
108 ???????????? {
109 ????????????????Next.sps.Add(sp);
110 ????????????}

111 ???????????? foreach ?(SqlParameter?sp? in ?Right.sps)
112 ???????????? {
113 ????????????????Next.sps.Add(sp);
114 ????????????}

115 ????????????Next._Sql? = ?Left.Sql? + ? " ?OR? " ? + ?Right.Sql;
116 ???????????? return ?Next;
117 ????????}

118
119 ???????? public ? static ?Exp? operator ? ^ (Exp?Left,?Exp?Right)
120 ???????? {
121 ????????????Exp?Next? = ? new ?Exp();
122 ???????????? foreach ?(SqlParameter?sp? in ?Left.sps)
123 ???????????? {
124 ????????????????Next.sps.Add(sp);
125 ????????????}

126 ???????????? foreach ?(SqlParameter?sp? in ?Right.sps)
127 ???????????? {
128 ????????????????Next.sps.Add(sp);
129 ????????????}

130 ????????????Next._Sql? = ?Left.Sql? + ? " ?NOT? " ? + ?Right.Sql;
131 ???????????? return ?Next;
132 ????????}

133 ????}

134 ???

????

一點構想-直觀的強類型的SQL查詢的一種實現(xiàn)


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美大尺码毛片 | 在线观看特色大片免费网站 | 国产精品亚洲va在线观看 | 日韩电影免费观 | 亚洲成人精品久久 | 国产成人91高清精品免费 | 神马久久蜜桃 | 午夜久久久 | 亚洲美女综合 | 国产在线精品一区二区夜色 | 欧美一区二区免费电影 | 亚洲精品国精品久久99热 | 国产精品欧美一区二区在线看 | 国产精品冒白浆免费视频 | 污版视频在线观看 | 亚洲情a成黄在线观看动 | 亚洲成人午夜在线 | 欧美在线黄 | 斗罗破苍穹在线观看免费完整观看 | 国产精品网址在线观看你懂的 | 国产精品高清在线观看 | 午夜男人女人爽爽爽视频 | 2022国产成人精彩在线视频 | 国产综合在线播放 | 性夜影院爽黄a爽免费看网站 | 久在线观看视频 | 99国精产品一区二区三区A片 | 国产sm主人调教女m视频 | 日韩 综合 | 91视频在 | 久草视频福利在线观看 | 午夜电影网址 | 欧美视频不卡 | 久草热线视频 | 天天碰天天干 | 亚洲性人人天天夜夜摸 | 久久99热久久精品在线6 | 在线观看亚洲网站 | 成人欧美s视频在线观看 | 免费一级毛片不卡不收费 | 中文字幕乱码视频32 |