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

/* 2008 4 25 更新 */

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

第三部分:返回结构数组,这个是专门针对网页来设计的。就是在网页上更方便的显示一组数据。

 

  1//新增加的部分,返回结构数组用于绑定控件
  2        
  3        函数实现 — — RunSqlStructBaseTitle#region 函数实现 — — RunSqlStructBaseTitle
  4        /**//// <summary>
  5        /// 运行SQl语句返回结构数组BaseTitle
  6        /// </summary>
  7        /// <param name="SQL">查询语句。比如select myName from tableName</param>
  8        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>
  9        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>
 10        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>
 11        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>
 12        public BaseTitle[] RunSqlStructBaseTitle(string SQL,string SQLForCount,int TitleCount,string DateFormat,int IntroCount)
 13        {
 14            string strRowCount = RunSqlGetID(SQLForCount);
 15            if (strRowCount == null)
 16                return null;
 17                
 18            int DataCount = Int32.Parse(strRowCount);
 19            if (DataCount <1)
 20                return null;
 21            
 22            return RunSqlStructBT(SQL,DataCount,TitleCount,DateFormat,IntroCount);
 23        }
 24        #endregion
 25
 26        函数实现 — — RunSqlStructBaseTitle#region 函数实现 — — RunSqlStructBaseTitle
 27        /**//// <summary>
 28        /// 运行SQl语句返回结构数组BaseTitle
 29        /// </summary>
 30        /// <param name="SQL">查询语句。比如select myName from tableName</param>
 31        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>
 32        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>
 33        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>
 34        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>
 35        public BaseTitle[] RunSqlStructBaseTitle(string SQL,int DataCount,int TitleCount,string DateFormat,int IntroCount)
 36        {
 37            if (DataCount <1)
 38                return null;
 39            
 40            return RunSqlStructBT(SQL,DataCount,TitleCount,DateFormat,IntroCount);
 41        }
 42        #endregion
 43
 44        函数实现 — — RunSqlStructBaseTitle#region 函数实现 — — RunSqlStructBaseTitle
 45        /**//// <summary>
 46        /// 运行SQl语句返回结构数组BaseTitle
 47        /// </summary>
 48        /// <param name="SQL">查询语句。比如select myName from tableName</param>
 49        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>
 50        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>
 51        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>
 52        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>
 53        private BaseTitle[] RunSqlStructBT(string SQL,int DataCount,int TitleCount,string DateFormat,int IntroCount)
 54        {
 55            //返回ID 传入查询语句,返回第一条记录的第一的字段的值
 56            SetCommand(SQL,1);        //设置command
 57            SqlDataReader r = null;
 58            try
 59            {
 60                if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )
 61                    cm.Connection.Open();
 62                
 63                BaseTitle[] strValue = new BaseTitle[DataCount];
 64                r =  cm.ExecuteReader();
 65                int i = 0;
 66                while (r.Read())
 67                {
 68                    //主键
 69                    strValue[i].ID  = r[0].ToString();
 70                    //网址
 71                    strValue[i].URL = r[1].ToString();
 72                    //判断截取字符数
 73                    if (TitleCount == 0)
 74                    {
 75                        strValue[i].AllTitle = r[2].ToString();
 76                        strValue[i].Title = r[2].ToString();
 77                    }
 78                    else
 79                    {
 80                        strValue[i].AllTitle = r[2].ToString();
 81                        strValue[i].Title = Functions.strCal(r[2].ToString(),TitleCount);
 82                    }
 83
 84                    //判断时间
 85                    if (DateFormat.Length == 0 )
 86                        strValue[i].AddedDate = r[3].ToString();
 87                    else
 88                        strValue[i].AddedDate = DateTime.Parse(r[3].ToString()).ToString(DateFormat);
 89
 90                    //人气
 91                    strValue[i].Hits = r[4].ToString();
 92                    //图片路径
 93                    strValue[i].ImagePath = r[5].ToString();
 94                    //内容简介
 95                    if (IntroCount == 0)
 96                        strValue[i].Introduction = r[6].ToString();
 97                    else
 98                        strValue[i].Introduction = Functions.strCal(r[6].ToString(),IntroCount);
 99                    
100                    i++;
101                }
102
103//                if (i == 0)
104//                {
105//                    //没有数据,返回空
106//                    return null;
107//                }
108//                else if (i < DataCount )
109//                {
110//                    //记录数不够用,修改数组大小
111//                    BaseTitle[] tmp = new BaseTitle[i];
112//                    int j = 0;
113//                    foreach(BaseTitle tt in strValue)
114//                    {
115//                        tmp[j].Hits         = tt.Hits ;
116//                        tmp[j].ID            = tt.ID  ;
117//                        tmp[j].ImagePath    = tt.ImagePath  ;
118//                        tmp[j].Introduction = tt.Introduction  ;
119//                        tmp[j].Title        = tt.Title  ;
120//                        tmp[j].URL            = tt.URL  ;
121//                        j++;
122//                        if (j == i )
123//                            break;
124//                    }
125//                    return tmp;
126//                }
127//                else
128//                {
129//                    return strValue;
130//                }
131                return strValue;
132            }
133            catch(Exception ex)
134            {
135                SetErrorMsg("RunSqlStructBT",SQL,ex.Message );    //处理错误
136                return null;
137            }
138            finally
139            {
140                if (r != null)
141                    r.Close();
142                
143                if (!isUseTrans)
144                    cm.Connection.Close();
145                
146            }
147        }
148        #endregion
149
150        //=====================================================================
151
152        函数实现 — — RunSqlStructCusTitle#region 函数实现 — — RunSqlStructCusTitle
153        /**//// <summary>
154        /// 运行SQl语句返回结构数组 CusTitle
155        /// </summary>
156        /// <param name="SQL">查询语句。比如select myName from tableName</param>
157        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>
158        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>
159        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>
160        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>
161        public CusTitle[] RunSqlStructCusTitle(string SQL,string SQLForCount)
162        {
163            string strRowCount = RunSqlGetID(SQLForCount);
164            if (strRowCount == null)
165                return null;
166                
167            int DataCount = Int32.Parse(strRowCount);
168            if (DataCount <1)
169                return null;
170            
171            return RunSqlStructCT(SQL,DataCount);
172        }
173        #endregion
174
175        函数实现 — — RunSqlStructCusTitle#region 函数实现 — — RunSqlStructCusTitle
176        /**//// <summary>
177        /// 运行SQl语句返回结构数组 CusTitle
178        /// </summary>
179        /// <param name="SQL">查询语句。比如select myName from tableName</param>
180        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>
181        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>
182        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>
183        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>
184        public CusTitle[] RunSqlStructCusTitle(string SQL,int DataCount)
185        {
186            if (DataCount <1)
187                return null;
188            
189            return RunSqlStructCT(SQL,DataCount);
190        }
191        #endregion
192        
193        函数实现 — — RunSqlStructCT#region 函数实现 — — RunSqlStructCT
194        /**//// <summary>
195        /// 运行SQl语句返回结构数组 CusTitle
196        /// </summary>
197        /// <param name="SQL">查询语句。比如select myName from tableName</param>
198        /// <param name="SQLForCount">用于统计记录数的SQL语句。如果传入数字的话,则直接使用数字作为记录数。</param>
199        /// <param name="TitleCount">标题的字符数,一个汉字按照两个字符计算。传入“0”则表示不截取标题。</param>
200        /// <param name="DateFormat">时间格式。比如“yyyy-MM-dd HH:mm:ss dddd”</param>
201        /// <returns>返回BaseTitle结构的数组。URL,标题,时间,人气</returns>
202        private CusTitle[] RunSqlStructCT(string SQL,int DataCount)
203        {
204            //返回ID 传入查询语句,返回第一条记录的第一的字段的值
205            SetCommand(SQL,1);        //设置command
206            SqlDataReader r = null;
207            try
208            {
209                if (cm.Connection.State == ConnectionState.Broken || cm.Connection.State == ConnectionState.Closed )
210                    cm.Connection.Open();
211                
212                CusTitle[] strValue = new CusTitle[DataCount];
213                r =  cm.ExecuteReader();
214                int i = 0;
215                int ArrLength = r.FieldCount-2;
216                while (r.Read())
217                {
218                    //ID
219                    strValue[i].ID = r[0].ToString();
220                    //标题
221                    strValue[i].Title = r[1].ToString();
222                    
223                    //其他
224                    strValue[i].str = new string[ArrLength];
225                    for(int j=0;j<ArrLength;j++)
226                        strValue[i].str[j] = r.GetValue(j+2).ToString();
227
228                    i++;
229                }
230                return strValue;
231                
232            }
233            catch(Exception ex)
234            {
235                SetErrorMsg("RunSqlStrs",SQL,ex.Message );    //处理错误
236                return null;
237            }
238            finally
239            {
240                if (r != null)
241                    r.Close();
242                
243                if (!isUseTrans)
244                    cm.Connection.Close();
245                
246            }
247        }
248        #endregion
249
250        //===========================end==============================
251

