Piccolo problema con datareader ASP.NET VBscript
CyberSiege non è online. Ultima attività: 16/05/2008 10.38.21CyberSiege
Inserito il: 15 maggio 2008 15.52
5 messaggi dal 12 mag 2008 Istalla Microsoft Silverlight!
Ciao a tutti,
sto creando una form per l'invio di una news letter ma ho un piccolissimo problema con datareader. Quando inserisco la condizione nel ciclo per far leggere ogni riga dal database contenente gli indirizzi funziona tutto perfettamente fino a quando non giuge il punto nel quale la condizione di ciclo diventa false e quindi dovrebbe smettere di ciclare, in effetti lo fa solo che ciò che uso per la condizione cioè il datareader non ammette valori nulli quindi il programma genera un errore...

Come spiegazione è da cani scusate, vi posto il codice dove sicuramente si capirà tutto perchè è molto semplice...

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If ((TextOggetto.Text <> "") And (TextBody.Text <> "")) Then

Dim strConn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Prova.mdf;Integrated Security=True;User Instance=True")

strConn.Open()
Dim datRead As SqlClient.SqlDataReader
Dim commSQL As New SqlClient.SqlCommand()


commSQL.Connection = strConn
commSQL.CommandText = "SELECT * FROM Tab_UT "


Dim par As String

datRead = commSQL.ExecuteReader()

Do While (datRead.GetString(3) <> "")

par = Trim(datRead.GetString(3))
' ora per testare visualizzo riga per riga uso un MSGbox successivamente qui vi sarà il
'codice di invio mail che ho gia pronto e che conterra alla
' voce to il contenuto di datread.getstring(3)

MsgBox(par)

Loop
End If
End Sub


Spero che sia chiaro in ogni caso non esitate a chiedere.... aiuto please sto diventanto pazzo per sta cavolata
RE: Piccolo problema con datareader ASP.NET VBscript
ridaria non è online. Ultima attività: 14/08/2008 10.49.44ridaria
Inserito il: 15 maggio 2008 17.15
contributi / 371 messaggi dal 10 set 2001 Istalla Microsoft Silverlight!
Per questo ed altri motivi impedisco che nei campi del db ci siano valori NUll.

In questo caso i valori null ci sono.

A quanto vedo usi sqlExpress, allora lancia una query SQL sul db via SQL server e ripulisci i campi dai valori di tipo null sostituendoli con stringa vuota "".

Appresso la query da usare:
Update nomeTAbella set nomeCampo='' where nomeCampo IS NULL

Ripulita così la tabella non hai più il problema dei valori Null nel dataReader

Chiaramente dovrai aggiustare eventuali routine che scrivono dati in quella tabella, qualora queste routine lasciano dei campi a valore NUll.


Ciao Riccardo

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....
RE: Piccolo problema con datareader ASP.NET VBscript
m.casati non è online. Ultima attività: 05/09/2008 17.11.08m.casati
Inserito il: 15 maggio 2008 19.32
contributi / Top Poster / Community manager / www.guru4.net / Blog / 2303 messaggi dal 13 giu 2001 Istalla Microsoft Silverlight!
ridaria ha scritto:
Per questo ed altri motivi impedisco che nei campi del db ci siano valori NUll.

Scusa ma non sono d'accordo: NULL è diverso da "" o da 0 o da false o da altri valori predefiniti e spesso questa differenza è fondamentale (ad esempio per capire se il campo è stato scritto oppure no). Ti faccio un esempio (concreto e reale): dato un db "utenti" esistente ad un certo punto ti chiedono di aggiungere una funzionalità "invia la newsletter" che prevede l'accettazione esplicita da parte dell'utente alla ricezione delle email. Aggiungi un bel campo true/false nel database e... come distingui l'utente che non ha ancora espresso il consenso da chi ha detto "no, grazie"? Non vorrai usare un campo più grande per fare quello che si può fare con un bit, vero?

Alla fine sono gli stessi motivi per cui ho gioito all'introduzione dei nullable types in .NET...

In questo caso i valori null ci sono

Già, credo anch'io sia questo il problema.
La soluzione che propongo è quella di verificare se il campo è o meno null con una cosa di questo tipo:
string myValue = (dr["MyField"] == DBNull.Value)
? string.Empty
: dr["MyField"].ToString();


HTH

Matteo Casati
GURU4.net
RE: Piccolo problema con datareader ASP.NET VBscript
ridaria non è online. Ultima attività: 14/08/2008 10.49.44ridaria
Inserito il: 16 maggio 2008 09.04
contributi / 371 messaggi dal 10 set 2001 Istalla Microsoft Silverlight!
... questo era più che chiaro, in situazioni che vengono a crearsi a posteriori, come questa che hai prospettato, il campo null ha la sua ragion d'essere.

