SqlDataReader无法从数据库中读取多条记录

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:13:33
数据库中该表有多条记录,可是只能读取一条,不知为何,代码如下:
recordCount = 0;//存储过程返回参数
SqlParameter[] param = new SqlParameter[] {
SQLServerHelper.MakeSqlInParam(PROC_PARAM_ROWINDEX,SqlDbType.Int,4,rowIndex),
SQLServerHelper.MakeSqlInParam(PROC_PARAM_PAGESIZE,SqlDbType.Int,4,pageSize),
SQLServerHelper.MakeSqlOutParam(PROC_PARAM_RECORDCOUNT,SqlDbType.Int,4)
};
List<Organization> list = new List<Organization>();
try
{
using (SqlDataReader dr = SQLServerHelper.ExecuteReader(SQLServerHelper.ConnectionString, CommandType.StoredProcedure, PROC_SELECTWITHPAGE, param))
{
while (dr.Read())
{
Organization org = new Organization();
org.OrgName = dr.GetString(0);
org.SimpleCode = dr.Get

Organization org = new Organization();
org.OrgName = dr.GetString(0);
org.SimpleCode = dr.GetString(1);
org.CreateDT = dr.GetDateTime(2).ToString();
org.OrgId = dr.GetInt32(3);
list.Add(org);

要做一个循环语句!

<%for i=1 to rs.pagesize
if rs.eof then exit for%>

读取的对象(就是要显示的信息)

<%rs.movenext
next
%>

dr.Read()只会读当前行,读完不会再去读下行记录,可以这样:
do
{
if (dr.Read())
{
Organization org = new Organization();
org.OrgName = dr.GetString(0);
org.SimpleCode = dr.GetString(1);
org.CreateDT = dr.GetDateTime(2).ToString();
org.OrgId = dr.GetInt32(3);
list.Add(org);
}
}while(dr.NextResult());

while(dr.Read())
{
...
}
dr.Close();
这样是没有问题的,可以读取多条数据.
dr.Read()方法读取下一条数据成功就返回true,失败,即读取完毕时返回false.
至于只能读取一条数据,可能是这个存储过程只返回了一条数据,或者其他什么原因,我没有用过SQLServerHelper,不是很清楚.
可以在数据库里调