读书人

一个棘手的有关问题获得对象时出错。

发布时间: 2012-01-23 21:57:28 作者: rapoo

一个棘手的问题,获得对象时出错。。
在NUNIT工具测试报错如下:
GetUser.UserProviderTests.GetAllUsers : System.NullReferenceException : 未将对象引用设置到对象的实例。

ADO.NET与数据库连接代码如下:
public UserInfo[] GetAllUsers(int pageIndex, int pageSize)
{
SqlCommand cmdObj = cnObj.CreateCommand();
SqlDataReader readerObj=null;
UserInfo[] UInfoList = new UserInfo[pageSize];

long index = 0;

cmdObj.CommandText = "GetAllUserInfo ";
cmdObj.CommandType = CommandType.StoredProcedure;

cmdObj.Parameters.Add( "@PageIndex ", SqlDbType.Int).Value = pageIndex;
cmdObj.Parameters.Add( "@PageSize ", SqlDbType.Int).Value = pageSize;

try
{
cnObj.Open();
readerObj = cmdObj.ExecuteReader();

int[] cols = new int[]
{
readerObj.GetOrdinal( "Username "),
readerObj.GetOrdinal( "UserPwd "),
};
///调试时,只会读取WHILE大括号内的第一个分号语句,突然就跳出到FINALLY执行
while (readerObj.Read())
{
UInfoList[index].UserName = readerObj.GetString(cols[0]);
UInfoList[index].UserPwd = readerObj.GetString(cols[1]);

index++;
}
}
catch (SqlException e)
{


}
finally
{
if (readerObj != null)
{
readerObj.Close();
}

if (cnObj.State == ConnectionState.Open)
{
cnObj.Close();
}
}

if (index < pageSize)
{
UserInfo[] userInfos = new UserInfo[index];
Array.Copy(UInfoList, 0, userInfos, 0, index);

return userInfos;
}
else
{
return UInfoList;
}
}

请大家帮忙解决,谢谢,。如果觉得代码不全,需要全部,我会。。


[解决办法]
UserInfo[] UInfoList = new UserInfo[pageSize];
UInfoList[i]=new UserInfo();
问题解决.



[解决办法]
RecordsAffected是指添加删除修改的行数,而不是取到记录的行数.

读书人网 >C#

热点推荐