CYQ.Data 數據框架 V4.0 開源版本發布(源碼提供下載,秋色園V2.5版本標配框架)


說明的說明:

 

博客園團隊兩次移此文出首頁,說

這篇文章不屬於知識分享型文章,並且有廣告嫌疑。

本文的確屬於分享型文章,而且分享的知識點比其它文章都多很多,看看網友回復“謝謝分享”就知道是分享型文章了。

 

所謂廣告嫌疑,這東西一被扣上,就很難說的清。

本框架從2007年就始發布在博客園,一直更新維護到現在,其中是有過渡到最新版本是收費,但是仍保留開放很多版本的開源的。

但目前發布的,都是開源的免費版本,再說,涉及到收費就是廣告?ext也有收費版本,出現ext相關文章你咋不說是廣告?

win8,wp8你用的windows都是收費的,相關的文章你是不是也要說廣告? 

 

話也不我說,這么久沒寫文章,露臉少了,欺負我新人是不? 你再欺負我,欺負我,我。。。。只好沉默了。

 

前言:

 

好久沒寫文章了,最近習慣了寫微博,發微博,都是140字以內+張圖片,偶爾發一發,也偶爾在閃存里閃一閃。

以前天天寫博客時,閉上眼也能寫的很長很長,這人長久不寫博客時,一拖再拖也只能迸出那么點字,悲劇的習慣!

 

在開源的這條路上,走過了很久很久,有一些想法,也麻木到沒有想法。

每當上園子來,看到開源的相關文章,我都會盡力的頂上一頂,但是總會發現下面的評論,是負面聲音一片,除了留下郵箱才能發源碼的那種。

之后的一段時間,很少再看到博主會堅持的不怕罵聲的繼續發布或更新開源文章,少但不排除沒有。 

目前就這種現狀,各位開源流的博主,還是要頂住罵聲往前走!大帝保佑你們! 


正文:

 

本次開源 CYQ.Data 數據框架 V4.0 開源版本,具體下載地址:http://www.cyqdata.com/download/article-detail-426

本人對研究本框架的人士持續提供技術支持,技術指導。

 

學習本框架,至少您能學到如何真正做到多對數據庫的支持,和各種數據庫的差異性語法(那些說支持多數據庫,只有接口卻等你去實現的都是浮雲,因為實現過才知道,差異性的兼容才是最麻煩的,框架的開發者把最麻煩的事留給你,卻對你說支持多種數據庫,這是多悲劇的事,有能力實現差異性兼容,估計你也有能力寫出自己的框架了)。

 

這也將成為您往后編寫自己的框架的資本,研究並掌握底層的框架有助於你成長為高級人士,獲得更豐富的待遇。

園子里已經有很多同學參考並學習了源碼,編寫出屬於自己個性的框架,您還等待什么?

框架截圖:

 

 

具體的更新記錄,在源碼里就有了,這里就不重復的又貼一大堆文字出來了。 

 

這里貼一段開源的代碼中的Json操作類代碼,避免博客園工作人員誤操作:

 

  internal  class JsonHelper
    {
         ///   <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 -  11);
                        sb.Append( " }, ");
                         if (index < arrData.Count)
                        {
                            sb.Append( " { ");
                        }
                    }

                }
                sb = sb.Replace( " , """, sb.Length -  11);
                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 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM