一个棘手的问题,获得对象时出错。。
在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是指添加删除修改的行数,而不是取到记录的行数.