好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

CYQ.Data 数据框架 V4.0

CYQ.Data 数据框架 V4.0

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 -  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多用户版本。

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于CYQ.Data 数据框架 V4.0的详细内容...

  阅读:41次

上一篇: Axure

下一篇:开放式并发的解决办法