我的数据访问函数库的源代码(三)——返回结构数组

/* 2008 4 25 更新 */

我的数据访问函数库的源码。整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧。

第三部分:返回结构

数组,这个是专门针对网页来设计的。就是在网页上更方便的显示一组数据。

//新增加的部分,返回结构数组用于绑定控件

        

        #region 函数实现 — — RunSqlStructBaseTitle

        /// <summary>

        /// 运行SQl语句返回结构数组BaseTitle

        /// </summary>

        /// <param name="SQL">查询语句。比如select myName from tableName</param>

        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>

        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>

        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>

        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>

        public BaseTitle[] RunSqlStructBaseTitle(string SQL,string SQLForCount,int TitleCount,string DateFormat,int IntroCount)

        {

            string strRowCount = RunSqlGetID(SQLForCount);

            if (strRowCount == null)

                return null;

                

            int DataCount = Int32.Parse(strRowCount);

            if (DataCount <)

                return null;

            

            return RunSqlStructBT(SQL,DataCount,TitleCount,DateFormat,IntroCount);

        }

        #endregion



        #region 函数实现 — — RunSqlStructBaseTitle

        /// <summary>

        /// 运行SQl语句返回结构数组BaseTitle

        /// </summary>

        /// <param name="SQL">查询语句。比如select myName from tableName</param>

        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>

        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>

        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>

        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>

        public BaseTitle[] RunSqlStructBaseTitle(string SQL,int DataCount,int TitleCount,string DateFormat,int IntroCount)

        {

            if (DataCount <)

                return null;

            

            return RunSqlStructBT(SQL,DataCount,TitleCount,DateFormat,IntroCount);

        }

        #endregion



        #region 函数实现 — — RunSqlStructBaseTitle

        /// <summary>

        /// 运行SQl语句返回结构数组BaseTitle

        /// </summary>

        /// <param name="SQL">查询语句。比如select myName from tableName</param>

        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>

        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>

        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>

        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>

        private BaseTitle[] RunSqlStructBT(string SQL,int DataCount,int TitleCount,string DateFormat,int IntroCount)

        {

            //返回ID 传入查询语句,返回第一条记录的第一的字段的值

            SetCommand(SQL,);        //设置command

            SqlDataReader r = null;

            try

            {

                if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )

                    cm.Connection.Open();

                

                BaseTitle[] strValue = new BaseTitle[DataCount];

                r =  cm.ExecuteReader();

                int i = ;

                while (r.Read())

                {

                    //主键

                    strValue[i].ID  = r[].ToString();

                    //网址

                    strValue[i].URL = r[].ToString();

                    //判断截取字符数

                    if (TitleCount == )

                    {

                        strValue[i].AllTitle = r[].ToString();

                        strValue[i].Title = r[].ToString();

                    }

                    else

                    {

                        strValue[i].AllTitle = r[].ToString();

                        strValue[i].Title = Functions.strCal(r[].ToString(),TitleCount);

                    }



                    //判断时间

                    if (DateFormat.Length ==  )

                        strValue[i].AddedDate = r[].ToString();

                    else

                        strValue[i].AddedDate = DateTime.Parse(r[].ToString()).ToString(DateFormat);



                    //人气

                    strValue[i].Hits = r[].ToString();

                    //图片路径

                    strValue[i].ImagePath = r[].ToString();

                    //内容简介

                    if (IntroCount == )

                        strValue[i].Introduction = r[].ToString();

                    else

                        strValue[i].Introduction = Functions.strCal(r[].ToString(),IntroCount);

                    

                    i++;

                }



//                if (i == 0)

//                {

//                    //没有数据,返回空

//                    return null;

//                }

//                else if (i < DataCount )

//                {

//                    //记录数不够用,修改数组大小

//                    BaseTitle[] tmp = new BaseTitle[i];

//                    int j = 0;

//                    foreach(BaseTitle tt in strValue)

//                    {

//                        tmp[j].Hits         = tt.Hits ;

//                        tmp[j].ID            = tt.ID  ;

//                        tmp[j].ImagePath    = tt.ImagePath  ;

//                        tmp[j].Introduction = tt.Introduction  ;

//                        tmp[j].Title        = tt.Title  ;

//                        tmp[j].URL            = tt.URL  ;

//                        j++;

//                        if (j == i )

//                            break;

//                    }

//                    return tmp;

//                }

//                else

//                {

//                    return strValue;

//                }

                return strValue;

            }

            catch(Exception ex)

            {

                SetErrorMsg("RunSqlStructBT",SQL,ex.Message );    //处理错误

                return null;

            }

            finally

            {

                if (r != null)

                    r.Close();

                

                if (!isUseTrans)

                    cm.Connection.Close();

                

            }

        }

        #endregion



        //=====================================================================



        #region 函数实现 — — RunSqlStructCusTitle

        /// <summary>

        /// 运行SQl语句返回结构数组 CusTitle

        /// </summary>

        /// <param name="SQL">查询语句。比如select myName from tableName</param>

        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>

        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>

        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>

        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>

        public CusTitle[] RunSqlStructCusTitle(string SQL,string SQLForCount)

        {

            string strRowCount = RunSqlGetID(SQLForCount);

            if (strRowCount == null)

                return null;

                

            int DataCount = Int32.Parse(strRowCount);

            if (DataCount <)

                return null;

            

            return RunSqlStructCT(SQL,DataCount);

        }

        #endregion



        #region 函数实现 — — RunSqlStructCusTitle

        /// <summary>

        /// 运行SQl语句返回结构数组 CusTitle

        /// </summary>

        /// <param name="SQL">查询语句。比如select myName from tableName</param>

        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>

        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>

        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>

        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>

        public CusTitle[] RunSqlStructCusTitle(string SQL,int DataCount)

        {

            if (DataCount <)

                return null;

            

            return RunSqlStructCT(SQL,DataCount);

        }

        #endregion

        

        #region 函数实现 — — RunSqlStructCT

        /// <summary>

        /// 运行SQl语句返回结构数组 CusTitle

        /// </summary>

        /// <param name="SQL">查询语句。比如select myName from tableName</param>

        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>

        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>

        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>

        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>

        private CusTitle[] RunSqlStructCT(string SQL,int DataCount)

        {

            //返回ID 传入查询语句,返回第一条记录的第一的字段的值

            SetCommand(SQL,);        //设置command

            SqlDataReader r = null;

            try

            {

                if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )

                    cm.Connection.Open();

                

                CusTitle[] strValue = new CusTitle[DataCount];

                r =  cm.ExecuteReader();

                int i = ;

                int ArrLength = r.FieldCount-;

                while (r.Read())

                {

                    //ID

                    strValue[i].ID = r[].ToString();

                    //标题

                    strValue[i].Title = r[].ToString();

                    

                    //其他

                    strValue[i].str = new string[ArrLength];

                    for(int j=;j<ArrLength;j++)

                        strValue[i].str[j] = r.GetValue(j+).ToString();



                    i++;

                }

                return strValue;

                

            }

            catch(Exception ex)

            {

                SetErrorMsg("RunSqlStrs",SQL,ex.Message );    //处理错误

                return null;

            }

            finally

            {

                if (r != null)

                    r.Close();

                

                if (!isUseTrans)

                    cm.Connection.Close();

                

            }

        }

        #endregion



        //===========================end==============================

