DataReader vuoto

giovedì 25 febbraio 2010 - 11.35

gae58 Profilo | Senior Member

salve,

ho una tabella A ed una Tabella B. La tabella B è collegata in modalità Padre Figlio ad A (la tabella B è il figlio).
Quando cancella il padre, ho inserito una funzione per cancellare tutti i figli. Se i figli sono presenti va tutto bene, se invece mancano mi restituisce questo errore:
Riferimento a un oggetto non impostato su un'istanza di oggetto.

il codice che uso è questo:
SqlDataReader dr = (SqlDataReader)SqlDsComunicazioniDett.Select(DataSourceSelectArguments.Empty);
if (dr.HasRows)
while (dr.Read())
{
SqlDsComunicazioniDett.Delete();
}
dr.Close();

Ho anche inserito i l controllo se ci sono righe, ma l'errore me lo restituisce sulla riga: if (dr.HasRows)

Qualche consiglio?

Non so se il codice che uso sia il migliore


Gaetano

paoval72 Profilo | Senior Member

Ciao, credo che il problema sia qui
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Se il datareader, per qualche motivo è null (e non senza righe), il controllo successivo scatena l'errore perchè per VS il Datareader "non esiste" (diciamo così...). per ovviare, potresti aggiungere un ulteriore test sul null:

if (dr!= null && dr.HasRows)

Prova e fammi sapere.

PV

gae58 Profilo | Senior Member

ti ringrazio per l'aiuto, ma non ho capito la risposta.

Se è vuoto perchè non ha figli dovrebbe bastare hasRow.
Forse il dataReader quando è vuoto si considera null?

grazie
Gaetano

paoval72 Profilo | Senior Member

Ma la condizione che ti ho proposto di aggiungere funziona?
Se sì, probabilmente, c'è qualcosa nel comando che passi al DataReader che non gli piace. Così, in realtà non interroga il Db o lo fa con parametri che il Db non riconosce (tra DbNull, null e simili è facile che accada) e quindi la query va in errore o non viene eseguita, lasciando il DataReader non inizializzato (e quindi a null).
E' un'ipotesi, dovresti andare a vedere in debug se il DataReader è effettivamente null quando non ci sono figli.
Resto a disposizione.
Ciao,
PV

gae58 Profilo | Senior Member

si la risposta è giusta, te l'ho anche convalidata.

grazie

per il chiarimento

Gaetano
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5