下载全部源文件。 

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

时间: 2024-09-06 08:53:09

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

我的数据访问函数库的源代码(二)—— SQL语句部分

/* 2008 4 25 更新 */ 我的数据访问函数库的源码.整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧. 第二部分:SQL语句部分.传入SQL语句,执行相关的操作.   1//查询语句部分  2        运行查询语句返回记录(DataSet.DataTable.DataRow.String[].String)#region 运行查询语句返回记录(DataSet.DataTable.DataRow.String[].String)  3      4      

我的数据访问函数库的源代码(一)—— 共用部分

/* 2008 4 25 更新 */ 我的数据访问函数库的源码.整个类有1400多行,原先就是分开来写的,现在更新后还是分开来发一下吧. 第一部分:内部成员,初始化设置等.     1using System;  2using System.Data;  3using System.Data.SqlClient;  4using HBS.DataStruct;  5using HBS.Form;  6  7//using System.Security.Principal;  8  9names

“数据访问函数库”(DataAccessLibrary for .net2.0 )源代码下载 09.06.15更新

  最新下载地址: http://www.naturefw.com/nature/down.aspx      DLL文件说明      Controls.dll 控件集合,包含QuickPager分页控件等.      DataAccess2.0.dll 数据访问函数库,分页控件需要使用这个dll来访问数据库.   连接字符串,在web.config里面设置如下:     <appSettings>        <add key="DataBaseType" va

数据访问函数库 for ado.net2.0

前言 源代码和调用演示下载:http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html 数据访问函数库for ado.net 1.1 的说明:http://www.cnblogs.com/jyk/category/67121.html 由于一直在使用vs2003开发,所以自己使用的数据访问函数库(以下简称:访问库)也就一直没有能够考虑到ado.net2.0.虽然ado.net2.0在调用的时候没有什么变化,但是内部结构却发生了不小的变化,

分页解决方案 之 数据访问函数库——另类的思路、另类的写法,造就了不一样的发展道路。

      上一篇:分页解决方案 -- GridView + QuickPager + QuickPager_SQL + DataAccessLibrary + 数据库         如何访问数据库?一个老掉牙的问题,方法多了去了,什么直接使用ado.net.使用SQLHelp.使用微软的企业库.使用ORM.使用LinQ to SQL等等,还可以使用自己封装的函数库,这里我就想说一下我的数据访问函数库的使用方法.       您可能会说了,这么简单的东东还用说吗,重复制作轮子有意义吗?这个嘛,

数据访问函数库的使用方法(一)——添加修改数据

由于这个类库是需要实例化的,如果每一次都要实例化,然后用完了在销毁,无形中就多了不少的代 码,而且很容易忘记销毁实例. 同时在用户的一次访问的过程中不断地实例化.销毁,也是比较浪费资源的. 所以我建立了一个基类,在基类里面同意获得实例.统一销毁实例,这样在编码的时候就不用考虑有 没有实例化,也不用担心是否销毁实例了, 另外用起来(使用方式)也和静态类的使用方式很像了. 基类里的代码: (ps:我习惯在.aspx.cs里面直接调用 数据访问函数库,所以这个基类是继承 System.Web.UI.P

分页解决方案之数据访问函数库

如何访问数据库?一个老掉牙的问题,方法多了去了,什么直接使用ado.net.使用SQLHelp.使用微软的企业库.使用ORM.使用LinQ to SQL等等,还可以使用自己封装的函数库,这里我就想说一下我的数据访问函数库的使用方法. 您可能会说了,这么简单的东东还用说吗,重复制作轮子有意义吗?这个嘛,个人有个人的看法了,我也不多说了,先看使用方法吧. 1.删除一条数据,不使用事务 protected void Btn_Del_Click(object sender, EventArgs e) {

数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法

使用SQL语句来获取记录集的方法 string sql = "select col1,col2,col3 from TableName where "; //获取DataTable DataTable dt = dal.RunSqlDataTable(sql); //获取DataSet sql = "select col1,col2,col3 from TableName where "; sql += " select col1,col2,col3 fr

在C#中如何在函数参数中返回结构数组?

函数|数组 头晕脑涨地研究了一天,就为了实现在函数的参数中返回结构数组. 现供大家分享,节省学习时间. 实例:  /// <summary>  /// 用户信息结构  /// </summary>  public struct TUSER  {   public string LoginName;   public string LoginPass;   public string TrueName;   public string EMail;   public int Leve