又有一个新问题,能不能帮下我呢??UserCom组件里有两个类UserDetails和UserToolsUserTools类里有个函数isLogedIn(),返回值是UserDetails我在login.aspx页面中调用时这样写Dim obj             As BNSUser.UserTools   = New BNSUser.UserTools()
Dim STCUserDetails1 As BNSUser.UserDetails = New BNSUser.UserDetails()STCUserDetails1 = obj.IsLoggedIn(tbUserName.Text,tbUserPwd.Text)
If STCUserDetails1.boolIsLogined Then
'此处为代码
End If错误是
未将对象引用设置到对象的实例源错误: 

行 28:STCUserDetails = obj.IsLoggedIn(tbUserName.Text,tbUserPwd.Text)
行 29:If STCUserDetails.boolIsLogined Then---------------此行错误
UserDetails类我是这样定义的.Public Class UserDetails
Public strUserName        As string
Public strUserPwd         As string
Public LngUserID          As long
Public strSeekPwdQuestion As string
Public strSeekPwdAnswer   As string
Public strRealName        As string
Public strEmail           As string
Public strHomeAddress     As string
Public strPhone           As string
Public strSex             As string
Public strPostalCode      As string
Public dateBirthday       As date
Public strCompanyName     As string
Public dateLastLoginTime  As date
Public boolIsLogined      As boolean
Public ErrMsg             As string
End Class
未将对象引用设置到对象的实例
未将对象引用设置到对象的实例
未将对象引用设置到对象的实例怎么搞啊????我对那个函数做了单独的测试,应该是没有什么问题的啊.

