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中
但是执行完发现就数据库中第一条记录被储存了
这是为什么 展开
String[] stations = new String[100];
Int32 i = 0;
sdr.Read();
while (sdr.HasRows)
{
stations[i] = sdr.GetString(1);
i++;
sdr.NextResult();
}
我想通过这样一段代码把数据库中的数据循环储存到数组station中
但是执行完发现就数据库中第一条记录被储存了
这是为什么 展开
展开全部
NextResult()是读取下一个数据集,不是下一条记录。读取下一条记录用 Read(). 在循环体前面不需要加Read(),否则就重复读取,会跳过第一条记录。综上,改成如下即可。
SqlDataReader sdr = cmd.ExecuteReader();
String[] stations = new String[100];
Int32 i = 0;
while (sdr.Read())
{
stations[i] = sdr.GetString(1);
i++;
}
SqlDataReader sdr = cmd.ExecuteReader();
String[] stations = new String[100];
Int32 i = 0;
while (sdr.Read())
{
stations[i] = sdr.GetString(1);
i++;
}
展开全部
SqlDataReader 用while (dr.Read()) 进行读取,没有数据则为false就不会读了,读取时还不能关闭,是连接式的数据库操作方法
一般不建议使用SqlDataReader ,因为它对数据库性能消耗太大,占连接。。
一般先读取到DataSet中,再操作DataSet,这样不管你多少对数据的操作不会连数据库。
一般不建议使用SqlDataReader ,因为它对数据库性能消耗太大,占连接。。
一般先读取到DataSet中,再操作DataSet,这样不管你多少对数据的操作不会连数据库。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是这么读取的,你试试吧
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();//删掉这句话
你在试试
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语句的问题。猜测
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while (sdr.HasRows)
{
stations[i] = sdr.GetString(1);
i++;
}这样就能构成一个while循环,没有必要在加个sdr.NextResult();这个语句的作用应该导致直接跳出循环,所以导致你只能存储第一条记录
{
stations[i] = sdr.GetString(1);
i++;
}这样就能构成一个while循环,没有必要在加个sdr.NextResult();这个语句的作用应该导致直接跳出循环,所以导致你只能存储第一条记录
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写错了
while (sdr.Read())
{
stations[i] = sdr["列名"] +“”;
i++;
}
while (sdr.Read())
{
stations[i] = sdr["列名"] +“”;
i++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询