调了两天就是着不出来有什么错,完全模仿微软petshop3.0的,请高人指点!“/finacialBS”应用程序中的服务器错误。
--------------------------------------------------------------------------------数据为空。不能对空值调用此方法或属性。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlTypes.SqlNullValueException: 数据为空。不能对空值调用此方法或属性。源错误: 
行 63:  if (rdr.Read()) //通过验证,返回该用户的所有信息
行 64:  {
行 65:  AddressInfo myAddress = new AddressInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4),rdr.GetString(5),rdr.GetString(6));
行 66:  return new AccountInfo(userId, password, myAddress); 
行 67:  }
 

解决方案 »

  1.   

    存储过程如下:
    CREATE PROCEDURE SignIn
    (
    @userId varchar(20),
    @password varchar(20)
    )
    ASSELECT Account.Name,Account.Job,Account.Email,Account.Addr1, Account.Addr2, Account.Zip,Account.Phone FROM Account INNER JOIN SignOn ON Account.UserId = SignOn.UserId WHERE SignOn.UserId = @userId AND SignOn.Password = @password
    GO
    我在sql中exec过,有结果。但是就是在程序中读不出。而且查看rdr.Read()的值为false居然能进if语句里面执行!!!!
      

  2.   

    rdr.Read()的值为false居然能进if语句里面执行!!!!
    ?????
    可能吗??????