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
App. WinForms / WPF .NET
Controllo procedura datareader con database mysql
mercoledì 26 maggio 2004 - 12.29
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 26 mag 2004 - 12:29
Ciao david,
sto lavorando con vbnet 2003, database mysql e un semplice tabella con 4 campi, 3 sono varchar il 4° e di tipo date
devo caricare i dati semplicemente in una listview ma mi esce il seguente errore quando faccio il read del datareader:
NO_DATA. informazioni sull'errore non disponibili.
ti posto il codice
Me.ListView1.Items.Clear()
Dim litem As ListViewItem
Dim Sublist As ListViewItem.ListViewSubItem
Dim sql As String
If Me.TextBox18.Text = "" Then
sql = "SELECT nominativo,indirizzo,sentenza,data FROM persone_fal ORDER BY nominativo"
Else
sql = "SELECT nominativo,indirizzo,sentenza,data FROM persone_fal WHERE nominativo LIKE '" & Replace(Me.TextBox1.Text, "'", "''") & "%" & "'" & "ORDER BY nominativo"
End If
cmd = New OdbcCommand(sql, db)
dr = cmd.ExecuteReader
While dr.Read
litem = ListView1.Items.Add(dr.GetValue(dr.GetOrdinal("nominativo")), 0)
Dim s As String
Sublist = litem.SubItems.Add(dr.GetString(1))
Sublist = litem.SubItems.Add(dr.GetString(2))
Sublist = litem.SubItems.Add(dr.GetString(3))
End While
dr.Close()
questa procedura si trova in un threads e se inserisco solo due campi nella select, esempio nominativo e data, mi funziona, se uso lo star(*) per indicare tutti i campi non mi funziona.
E' starno mi sai dire qualcosa?
Ciao
Fabio
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 26 mag 2004 - 14:29
Apri MySQLCC e prova a passare la query.
Se il risultato è NO_DATA significa che i filtri che hai applicato sono errati visto che non ritornano risultati.
ciao
david
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 26 mag 2004 - 17:06
ho fatto altre prove e ho notato che la query che passo può selezionare solo 2 campi del database, ma la cosa bella è che su un altro pc dove c'è installato vbnet 2003 e mysql la stessa edentica procedura, stesso codice, stesso database copiato ed incollato funziona tutto perfettamente.
Non so cosa fare in quanto sul mio pc dove il database in questione non funge, altri database funzionano.
Ciao
Fabio
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 27 mag 2004 - 08:19
Formatta e reinstalla Windows XP oppure usa il ripristino configurazione di sistema, dovresti risolvere :)
A parte gli scherzi è strano questo comportamento. Io ti ho detto appunto di provare con MySQLCC per verificare se effettivamente le query che lanci ritornano indietro dei dati.
Provare lo stesso programma su più computer non è proprio uguale visto che ogni computer è diverso dall'altro così come l'installazione di MySQL immagino.
Non ti tocca che fare ancora dei test e fare debug.
ciao
david
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 27 mag 2004 - 10:09
Ciao david, scusa se non te l'ho detto ma ho passato la query su mycc e funziona pefettamente non so cosa fare anche perchè come ho detto prima sullo stesso pc un altro database di mysql funziona. ti volevo chiedere anche un'latra cosa, sto utilizzando questa stringa di connessione ma volevo chiederti cosa significava la proprietà OPTION=3
db.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=WINFAIL;UID=root;PASSWORD=;OPTION=3"
Ciao
Fabio
Amodio
Profilo
| Expert
525
messaggi | Data Invio:
gio 27 mag 2004 - 11:59
quel
option = 3
specifica la connessione via odbc via 3.1
guarda qui per maggiori dettagli
http://dev.mysql.com/doc/connector/odbc/en/faq_3.html
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 27 mag 2004 - 13:33
Ciao david,
l'errore NO_DATA ecc. l'ho trovato e stava nel fatto che quando caricavo la listview nella query di select vi era un campo nullo, però ho settato la tabella ad avere possibilità di valori nulli perchè nel programma può succedere che un campo di inserimento viene omesso, solo che quindi quando vado a fare il read del reader devo su ogni campo della tabella fare il controllo se è nullo?
esempio:
if dr.ISDBNULL(1)=True then
esegui
else
esegui-------dr.GetString(1)
end if
Ciao
Fabio
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 27 mag 2004 - 14:47
Beh è chiaro.
Se non vuoi avere rotture di scatole per ciò che riguarda i campi NULL, progetta la tua base di dati in modo migliore e al posto di NULL usa dei blank o altro, però il NULL in alcuni casi si rivela molto utile.
ciao
david
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
gio 27 mag 2004 - 18:39
David, ho fatto delle prove ed è confermato che il campo NULL mi mette i bastoni tra le ruote, la stessa tabella se utilizzo il riferimento e la programmazione con ADODB 7 mi funziona perfettamente. In ADO NET ho provato a fare un altro tipo di programmazione ossia passo passo con delle IF..END IF controllare se il campo della tabella fosase NULL con la proprietà
datareader.ISDBNULL(indice_colonna) ma mi esce lo stesso errore appena passo sulla colonna indiziata, come posso risolvere il problema? Nell'INSERT vorrei lascaire i campi che mi servono con il VALORE NULL, mi puoi dare una dritta?
Ciao
FABIO
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
sab 29 mag 2004 - 13:07
David,
potrebbe essere il mio pc che sta incasinato, visto che su un'altra macchina funziona perfettamente anche senza utilizzare il metodo ISDBNULL.
Ti farò sapere dopo la formattazione del mio pc e dopo le prova.
Ciao
Fabio
Vi
Profilo
| Newbie
2
messaggi | Data Invio:
mer 9 giu 2004 - 17:40
Ho sperimentato lo stesso problema con una windows application in c# con accesso ad un server dati ingres tramite driver ODBC.
Leggendo campi valorizzati con la stringa di lunghezza zero (ATTENZIONE: non è il valore null!) il codice sia del datareader sia del metodo fill del dataadapter andava in errore se l'applicativo girava sotto win 98 o win 2000; dopo più di due giorni di ricerche ho trovato i seguenti link
http://support.microsoft.com/default.aspx?scid=kb;en-us;319243
http://www.microsoft.com/downloads/details.aspx?FamilyID=6ccd8427-1017-4f33-a062-d165078e32b1&displaylang=en
Per la verità, effettuando le operazioni consigliate nella pagina del primo link non è avvenuto nulla di valido, mentre installando l'ODBC .NET Data Provider
(dalla pagina del secondo link) tutto ha iniziato a funzionare regolarmente senza dover ricorrere a soluzioni casareccie del tipo di forzare il valore del campo a contenere un blank oppure concatenare uno spazio con il nome del campo nella stringa SQL ecc...
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 14 giu 2004 - 14:17
Grazie delle info che saranno sicuramente utili per chi ne ha bisogno.
ciao
david
Vi
Profilo
| Newbie
2
messaggi | Data Invio:
mar 15 giu 2004 - 13:26
Riguardo il problema dell'accesso a campi contenenti una stringa nulla è necessaria una precisazione:
Ho installato lo stesso programma per acceder ad una base dati ingres in C# su di una seconda macchina con win 98. Dopo aver installato le patch reperibili presso i siti indicati dai link (indicati nel precedente messaggio) il programma continuava, pervicacemente, a visualizzare il messaggio d'erore NO_DATA.
La soluzione, in questo caso, è stata di effettuare un aggiornamento del sistema operativo presso il sito della Microsoft:
http://v4.windowsupdate.microsoft.com/it/default.asp
Un saluto
Vincenzo
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 !