0

ログインには次のコードを使用しています。

       public logininfo ViewLoginByUsernameAndPassword(logininfo linfo)
       {
        logininfo linf = null;
        SqlDataReader dr = null;
        try
        {
            con.Open();
            SqlCommand com = new SqlCommand("adminlogin", con);
            com.CommandType = CommandType.StoredProcedure;
            SqlParameter q = new SqlParameter();
            q = com.Parameters.AddWithValue("@username", linfo.username);
            q = com.Parameters.AddWithValue("@password", linfo.password);

            dr = com.ExecuteReader();
            linf = new logininfo();

            while (dr.Read())
            {

                linf.username = dr["username"].ToString();
                linf.password = dr["password"].ToString();

            }
        }
        catch (Exception ex)
        {

            return new logininfo();
        }
        finally
        {

            dr.Close();
            con.Close();
        }
        return linf;


       }

ログインしようとすると、NullReferenceException が見つかりました。例外は

       See the end of this message for details on invoking 
       just-in-time (JIT) debugging instead of this dialog box.

       ************** Exception Text **************
       System.NullReferenceException: Object reference not set to an instance of an  
       object.
       at 

       chitty.App_Code.DAL.SERVICES.loginservice.ViewLoginByUsernameAndPassword
      (logininfo linfo)
       at chitty.frmlogin.btn_login_Click(Object sender, EventArgs e)
      at System.Windows.Forms.Control.OnClick(EventArgs e)
      at System.Windows.Forms.Button.OnClick(EventArgs e)
      at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
      at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32   
      clicks)
      at System.Windows.Forms.Control.WndProc(Message& m)
      at System.Windows.Forms.ButtonBase.WndProc(Message& m)
      at System.Windows.Forms.Button.WndProc(Message& m)
      at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr 
      wparam, IntPtr lparam)


      ************** Loaded Assemblies **************
      mscorlib
      Assembly Version: 4.0.0.0
     Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
      CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
      ----------------------------------------
     chitty
     Assembly Version: 1.0.0.0
     Win32 Version: 1.0.0.0
     CodeBase: file:///C:/Program%20Files/itek/chittysoft/chitty.exe
     ----------------------------------------
      System.Windows.Forms
      Assembly Version: 4.0.0.0
       Win32 Version: 4.0.30319.1 built by: RTMRel
      CodeBase:              

       file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms

      /v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
      ----------------------------------------
      System.Drawing
      Assembly Version: 4.0.0.0
      Win32 Version: 4.0.30319.1 built by: RTMRel
      CodeBase:  file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/           
      v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
      ----------------------------------------
      System
      Assembly Version: 4.0.0.0
      Win32 Version: 4.0.30319.1 built by: RTMRel
      CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/   
      v4.0_4.0.0.0__b77a5c561934e089/System.dll
      ----------------------------------------
      System.Data
      Assembly Version: 4.0.0.0
      Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
      CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/  
      v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
      ----------------------------------------
     System.Core
        Assembly Version: 4.0.0.0
        Win32 Version: 4.0.30319.1 built by: RTMRel
       CodeBase:             
       file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/  
       v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
       ----------------------------------------
       System.Configuration
       Assembly Version: 4.0.0.0
       Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
       CodeBase: 
       file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/   
       v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
       ----------------------------------------
       System.Xml
       Assembly Version: 4.0.0.0
       Win32 Version: 4.0.30319.1 built by: RTMRel
       CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/  
       v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
       ----------------------------------------
       System.Transactions
       Assembly Version: 4.0.0.0
       Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
       CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Transactions/ 
       v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
       ----------------------------------------
       System.EnterpriseServices
       Assembly Version: 4.0.0.0
       Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
       CodeBase: 
       file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/  
       v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
       ----------------------------------------

       ************** JIT Debugging **************
       To enable just-in-time (JIT) debugging, the .config file for this
       application or computer (machine.config) must have the
       jitDebugging value set in the system.windows.forms section.
       The application must also be compiled with debugging
       enabled.

       For example:

       <configuration>
              <system.windows.forms jitDebugging="true" />
       </configuration>

       When JIT debugging is enabled, any unhandled exception
       will be sent to the JIT debugger registered on the computer
       rather than be handled by this dialog box.

app.config で "jitdebugging=true" も設定しましたが、それでもこのエラーが発生します。解決策を見つけてください。

4

1 に答える 1

0

I guess this is because you are trying to close dr in finally block , Finally block is going to execute all the time as it will be call all the time.

There might be error before opening or creating object of dr , in that condition dr might never be assigned or open and you are forcefully closing it.

try to move these code in Catch block instead of Finally or if you are so sure that con and dr will be available and open you can write those statement outside try block.

    finally
    {
        dr.Close();
        con.Close();
    }
于 2012-05-14T07:33:30.533 に答える