asp.net c# 关于SqlDataReader 的数组存储问题

SqlDataReadersdr=cmd.ExecuteReader();String[]stations=newString[100];Int32i=0;sdr.Rea... SqlDataReader sdr = cmd.ExecuteReader();

String[] stations = new String[100];
Int32 i = 0;
sdr.Read();
while (sdr.HasRows)
{
stations[i] = sdr.GetString(1);
i++;
sdr.NextResult();
}
我想通过这样一段代码把数据库中的数据循环储存到数组station中
但是执行完发现就数据库中第一条记录被储存了
这是为什么
展开
 我来答
FantasyChump
2012-06-06 · TA获得超过3287个赞
知道大有可为答主
回答量:2127
采纳率:0%
帮助的人:2221万
展开全部
NextResult()是读取下一个数据集,不是下一条记录。读取下一条记录用 Read(). 在循环体前面不需要加Read(),否则就重复读取,会跳过第一条记录。综上,改成如下即可。

SqlDataReader sdr = cmd.ExecuteReader();

String[] stations = new String[100];
Int32 i = 0;

while (sdr.Read())
{
stations[i] = sdr.GetString(1);
i++;
}
真爱无限023
2012-06-06 · TA获得超过138个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:106万
展开全部
SqlDataReader 用while (dr.Read()) 进行读取,没有数据则为false就不会读了,读取时还不能关闭,是连接式的数据库操作方法
一般不建议使用SqlDataReader ,因为它对数据库性能消耗太大,占连接。。
一般先读取到DataSet中,再操作DataSet,这样不管你多少对数据的操作不会连数据库。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
正怒月神
2012-06-06 · TA获得超过1157个赞
知道小有建树答主
回答量:710
采纳率:100%
帮助的人:491万
展开全部
我是这么读取的,你试试吧

SqlConnection sqlcon = new SqlConnection("server=.;database=MyBook;uid=sa;pwd=gb123");
SqlCommand cmd=new SqlCommand("select * from Degree",sqlcon);
sqlcon.Open();

SqlDataReader dr=cmd.ExecuteReader();
string []strs=new string[100];
int i = 0;
while (dr.Read())
{
strs[i] = dr[0].ToString();
i++;
}
测试成功的

关于你的问题, sdr.NextResult();//删掉这句话
你在试试
追问
我试了下,确实可以,但是为什么第一条记录没有存储进去,我输出strs[0],输出的是第二条记录
追答
while (dr.Read())
{
strs[i] = dr[0].ToString();
i++;
}
这么写,我测试时,记录都是进去的
至于你的问题,我不清楚。
可能是代码哪里写错了,或者sql语句的问题。猜测
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
modao1221
2012-06-06 · TA获得超过108个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:154万
展开全部
while (sdr.HasRows)
{
stations[i] = sdr.GetString(1);
i++;
}这样就能构成一个while循环,没有必要在加个sdr.NextResult();这个语句的作用应该导致直接跳出循环,所以导致你只能存储第一条记录
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友baf3962
2012-06-06 · TA获得超过667个赞
知道小有建树答主
回答量:204
采纳率:100%
帮助的人:131万
展开全部
写错了
while (sdr.Read())
{
stations[i] = sdr["列名"] +“”;
i++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式