下载全部源文件。

http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

Delegate如何进行类型转换?

我们知道对于两个不具有继承关系的两个类型,如果没有为它们定义转换器,两这之间的类型转换是不允许的,Delegate也是如此。但是有时候我们却希望“兼容”的两种D...

2078
来自专栏码匠的流水账

聊聊hibernate的hbm2ddl的实现

hibernate-core-5.0.12.Final-sources.jar!/org/hibernate/tool/schema/spi/SchemaMan...

953
来自专栏机器人网

ABB机器人编程方式

1、指令表IL   指令表(IL)由一系列指令组成。每条指令都由一个新行开始,包含一个操作符以及和操作符类型相关的一个或多个操作数,并用逗号分开。在指令前可以有...

3566
来自专栏用户画像

MySQL数据库中的5种数据类型简介

MySQL数据库中的5种数据类型是:字符型,文本型,数值型,逻辑型与日期型,以下就是文章的详细内容介绍,希望在你今后的学习中会有所帮助。

862
来自专栏GreenLeaves

EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分的实体)

日常开发中,经常会碰到一些自引用的实体,比如系统菜单、目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类的模型. 以下是自...

2246
来自专栏风口上的猪的文章

.NET面试题系列[14] - LINQ to SQL与IQueryable

"理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列。" - Jon Skeet

1491
来自专栏黑白安全

SQLMAP tamper WAF 绕过脚本列表注

sqlmap的tamper目录下有41个用于绕过waf的脚本,网上有文章简要介绍过使用方法,但是只是简单说了其中少数几个的作用。本人通过这41个脚本的文档注释,...

1663
来自专栏数据结构与算法

BZOJ 3932: [CQOI2015]任务查询系统(主席树)

1470
来自专栏行者常至

019.数据交换格式:Json、XML

数据交换格式中,最核心的就是Json和XML。 其中,Json是一种轻量级数据交换格式,XML是一种重量级的数据交换格式。 相比于xml这种数据交换格式来说...

1783
来自专栏简书专栏

Python程序结构2

上面一段代码的运行结果如下,从下面的结果可以看出速度差距为2、3倍左右,当数据量更大时,可能差距更大。:

1123

扫码关注云+社区

领取腾讯云代金券