Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Modificare valore campo dbnull di una datarow con altro valore.
giovedì 10 dicembre 2009 - 17.54
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Ciunino
Profilo
| Newbie
31
messaggi | Data Invio:
gio 10 dic 2009 - 17:54
Ciao a tutti. Spero possiate darmi una dritta perchè sto diventando pazzo dietro a questa (apparente, almeno per me) cretinata.
Ho un datatable tipizzato che pesca i dati da un database. Mettiamo per esempio che ci siano un campo int, uno string, e uno datetime.
Una volta recuperati i valori vado a leggere riga per riga la datatable che ho in mano.
for (int i = 0; i < mydt.Count; i++)
{
drow = mydt.Rows[i];
drow .CAMPOSTRING = "PIPPO";
}
Avrei bisogno di inserire nel campo string una certa frase, "pippo", ma se nel database in quel campo non c'è scritto nulla quando lo vado a leggere, nel mio datarow tale campo è giustamente DBNULL e non mi permette di scriverci dentro nulla. O meglio mi da il solito errore "Impossibile eseguire il cast di oggetti di tipo 'System.DBNull' sul tipo 'System.String'. "
Avete mica idea di come risolvere questo problema? Io ci ho provato tutto il giorno e poi mi sono arreso!
MagoDaniel1981
Profilo
| Newbie
39
messaggi | Data Invio:
gio 10 dic 2009 - 20:06
un buon sistema è usare COALESCE direttamente nella query che fai sul Db, la sintassi è
SELECT COALESCE(NomeCampo, 'PIPPO') as QuelloCheVuoi FROM Tabella
In questo modo, se NomeCampo è DbNull restituirà la stringa PIPPO, altrimenti il valore del campo.
Spero di esserti stato utile.
Ciao.
Daniel
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 11 dic 2009 - 00:13
>un buon sistema è usare COALESCE direttamente nella query
Nella maggior parte dei casi sono d'accordissimo con te, il problema è che il nostro Ciunino potrebbe non avere accesso al db.
In tal caso aggiungo con la possibilità dell'utilizzo del metodo IsNull del datarow:
http://msdn.microsoft.com/it-it/library/3fwatee0.aspx
Detto questo, per quanto possibile, agisci sulla query con quella funzione (correttamente indicata da MagoDaniel1981, coetaneo immagino
), quindi usa il mio suggerimento solo qualora tu non possa accedere al database.
Ed in generale, fai attenzione ad usare un datatable che è decisamente una soluzione pesante, che tende sempre di più ad essere tralasciata. Piuttosto pensa a creare le tue entità a mo' di classi/collezioni.
Ciao a tutti.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Ciunino
Profilo
| Newbie
31
messaggi | Data Invio:
ven 11 dic 2009 - 08:55
Grazie a entrambi per la risposta, e scusate per il mio ritardo nella risposta.
Proverò a fare come mi avete suggerito.
Ciao e ancora grazie!
Torna su
Stanze Forum
Elenco Threads
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 !