解决方案 »

  1.   

    >>>STCUserDetails1 = obj.IsLoggedIn(tbUserName.Text,tbUserPwd.Text)
    what is in IsLoggedIn?
      

  2.   

    你UserTools的IsLoggedIn方法是怎么写的,帖出来看看
      

  3.   

    用调试看一下STCUserDetails是否为null?
      

  4.   

    Public Function IsLoggedIn(ByVal strUserName As string,ByVal strUserPwd As string ) As UserDetails

    Dim objSQLConn As New SQLConnection()
    Dim strSQLConn As string
    strSQLConn = ConfigurationSettings.Appsettings("strSQLConn")
    objSQLConn.ConnectionString = strSQLConn
    Dim objSQLCmd As New SQLCommand()
    objSQLCmd.Connection = objSQLConn
    objSQLCmd.CommandType = CommandType.StoredProcedure
    objSQLCmd.CommandText = "sp_UserLogin"
    objSQLCmd.CommandTimeout = 15 Dim prmUserName As New SqlParameter("@UserName",SqlDbType.varchar,20)
    prmUserName.Value=strUserName
    objSQLCmd.Parameters.Add(prmUserName)

    Dim prmUserPwd As New SqlParameter("@UserPwd",SqlDbType.varchar,16)
    prmUserPwd.Value=strUserPwd
    objSQLCmd.Parameters.Add(prmUserPwd) Dim prmIsLogined As SqlParameter = New SqlParameter("@IsLogined", SqlDbType.bit)
    prmIsLogined.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmIsLogined)

    Dim prmUserID As SqlParameter = New SqlParameter("@UserID",SqlDbType.bigint)
    prmUserID.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmUserID)

    Dim prmSeekPwdQuestion As SqlParameter = New SqlParameter("@SeekPwdQuestion",SqlDbType.nvarchar,50)
    prmSeekPwdQuestion.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmSeekPwdQuestion)

    Dim prmSeekPwdAnswer As SqlParameter = New SqlParameter("@SeekPwdAnswer",SqlDbType.nvarchar,20)
    prmSeekPwdAnswer.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmSeekPwdAnswer)

    Dim prmRealName As SqlParameter = New SqlParameter("@RealName",SqlDbType.nvarchar,20)
    prmRealName.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmRealName)

    Dim prmEmail As SqlParameter = New SqlParameter("@Email",SqlDbType.varchar,30)
    prmEmail.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmEmail)

    Dim prmHomeAddress As SqlParameter = New SqlParameter("@HomeAddress", SqlDbType.nvarchar,50)
    prmHomeAddress.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmHomeAddress)

    Dim prmPhone As SqlParameter = New SqlParameter("@Phone", SqlDbType.varchar,16)
    prmPhone.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmPhone)

    Dim prmSex As SqlParameter = New SqlParameter("@Sex", SqlDbType.nchar,2)
    prmSex.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmSex)

    Dim prmPostalCode As SqlParameter = New SqlParameter("@PostalCode", SqlDbType.varchar,10)
    prmPostalCode.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmPostalCode)

    Dim prmBirthday As SqlParameter = New SqlParameter("@Birthday", SqlDbType.datetime)
    prmBirthday.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmBirthday)

    Dim prmCompanyName As SqlParameter = New SqlParameter("@CompanyName", SqlDbType.nvarchar,50)
    prmCompanyName.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmCompanyName)

    Dim prmLastLoginTime As SqlParameter = New SqlParameter("@LastLoginTime", SqlDbType.datetime)
    prmLastLoginTime.Direction = ParameterDirection.Output
    objSQLCmd.Parameters.Add(prmLastLoginTime)

    Try
    objSQLConn.Open()
    objSQLCmd.ExecuteReader()
    objSQLConn.Close()

    Catch e As SqlException
    Dim errorMessage As String = "Message: "   & e.Message & _
     "Source: "    & e.Source & _
                                             "State: "     & e.State & _
                                             "Procedure: " & e.Procedure
                
                Dim STCUserDetails As UserDetails = new UserDetails()
                
                STCUserDetails.strUserName        = CStr(objSQLCmd.Parameters("@UserName").Value)
    STCUserDetails.strUserPwd         = CStr(objSQLCmd.Parameters("@UserPwd").Value)
    STCUserDetails.boolIsLogined      = CBool(objSQLCmd.Parameters("@IsLogined").Value)
    STCUserDetails.LngUserID          = CLng(objSQLCmd.Parameters("@UserID").Value)
    STCUserDetails.strSeekPwdQuestion = CStr(objSQLCmd.Parameters("@SeekPwdQuestion").Value)
    STCUserDetails.strSeekPwdAnswer   = CStr(objSQLCmd.Parameters("@SeekPwdAnswer").Value)
    STCUserDetails.strRealName        = CStr(objSQLCmd.Parameters("@RealName").Value)
    STCUserDetails.strEmail           = CStr(objSQLCmd.Parameters("@Email").Value)
    STCUserDetails.strHomeAddress     = CStr(objSQLCmd.Parameters("@HomeAddress").Value)
    STCUserDetails.strPhone           = CStr(objSQLCmd.Parameters("@Phone").Value)
    STCUserDetails.strSex             = CStr(objSQLCmd.Parameters("@Sex").Value)
    STCUserDetails.strPostalCode      = CStr(objSQLCmd.Parameters("@PostalCode").Value)
    STCUserDetails.dateBirthday       = CDate(objSQLCmd.Parameters("@Birthday").Value)
    STCUserDetails.strCompanyName     = CStr(objSQLCmd.Parameters("@CompanyName").Value)
    STCUserDetails.dateLastLoginTime  = CDate(objSQLCmd.Parameters("@LastLoginTime").Value)
    STCUserDetails.errMsg             = errorMessage

    Return STCUserDetails

    Finally
    End Try
    End Function
    这是那个函数的代码.
      

  5.   

    eagle40(老鹰) :   
    用调试看一下STCUserDetails是否为null?
    我测试了存储过程,测试了连接数据库,都是正常的.没有问题,我想问题可能是出在向STCUserDetails传值的过程中.就是不知道是哪里出错了.唉.  
     
      

  6.   

    STCUserDetails是否为null?写入session试试。
      

  7.   

    顶一下,正在session调试,希望高手能帮下.谢谢感激
      

  8.   

    我在IsLoggedIn函数中添加了session,是这样用吗???
    Improts System.WebSession("strUserName")    = objSQLCmd.Parameters("@UserName").Value
    Session("strUserPwd")     = objSQLCmd.Parameters("@UserPwd").Value
    Session("boolIsLogined")  = objSQLCmd.Parameters("@IsLogined").Value我也添加了Improts System.Web但是编译的时候说session未定义.这怎么回事??
      

  9.   

    System.InvalidCastException: 从类型“DBNull”到类型“String”的强制转换无效。
    源错误: 行 29:  strUserName = tbUserName.Text
    行 30:  strUserPwd  = tbUserPwd.Text
    行 31:  STCUserDetails = objUserTools.IsLoggedIn(strUserName,strUserPwd)
    上面两位高手.你们的判断很正确啊.可是我不知道为什么,能指点一下吗???
    STCUserDetails照上面的错误,是不是就是null啊.
    大家快来救下我吧,我被这个问题搞了3天了啊.
     
      

  10.   

    回复人: luckyprg(lucky) ------   STCUserDetails没有初始化。在Dim STCUserDetails1 As BNSUser.UserDetails = New BNSUser.UserDetails()不是初始化吗??