10万火急,请求帮忙,返回dataset或datatable问题

zhuxiaojun2002 2005-03-21 05:00:53
public DataSet GetUserInfo(int id)
{
DataSet ds=new DataSet();
SqlParameter[] commandParameters=new SqlParameter[1];
commandParameters[0]=new SqlParameter("@id",id);
SqlHelper.FillDataset(CONN,CommandType.StoredProcedure,"sp_GetUserPartInfo",ds,new string[]{"UserInfo"},commandParameters);
return(ds);
}

使用存储过程,返回一个用户信息(ds)。但是其中有个t_id(用户类别),关联另外一个表。
我要返回的ds是,用户信息,还有类别名称,而不是id。

...全文
192 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Overriding 2005-03-24
  • 打赏
  • 举报
回复
CONN,CommandType.StoredProcedure,"sp_GetUserPartInfo",ds,new string[]{"UserInfo"},commandParameters);
====>
CONN,CommandType.StoredProcedure,"sp_GetUserPartInfo",ds,"UserInfo",commandParameters);

二者等价,就是给你要fill的表取个名字!
daview 2005-03-24
  • 打赏
  • 举报
回复
SqlHelper.FillDataset(CONN,CommandType.StoredProcedure,"sp_GetUserPartInfo",ds,new string[]{"UserInfo"},commandParameters);

没有使用过SQLHELPER,所以不清楚。从你的情况来分析,SQLHELPER的方法FILLDATASET的支持同时把数据FILL到多个表中,表名参数以字符串数组的形式存在参数4中。

zhuxiaojun2002 2005-03-22
  • 打赏
  • 举报
回复
谢谢大家,我试试,谢谢笨牛!这个问题一定要找你搞彻底。
看看这个SqlHelper.FillDataset(CONN,CommandType.StoredProcedure,"sp_GetUserPartInfo",ds,new string[]{"UserInfo"},commandParameters);

还问一下大家:
new string[]{"UserInfo"}这个是不是为ds填充一个名为UserInfo的表啊!
daview 2005-03-22
  • 打赏
  • 举报
回复
之所以用循环是为了保证数据的安全。即便你确定有且只有一条记录。

这样在异常(1条记录或多条记录)的时候保证的不会出现其它的异常。
daview 2005-03-22
  • 打赏
  • 举报
回复
就用一瓢的方法。

其实也没有必要构建一个新的表(如果原来的表不进行数据更新操作的话),只要在原有的表添加一个新的字段就行:

ds1.Tables[0].Columns.Add("t_name",typeof(string));
foreach(DataRow drTmp in ds1.Tables[0].Rows)
{
drTmp["t_name"] = GetUserName(drTmp["t_id"] as string);
}

这里的GetUserName就是你可以根据t_id获得t_name的函数。

我是笨牛。
zhuxiaojun2002 2005-03-22
  • 打赏
  • 举报
回复
to :bitsbird(一瓢 单身走我路),只有一条记录。没必要循环了。
我是已经得到了ds,ds中只有一个table,也只有一条记录。我想根据其中的ds1.Tables[0].Row[0]["t_id"]找到类别名称ds2.Tables[0].Rows[j]["t_name"]。然后构件一个新的table,其中也为一条记录,知识t_id转换成了t_name,然后return(newtable)
haoco 2005-03-21
  • 打赏
  • 举报
回复
up
bitsbird 2005-03-21
  • 打赏
  • 举报
回复
for(int i=0;i<ds1.Tables[0].Rows.Count;i++)
{
for(int j=0;j<ds2.Tables[0].Rows.Count;j++)
{
if(ds1.Tables[0].Row[i]["t_id"].ToString()==ds2.Tables[0].Rows[j]["t_id"].ToString())
{
ds1.Tables[0].Row[i]["t_id"]=ds2.Tables[0].Rows[j]["t_name"].ToString()
}
}
}
zhuxiaojun2002 2005-03-21
  • 打赏
  • 举报
回复
返回的是类别id,也就是t_id,我要用一个方法得到类别名称,然后返回ds为用户信息,类别名称(而不是t_id)!
zhuxiaojun2002 2005-03-21
  • 打赏
  • 举报
回复
呵呵,不能修改的,那样的话,我用存储过程操作视图就行了。这个类别名称要到别人的方法中得到的,
public DataSet GetUserInfo(int id)
{
DataSet ds=new DataSet();
SqlParameter[] commandParameters=new SqlParameter[1];
commandParameters[0]=new SqlParameter("@id",id);
SqlHelper.FillDataset(CONN,CommandType.StoredProcedure,"sp_GetUserPartInfo",ds,new string[]{"UserInfo"},commandParameters);
return(ds);
}
只能在这个里面加代码!
KeNan_Net 2005-03-21
  • 打赏
  • 举报
回复
这要看你的存储过程,返回的是什么了,
hackate 2005-03-21
  • 打赏
  • 举报
回复
那你就修改存储过程啊,你存储过程也帖出来嘛
zhuxiaojun2002 2005-03-21
  • 打赏
  • 举报
回复
救命啊!快疯了

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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