Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    NullReferenceException !

    Salvelox, sto usando una mia dll di nome Database per connettermi ad un db access, ma continuo ad avere un errore che dice :

    "System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto."

    sulla riga che contiene il WHILE !

    codice:
    Dim objDB = New Database
    Dim External_OLEREADER As OleDbDataReader	
                     
    Dim ConnString as String			  
    ConnString = ConfigurationSettings.AppSettings("strconn_access")
    
    External_OLEREADER = objDB.ac_estrai(sql,ConnString)
    
    while ( External_OLEREADER.Read() )
    '
    '
    '
    end while




    La classe è questa :

    codice:
    Imports System.Web
    Imports System.Web.UI
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    Imports System.Configuration
    Imports System.Web.UI.HtmlControls
    Imports System.Web.UI.WebControls
    Imports System.Web.UI.Page
    
    Public Class Database
    	Private _TipoDB as Integer
        
    	' Oggetti ACCESS
    	Public internal_OLECONN   as  OleDbConnection
    	Public internal_OLEREADER as  OleDbdatareader
    
            ' Oggetti SQL SERVER
    	Public internal_SQLREADER as SqlDatareader
    	Public internal_SQLCONN as   SqlConnection
    
            Public strconn
     
           ' Costruttore
           Public Sub New()
        	' SQL SERVER
    	'_TipoDB = 0
    
    	' ACCESS
    	_TipoDB = 1
           End Sub
    
    
    
    
    	Public Property TipoDB as Integer
            Get
    	  Return _TipoDB
    	 End Get
    
    	 Set
    	  _TipoDB=Value
    	 End Set
    	End Property
    
    
    
     
    	Private Function SqlConnetti(Indirizzo as String) as Boolean
       	 try
    		  internal_SQLCONN = new SqlConnection(Indirizzo)
    		  internal_SQLCONN.Open()
    		  Return True
    	 catch objexception as sqlexception
    		  Return False
    	 end try
    	End Function
    
    	Private Function OleDbConnetti(Indirizzo as String) as Boolean
         try
    		  internal_OLECONN = new OledbConnection(Indirizzo)
    		  internal_OLECONN.Open()
    		  Return True
    	 catch objexception as OleDbexception
    		  Return False
    	 end try
    	End Function
      
    
    	Public Function ac_estrai (StringaSQL as String, StringaConnessione As String) As OleDbDataReader
                if OleDbConnetti(StringaConnessione) = true then
    			   	dim cmd as OleDbCommand
                    cmd = new  OleDbCommand(StringaSQL, internal_OLECONN)
    				internal_OLEREADER = cmd.ExecuteReader()
    				Return internal_OLEREADER
    			end if
        End Function
    
    
    	 Public Function ss_estrai (StringaSQL as String, StringaConnessione As String) as SqlDataReader
    			if SqlConnetti(StringaConnessione) = true then
    			   	dim cmd as SqlCommand
                    cmd = new  SqlCommand(StringaSQL, internal_SQLCONN)
    				internal_SQLREADER = cmd.ExecuteReader()
    				Return internal_SQLREADER
    			end if
        End Function
    
    End Class

    dove diavolo sbaglio ?

  2. #2

    Re: NullReferenceException !

    Originariamente inviato da djciko
    dove diavolo sbaglio ?
    nel creare una funzione che restituisce un datareader. Il datareader e' un oggetto connesso al db che si istanzia, si riempie, si legge e si chiude insieme alla sua connessione. Non puoi scambiarlo da una classe funzione ad un'altra. L'errore e' il classico errore che viene visualizzato quando si cerca di utilizzare un oggetto che non esiste. Cioe' mi spiego
    qui
    codice:
    Dim External_OLEREADER As OleDbDataReader
    dichiari che External_OLEREADER e' una variabile di tipo OleDbDataReader. External_OLEREADER quindi non e' ancora una istanza (oggetto) valida.
    qui
    codice:
    External_OLEREADER = objDB.ac_estrai(sql,ConnString)
    ti aspetti che la funzione ac_estrai... ti restituisca un oggetto valido ma cosi' non e' per i motivi su esposti. Quindi External_OLEREADER non e' ancora un oggetto correttament istanziato e utilizzabile
    qui
    codice:
    while ( External_OLEREADER.Read() )
    cerchi di utilizzare External_OLEREADER che peo' non e' ancora un oggetto valido e utilizzabile e quindi viene sollevata l'eccezione NullReferenceException
    Saluti a tutti
    Riccardo

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Ok, non si possono ottenere readers disconnessi, se ho ben capito..Ma quindi, una soluzione ?

  4. #4
    Originariamente inviato da djciko
    Ok, non si possono ottenere readers disconnessi, se ho ben capito..Ma quindi, una soluzione ?
    ottenere invece di un datareader una datatable
    Saluti a tutti
    Riccardo

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Oppure utilizzare una sub che riempie un reader pubblico visibile dall'esterno, o viene fuori lo stesso problema ?

  6. #6
    Originariamente inviato da djciko
    Oppure utilizzare una sub che riempie un reader pubblico visibile dall'esterno, o viene fuori lo stesso problema ?
    viene fuori lo stesso problema
    Saluti a tutti
    Riccardo

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Ok, provo con una con una DataTable. Grazie 1000, gentilissimo !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.