說明的說明:
?
博客園團隊兩次移此文出首頁,說
這篇文章不屬于知識分享型文章,并且有廣告嫌疑。本文的確屬于分享型文章,而且分享的知識點比其它文章都多很多,看看網友回復“謝謝分享”就知道是分享型文章了。
?
所謂廣告嫌疑,這東西一被扣上,就很難說的清。
本框架從2007年就始發布在博客園,一直更新維護到現在,其中是有過渡到最新版本是收費,但是仍保留開放很多版本的開源的。
但目前發布的,都是開源的免費版本,再說,涉及到收費就是廣告?ext也有收費版本,出現ext相關文章你咋不說是廣告?
win8,wp8你用的windows都是收費的,相關的文章你是不是也要說廣告??
?
話也不我說,這么久沒寫文章,露臉少了,欺負我新人是不? 你再欺負我,欺負我,我。。。。只好沉默了。
?
前言:
?
好久沒寫文章了,最近習慣了寫微博,發微博,都是140字以內+張圖片,偶爾發一發,也偶爾在閃存里閃一閃。
以前天天寫博客時,閉上眼也能寫的很長很長,這人長久不寫博客時,一拖再拖也只能迸出那么點字,悲劇的習慣!
?
在開源的這條路上,走過了很久很久,有一些想法,也麻木到沒有想法。
每當上園子來,看到開源的相關文章,我都會盡力的頂上一頂,但是總會發現下面的評論,是負面聲音一片,除了留下郵箱才能發源碼的那種。
之后的一段時間,很少再看到博主會堅持的不怕罵聲的繼續發布或更新開源文章,少但不排除沒有。?
目前就這種現狀,各位開源流的博主,還是要頂住罵聲往前走!大帝保佑你們!?
正文:
?
本次開源?CYQ.Data?數據框架 V4.0 開源版本,具體下載地址:http://www.cyqdata.com/download/article-detail-426
本人對研究本框架的人士持續提供技術支持,技術指導。
?
學習本框架,至少您能學到如何真正做到多對數據庫的支持,和各種數據庫的差異性語法(那些說支持多數據庫,只有接口卻等你去實現的都是浮云,因為實現過才知道,差異性的兼容才是最麻煩的,框架的開發者把最麻煩的事留給你,卻對你說支持多種數據庫,這是多悲劇的事,有能力實現差異性兼容,估計你也有能力寫出自己的框架了)。
?
這也將成為您往后編寫自己的框架的資本,研究并掌握底層的框架有助于你成長為高級人士,獲得更豐富的待遇。
園子里已經有很多同學參考并學習了源碼,編寫出屬于自己個性的框架,您還等待什么?
框架截圖:
?
?
具體的更新記錄,在源碼里就有了,這里就不重復的又貼一大堆文字出來了。?
?
這里貼一段開源的代碼中的Json操作類代碼,避免博客園工作人員誤操作:
?
????{
????????///?<summary>
????????///?是否成功???
????????///?</summary>
????????public?bool?Success
????????{
????????????get
????????????{
????????????????return?count?>?0;
????????????}
????????}
????????private?string?errorMsg?=?"";
????????///?<summary>
????????///?錯誤提示信息???
????????///?</summary>
????????public?string?ErrorMsg
????????{
????????????get
????????????{
????????????????return?errorMsg;
????????????}
????????????set
????????????{
????????????????errorMsg?=?value;
????????????}
????????}
????????private?int?count?=?0;
????????///?<summary>
????????///?總記?
????????///?</summary>
????????public?int?Count
????????{
????????????get
????????????{
????????????????return?count;
????????????}
????????????set
????????????{
????????????????count?=?value;
????????????}
????????}
????????private?List<string>?arrData?=?new?List<string>();
????????#region?對象與對象之間分割符
????????public?void?addItemOk()
????????{
????????????arrData.Add("<br>");
????????}
????????#endregion
????????#region?在數組里添加key,value
????????public?void?addItem(string?name,?string?value)
????????{
????????????arrData.Add("\""?+?name?+?"\":"?+?"\""?+?value?+?"\"");
????????}
????????#endregion
????????#region?返回組裝好的json字符串
????????public?override?string?ToString()
????????{
????????????StringBuilder?sb?=?new?StringBuilder();
????????????sb.Append("{");
????????????sb.Append("\"count\":\""?+?count?+?"\",");
????????????sb.Append("\"error\":\""?+?errorMsg?+?"\",");
????????????sb.Append("\"success\":\""?+?(Success???"true"?:?"")?+?"\",");
????????????sb.Append("\"data\":[");
????????????int?index?=?0;
????????????sb.Append("{");
????????????if?(arrData.Count?<=?0)
????????????{
????????????????sb.Append("}]");
????????????}
????????????else
????????????{
????????????????foreach?(string?val?in?arrData)
????????????????{
????????????????????index++;
????????????????????if?(val?!=?"<br>")
????????????????????{
????????????????????????sb.Append(val?+?",");
????????????????????}
????????????????????else
????????????????????{
????????????????????????sb?=?sb.Replace(",",?"",?sb.Length?-?1,?1);
????????????????????????sb.Append("},");
????????????????????????if?(index?<?arrData.Count)
????????????????????????{
????????????????????????????sb.Append("{");
????????????????????????}
????????????????????}
????????????????}
????????????????sb?=?sb.Replace(",",?"",?sb.Length?-?1,?1);
????????????????sb.Append("]");
????????????}
????????????sb.Append("}");
????????????return?sb.ToString();
????????}
????????#endregion
????????#region?為DataTable增加處理
????????public?void?Fill(MDataTable?table)
????????{
????????????if?(table?==?null)
????????????{
????????????????ErrorMsg?=?"查詢對象為Null";
????????????????return;
????????????}
????????????Count?=?table.Rows.Count;
????????????for?(int?i?=?0;?i?<?table.Rows.Count;?i++)
????????????{
????????????????for?(int?j?=?0;?j?<?table.Columns.Count;?j++)
????????????????{
????????????????????addItem(table.Columns[j].ColumnName,?Convert.ToString(table.Rows[i][j].Value));
????????????????}
????????????????addItemOk();
????????????}
????????}
????????public?MDataTable?Load(string?json)
????????{
????????????MDataTable?table?=?new?MDataTable("loadFromJson");
????????????if?(!string.IsNullOrEmpty(json)?&&?json.Length?>?30?&&?json.StartsWith("{")?&&?json.IndexOf(',')?>?-1?&&?json.EndsWith("}"))
????????????{
????????????????try
????????????????{
????????????????????int?start=json.IndexOf(":[{")?+?2;
????????????????????string?data?=?json.Substring(start,?json.LastIndexOf("]}")?-?start);
????????????????????data?=?data.Replace("\\}",?"#100#").Replace("\\,",?"#101#").Replace("\\:,",?"#102#");
????????????????????bool?isOK=false;
????????????????????if?(!string.IsNullOrEmpty(data))
????????????????????{
????????????????????????string[]?items?=?data.Replace("{",string.Empty).Split('}');//分隔每一行
????????????????????????string?item?=?string.Empty,?key?=?string.Empty,?value?=?string.Empty;
????????????????????????for?(int?i?=?0;?i?<?items.Length;?i++)//循環每一行數據
????????????????????????{
????????????????????????????item?=?items[i].Replace("#100#",?"\\}").Trim(',');
????????????????????????????if?(string.IsNullOrEmpty(item))
????????????????????????????{
????????????????????????????????continue;
????????????????????????????}
????????????????????????????string[]?keyValues?=?item.Split(',');
????????????????????????????string?keyValue?=?string.Empty;
????????????????????????????if?(i?==?0)
????????????????????????????{
????????????????????????????????for?(int?j?=?0;?j?<?keyValues.Length;?j++)
????????????????????????????????{
????????????????????????????????????keyValue?=?keyValues[j].Replace("#101#",?"\\,");
????????????????????????????????????key?=?keyValue.Split(':')[0].Trim('\'',?'\"');
????????????????????????????????????table.Columns.Add(key,?SqlDbType.NVarChar);
????????????????????????????????}
????????????????????????????????isOK=true;
???????????????????????????????
????????????????????????????}
????????????????????????????if?(isOK)
????????????????????????????{
????????????????????????????????MDataRow?row?=?table.NewRow();
????????????????????????????????for?(int?k?=?0;?k?<?keyValues.Length;?k++)
????????????????????????????????{
????????????????????????????????????keyValue?=?keyValues[k].Replace("#101#",?"\\,");
????????????????????????????????????if?(keyValue.IndexOf(':')?>?-1)
????????????????????????????????????{
????????????????????????????????????????value?=?keyValue.Substring(keyValue.IndexOf(':')+1).Replace("#102#",?"\\:").Trim('\'',?'\"');
????????????????????????????????????????row[k].Value?=?value;
????????????????????????????????????}
????????????????????????????????}
????????????????????????????????table.Rows.Add(row);
????????????????????????????}
????????????????????????}
????????????????????}
????????????????}
????????????????catch
????????????????{
????????????????????return?table;
????????????????}
????????????}
????????????return?table;
????????}
????????#endregion
????}
?
?
本版本為秋色園V2.0和V2.5對應的框架版本,為了促進國內ASP.NET開源博客更進一步和諧,近期將跳過2.0版本開源秋色園V2.5多用戶版本。
?
秋色園系列原理文章網上都很多了,想學習的同學就不要錯過了:http://www.cnblogs.com/cyq1162/archive/2010/12/14/1905776.html
這里也有51cto大賽的參賽頁面,感謝路過的朋友也順手扔一票:http://blog.51cto.com/contest2012/2127378?
?
版權聲明:本文原創發表于博客園,作者為路過秋天,原文鏈接:
http://www.cnblogs.com/cyq1162/archive/2012/10/31/2747976.html