Il mio : "Per questo ed altri motivi impedisco che nei campi del db ci siano valori NUll" è riferito alla fase di progettazione, nella quale fase, tutti i valori o sono veri o falsi.

Il caso che hai prospettato tu è un caso "Particolare" che si verifica, anche spesso, ma a procedura/progetto avviato.

Non dimenticare che la gestione dei campi null in fase di lettura assorbe risorse, prima di leggere e scrivere il dato ad esempio in una textBox:
devi:

If is dbNull(dr("MyField")) then
textBox.text = ""
else
textBox.text =dr("MyField").toString
end if

se hai la certezza che non vi siano campi a valore Null (perché lo hai progettato) e aggiungerei allora "Bene"
devi solo scrivere/eseguire la seguente istruzione:
textBox.text =dr("MyField").toString

Il controllo/gestione dei campi a valore Null, non puoi negarlo, assorbe risorse sia in sede di scrittura del codice che in sede di elaborazione.
Devi scrivere tre istruzioni in luogo di una sola, ed il processo deve eseguire il controllo che hai scritto.

Riccardo

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....
RE: Piccolo problema con datareader ASP.NET VBscript
m.casati non è online. Ultima attività: 05/09/2008 17.11.08m.casati
Inserito il: 16 maggio 2008 10.03
contributi / Top Poster / Community manager / www.guru4.net / Blog / 2303 messaggi dal 13 giu 2001 Istalla Microsoft Silverlight!
ridaria ha scritto:
alla fase di progettazione, nella quale fase, tutti i valori o sono veri o falsi. Il caso che hai prospettato tu è un caso "Particolare" che si verifica, anche spesso, ma a procedura/progetto avviato.

Questo è tendenzialmente vero e possibile, anche se con alcune eccezioni: per tornare al mio esempio sull'utente considera ad esempio una profilazione a step, tipo quella su LinkedIn...

se hai la certezza che non vi siano campi a valore Null (perché lo hai progettato) e aggiungerei allora "Bene"

Sì, normalmente anche io evito l'allow null nel db ma più per pirgrizia che per una considerazione sulle performance (un if è imho trascurabile a meno che non venga eseguito migliaia e migliaia di volte). Tutto dipende da come (quante e quali applicazioni) viene usata la base dati: se è solo per la mia applicazione e un valore null non influenza la logica di comportamento (non è uno special case) ma andrebbe semplicemente ricondotto ad un valore predefinito (ad esempio uno string.empty o uno zero o un false) tanto vale far gestire il valore stesso al db.

Matteo Casati
GURU4.net
RE: Piccolo problema con datareader ASP.NET VBscript
ridaria non è online. Ultima attività: 14/08/2008 10.49.44ridaria
Inserito il: 16 maggio 2008 10.30
contributi / 371 messaggi dal 10 set 2001 Istalla Microsoft Silverlight!
ok, noi ci siamo fatti prendere da un pò di teoria, speriamo che il caro CyberSiege abbia adesso la sua soluzione, che nella nostra disquisizione è stata identificata.

Ciao
riccardo

dopo la laurea dissi: ho finito gli esami, qualcuno mi rispose: Gli esami non finiscono mai ....
RE: Piccolo problema con datareader ASP.NET VBscript
CyberSiege non è online. Ultima attività: 16/05/2008 10.38.21CyberSiege
Inserito il: 16 maggio 2008 10.38
5 messaggi dal 12 mag 2008 Istalla Microsoft Silverlight!
Infatti non sono ammessi valori nulli in quella tabella del db.... il fatto è quando finisce di scorrerlo...cmq ho risolto grazie a tutti della disponibilita
RE: Piccolo problema con datareader ASP.NET VBscript
m.casati non è online. Ultima attività: 05/09/2008 17.11.08m.casati
Inserito il: 16 maggio 2008 11.14
contributi / Top Poster / Community manager / www.guru4.net / Blog / 2303 messaggi dal 13 giu 2001 Istalla Microsoft Silverlight!
ridaria ha scritto:
noi ci siamo fatti prendere da un pò di teoria

Già
La discussione è stata piacevole e probabilmente - alla fine - la pensiamo allo stesso modo!
Alla prossima.

Matteo Casati
GURU4.net

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


maltra - 761 pt
vladimiro - 502 pt
fabrica - 180 pt

Ultimi vincitori: fabrica, vladimiro, PeppeDotNet

Iscriviti anche tu e raccogli punti. Questo mese in palio VS 2008 + Windows Server 2008, ReShaper e 1 ebook!



COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums