什么是结果集?什么又是内存表?什么又是数据表?
之间能转换吗?怎样转换?

解决方案 »

  1.   

    结果集:从 SELECT 语句返回的行的集合。结果集中行的格式由 SELECT 语句的列的列表定义。 
    内存表:内存中一张表
    数据表是数据库中一个非常重要的对象,是其他对象的基础。
      

  2.   

    如select * from table这样下面就会有一个临时的网格 就是结果集。他是存再内存中的。
      

  3.   

    数据表:我想应该是指存储在数据库里的表吧
    结果集:应该是向数据表里查询满足条件的记录所得到的一个结果,结构跟表差不多
    内存表:是将数据库里的表读取到内存中来
    可以这样理解:你查询数据表里的记录得到一个结果集,利用DataSet 和DataAdapter 的 fill 方法 将结果集读取到内存里在下尽力 帮助到这里了
      

  4.   

    结果集你sql语句返回的数据行集合
    内存表可以看着是保存在内存中的数据,如果hashtable、List<T>等
    数据表应该是就数据库其它对象的基础了,如果没有数据表的话没关键字、主键、索引等也就无从谈起了
    如果你的结果集返回的是DataSet的话,要转换为List<T>,那么就得利用反射了
    给一个我用的DataSet与IList之间互转的函数,如果将DataSet转为IList的前提你的实体类集合得有DataSet数据集中的字段,那样才好对应赋值
    /// <summary>
            /// IList转为DataSet
            /// </summary>
            /// <typeparam name="T">List数据类型</typeparam>
            /// <param name="List">Ilist集合</param>
            /// <param name="PropertyName">待转换属性名数组</param>
            /// <returns></returns>
            public static DataSet ToDataSet<T>(IList<T> List, params string[] PropertyName)
            {
                List<string> propertyNameList = new List<string>();
                if (PropertyName != null)
                    propertyNameList.AddRange(PropertyName);            DataSet result = new DataSet();
                System.Data.DataTable DataTable = new System.Data.DataTable();
                if (List.Count > 0)
                {
                    PropertyInfo[] propertys = List[0].GetType().GetProperties();
                    foreach (PropertyInfo pi in propertys)
                    {
                        if (propertyNameList.Count == 0)
                        {                        DataTable.Columns.Add(pi.Name, pi.PropertyType);
                        }
                        else
                        {
                            if (propertyNameList.Contains(pi.Name))
                                DataTable.Columns.Add(pi.Name, pi.PropertyType);
                        }
                    }                for (int i = 0; i < List.Count; i++)
                    {
                        ArrayList tempList = new ArrayList();
                        foreach (PropertyInfo pi in propertys)
                        {
                            if (propertyNameList.Count == 0)
                            {
                                object obj = pi.GetValue(List, null);
                                tempList.Add(obj);
                            }
                            else
                            {
                                if (propertyNameList.Contains(pi.Name))
                                {
                                    object obj = pi.GetValue(List, null);
                                    tempList.Add(obj);
                                }
                            }
                        }
                        object[] array = tempList.ToArray();
                        DataTable.LoadDataRow(array, true);
                    }
                }
                result.Tables.Add(DataTable);
                return result;
            }        /// <summary>
            /// DataSet转为IList
            /// </summary>
            /// <typeparam name="T">数据类型</typeparam>
            /// <param name="DataSet">DataSet数据集</param>
            /// <param name="TableIndex">DataSet数据集中表的索引</param>
            /// <returns></returns>
            public static IList<T> DataSetToIList<T>(DataSet DataSet, int TableIndex)
            {
                if (DataSet == null || DataSet.Tables.Count < 0)
                    return null;
                if (TableIndex > DataSet.Tables.Count - 1)
                    return null;
                if (TableIndex < 0)
                    TableIndex = 0;            System.Data.DataTable dt = DataSet.Tables[TableIndex];
                IList<T> result = new List<T>();
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    T t = (T)Activator.CreateInstance(typeof(T));
                    PropertyInfo[] propertys = t.GetType().GetProperties();
                    foreach (PropertyInfo pi in propertys)
                    {
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {                        if (pi.Name.Equals(dt.Columns[i].ColumnName))
                            {
                                if (dt.Rows[j][i] != DBNull.Value)
                                    pi.SetValue(t, dt.Rows[j][i], null);
                                else
                                    pi.SetValue(t, null, null);
                                break;
                            }
                        }
                    }
                    result.Add(t);
                }
                return result;
            }
      

  5.   

    从前有个叫翔的小伙子,他失恋了,原因是他不能给女朋友幸福。于是翔开始不停的奋斗,后来他加入了湖南SEO,做起了搜索引擎优化工作。有一天他逛到了张筱雨博客,看到张筱雨和他女朋友真的十分相像,他的心都碎了。狠狠的砸了下鼠标,关掉了网页,桌面上什么都没有,只有一个穿越火线外挂,一个地下城与勇士外挂,郁闷的翔进入穿越火线傻傻的,痴痴的玩着,平时枪法甚好的翔,这时打得一塌糊涂。此时金山毒霸2008突然提示有病毒,没办法,开始杀毒吧。毒杀到一半,提示金山毒霸2008通行证已过期。天啊,这是怎么了!!掏出钱包准备网银支付,结果发现钱包里仅仅还剩10元钱,倒霉的翔叹气说到:“哎,明天还是去长沙信用卡套现吧”真是屋漏偏逢连夜雨啊!连LG保险都不能继续交了。