您好:于C# + MSSQL 中
主PORC|-- 判断是否要做 次PROC ( 里面有seldct 语法)|--主PROC 最后有select 语法
因为会有次PORC 的执行可能性,所以会有多个datareader故会去判断这一个datareader是否为需要的有需要,在填入datatable中但是以下程式码,若没加break 跳出,就会遇到使用DataReader 会当读取器关闭时尝试呼叫 Read 无效。请问,这有何种方式可以解决 table使用reader的问题
while (dr.HasRows)
{
Console.WriteLine("\\t{0}", dr.GetName(0));
if (dr.GetName(0) == "doz") {
table1.Load(dr);
break;
}
dr.NextResult();
}
1 个回答
0
sam0407
iT邦大师 1 级 ‧ 2024-12-24 09:38:29
最佳解答
主、次PORC分别用两个DataReader来作就好了....
while (dr1.HasRows)
{
Console.WriteLine("\\t{0}", dr1.GetName(0));
if (dr1.GetName(0) == "doz") {
table1.Load(dr2);
break;
}
dr1.NextResult();
}
-
5 -
-
看更多先前的...收起先前的...
noway
iT邦研究生 1 级 ‧
2024-12-26 20:16:04
您好:
谢谢
所以 会需要用break; ?
修改
sam0407
iT邦大师 1 级 ‧
2024-12-27 09:10:04
这要看您程式的逻辑呀,我并不清楚您的需求...
改成用两个DataReader只是要解决用了table1.Load(dr)指令后,再执行dr.NextResult()会因为DataReader被关闭而出错的问题
改成用两个DataReader只是要解决用了table1.Load(dr)指令后,再执行dr.NextResult()会因为DataReader被关闭而出错的问题
修改
noway
iT邦研究生 1 级 ‧
2024-12-27 18:30:10
您好:
我只是好奇,为何 原程式,有brak,就不会有问题
table1.Load(dr); 后,仍会咬住 dr 吗?
一个proc 的结果
要如何分为 dr1 与 dr2
一个proc 的结果
要如何分为 dr1 与 dr2
修改
sam0407
iT邦大师 1 级 ‧
2024-12-30 09:26:43
建议您先把.Net的基础读扎实,再来看或改别人的程式。
break就跳出while迴圈了,不会执行到dr.NextResult();,自然也不会有错误。
执行table1.Load(dr);后,不是会咬住dr,您看错误讯息就可以知道是因为dr被关闭。如果您了解DataTable.Load这方法作了什么事,就不会觉得意外。
break就跳出while迴圈了,不会执行到dr.NextResult();,自然也不会有错误。
执行table1.Load(dr);后,不是会咬住dr,您看错误讯息就可以知道是因为dr被关闭。如果您了解DataTable.Load这方法作了什么事,就不会觉得意外。
修改
noway
iT邦研究生 1 级 ‧
2024-12-30 19:38:39
谢谢您的指导
修改