我在sql2005中写了一句存储过程,在里面执行没有错,它们分别是在2个表里面,用了2句select语句,它们也都是根据同一个字段查的,所以就传了另一个值进去,但是在取值的时候我是这样的:
if (sdr.Read())
{
ATemporarily at = new ATemporarily();
at.Temporarily1 = Convert.ToString(sdr["RoleName"]);
at.Temporarily2 = Convert.ToString(sdr["DepartName"]);
sdr.Close(); //关闭阅读器,与之相关的连接自动关闭
return at;
}
return null;}
第一句能取到值,但是第二句就不行了,是什么意思?
if (sdr.Read())
{
ATemporarily at = new ATemporarily();
at.Temporarily1 = Convert.ToString(sdr["RoleName"]);
at.Temporarily2 = Convert.ToString(sdr["DepartName"]);
sdr.Close(); //关闭阅读器,与之相关的连接自动关闭
return at;
}
return null;}
第一句能取到值,但是第二句就不行了,是什么意思?
解决方案 »
- 在运行里面用重启IIS的IISRESET命令说不支持此接口?是什么原因?
- OA系统中的日志要记录登陆者的IP地址,到底下面哪个才是我要记录的IP呢?
- 传递参数(网址格式)Request.QueryString后发现被解码
- ImageMap热点响应的事件函数,编译时提示无法找到
- Form验证时。loginUrl的的引导文件
- 怎么解释速度慢的原因?
- 怎样将两个文本框中的文字连在一起 例如:
- 本科生面试微软真的向网上说的那么难吗?
- 关于TREEVIEW 控件的几个问题,请大家帮忙!
- 我在updata dataset中的table时发生下面的错误,请大家看看!在线!
- gridview控件里面为什么点击下一页排序就无效了呢?
- GridView编辑的问题(在线等)
改用dataSet或者dataTable.
{
ATemporarily at = new ATemporarily();
at.Temporarily1 = Convert.ToString(sdr["RoleName"]);
at.Temporarily2 = Convert.ToString(sdr["DepartName"]);
sdr.Close(); //关闭阅读器,与之相关的连接自动关闭
return at;
} IF改WHILE,SDR.CLOSE()移到循环外。
1.你的數據表中是否存在DepartName列名
2.你的存儲過程中是否有查出DepartName列名的值你說的2个表里面是否是select RoleName from 表名1select DepartName from 表名1在調用存儲過程中可以出來二個列的值嗎?,
,好好看下存儲過程是否有錯,,程式是否正確。
string strSQL =”select CustomerID,CompanyName from Customers;”+“select OrderID,CustomerID from Orders;”;
SqlCommand cmd=new SqlCommand(strSQL,cn);
SqlDataReader rdr=cmd.ExecuteReader();
do
{
while(rdr.Read())
Console.WriteLine(rdr[0]+rdr[1]);
Console.WriteLine();}while(rdr.NextResult()
);
你再仔細分析下,你那存儲過程中實際是二個select,他產生了二個Result,所以要用到rdr.NextResult()方法,,,Read()只是只進讀的方法,一步一步讀一個Result,所以你試下按上面方法去取你的結果。
我也觉得用dataset 或datatable方便些。
只要在数据里执行没有问题,用数据集就行