什么是结果集?

qlmc2008 2008-12-21 12:38:39
什么是结果集?什么又是内存表?什么又是数据表?
之间能转换吗?怎样转换?
...全文
893 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yanning9090 的回复:]
数据表:我想应该是指存储在数据库里的表吧
结果集:应该是向数据表里查询满足条件的记录所得到的一个结果,结构跟表差不多
内存表:是将数据库里的表读取到内存中来
可以这样理解:你查询数据表里的记录得到一个结果集,利用DataSet 和DataAdapter 的 fill 方法 将结果集读取到内存里

在下尽力 帮助到这里了
[/Quote]
这个是对的吧
wangping_li 2008-12-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 qlmc2008 的帖子:]
什么是结果集?什么又是内存表?什么又是数据表?
之间能转换吗?怎样转换?
[/Quote]
结果集你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;
}


别样苍茫 2008-12-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
结果集:从 SELECT 语句返回的行的集合。结果集中行的格式由 SELECT 语句的列的列表定义。
内存表:内存中一张表
数据表是数据库中一个非常重要的对象,是其他对象的基础。
[/Quote]
正解
别样苍茫 2008-12-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
结果集:从 SELECT 语句返回的行的集合。结果集中行的格式由 SELECT 语句的列的列表定义。
内存表:内存中一张表
数据表是数据库中一个非常重要的对象,是其他对象的基础。
[/Quote]
正解
yanning9090 2008-12-21
  • 打赏
  • 举报
回复
数据表:我想应该是指存储在数据库里的表吧
结果集:应该是向数据表里查询满足条件的记录所得到的一个结果,结构跟表差不多
内存表:是将数据库里的表读取到内存中来
可以这样理解:你查询数据表里的记录得到一个结果集,利用DataSet 和DataAdapter 的 fill 方法 将结果集读取到内存里

在下尽力 帮助到这里了
jiang_jiajia10 2008-12-21
  • 打赏
  • 举报
回复


select * from table

这样下面就会有一个临时的网格 就是结果集。他是存再内存中的。
wuyq11 2008-12-21
  • 打赏
  • 举报
回复
结果集:从 SELECT 语句返回的行的集合。结果集中行的格式由 SELECT 语句的列的列表定义。
内存表:内存中一张表
数据表是数据库中一个非常重要的对象,是其他对象的基础。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