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

本人对研究本框架的人士持续提供技术支持,技术指导。

 

学习本框架,至少您能学到如何真正做到多对数据库的支持,和各种数据库的差异性语法(那些说支持多数据库,只有接口却等你去实现的都是浮云,因为实现过才知道,差异性的兼容才是最麻烦的,框架的开发者把最麻烦的事留给你,却对你说支持多种数据库,这是多悲剧的事,有能力实现差异性兼容,估计你也有能力写出自己的框架了)。

 

这也将成为您往后编写自己的框架的资本,研究并掌握底层的框架有助于你成长为高级人士,获得更丰富的待遇。

园子里已经有很多同学参考并学习了源码,编写出属于自己个性的框架,您还等待什么?

框架截图:

CYQ.Data 数据框架 V4.0 开源版本发布(源码提供下载,秋色园V2.5版本标配框架)_第1张图片 

 

具体的更新记录,在源码里就有了,这里就不重复的又贴一大堆文字出来了。 

 

这里贴一段开源的代码中的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 

 

 

你可能感兴趣的:(CYQ.Data 数据框架 V4.0 开源版本发布(源码提供下载,秋色园V2.5版本标配框架))