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
ObcException
giovedì 27 agosto 2009 - 15.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
paolope
Profilo
| Newbie
5
messaggi | Data Invio:
gio 27 ago 2009 - 15:56
Sono in vb.2005
Ho delle difficola su una procedura che funziona correttamente su diverse macchina sia xp che win 2000
, al contrario su una macchina appena riformattata win2000 sp4 , quando apro il programma mi esce questo errore
Io mi collego al database mysql con i drive odbc , ho installato su questa macchina il framework 2.0 SP1, e anche il language pack
o disistallato i drive odbc almeno un paio di volte facendo ovviamnete anche il test di connessione che risulta positivo
Stop cercando di risolvere questa problematica di odbcexception
Allora il database quando lo apro non mi da problemi
Dim Con_Str1 As String = "DATABASE=WEBAGENTI;DESCRIPTION=MySQL ODBC 3.51
Driver
DSN;DSN=WEBAGENTI;OPTION=2051;PORT=3306;SERVER=xxx.xxx.xxx.xxx;UID=root"
Dim ConWeb As New OdbcConnection(Con_Str1)
MessageBox.Show("APRO IL DATABASE")
ConWeb.Open()
SQLSelect = "SELECT * FROM PASS "
SQLSelect += "WHERE UTEN_NOME = '" & Txutente.Text.Trim & "' AND "
SQLSelect += "UTEN_PSW = '" & Txpassword.Text.Trim & "' "
Dim cmd As New OdbcCommand(SQLSelect, ConWeb)
PASSO = cmd.ExecuteReader
If PASSO.HasRows = False Then
MessageBox.Show(" Password o utente errati ")
PASSO.Close()
Exit Sub
End If
MessageBox.Show("faccio la read")
PASSO.Read()
il problema si verifica soltato sulla lettura di certi campi ad esempio se
leggo
PASSO("UTEN_NOME") il programma risponde perfettamente se invece prendo ad
esempio un'altro campo (che non ha nulla di particolare ) e che fa cmq parte
della query
PASSO("UTEN_TIPO") allora il programma mi da quell'errore indicibile che ho
riportato anche nelle mail precedenti
allora mi chiedo cosa possa differenziare un campo dall'altro e come posso
io risolvere questa problematica ?
avere delle Idee a riguardo anche un solo consiglio ...
grazie 1000
Paolo
System.Data.Odbc.OdbcException
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcDataReader.GetData(Int32 i, SQL_C sqlctype, Int32 cb, Int32& cbActualOut)
at System.Data.Odbc.OdbcDataReader.internalGetString(Int32 i)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i, TypeMap typemap)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
at System.Data.Odbc.DbCache.AccessIndex(Int32 i)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
at System.Data.Odbc.OdbcDataReader.get_Item(String value)
at Ordini_Server.Pass_Agente.Button1_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.PerformClick()
at System.Windows.Forms.Form.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.Control.ProcessDialogKey(Keys keyData)
at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
R3GM4ST3R
Profilo
| Junior Member
196
messaggi | Data Invio:
gio 27 ago 2009 - 22:02
Ciao, due consigli :
1) Questo codice è un po' troppo pericoloso, nel senso che se nelle caselle di testo mettono qualche carattere strano, sei passibile di sqlinjection et simla, quindi ti consiglio di usare i commandtext parametrici tipo :
string strExec = "INSERT INTO [TABELLA] (PAR1,PAR2,PAR3)VALUES(@PAR1,@PAR2,@PAR3)";
SqlParameter Parametro1 = new SqlParameter("@PAR1", SqlDbType.NVarChar, 50);
SqlParameter Parametro2 = new SqlParameter("@PAR2", SqlDbType.NVarChar, 50);
SqlParameter Parametro3 = new SqlParameter("@PAR3", SqlDbType.NVarChar, 50);
//Ora imposti un valore ad ogni parametro per fare un esempio...
Parametro1.Value = textbox1.Text;
Parametro2.Value = textbox2.Text;
Parametro3.Value = textbox3.Text;
//Poniamo il caso che il command sia CMD, gli aggiungi i parametri appena impostati per passare i valori al posto di concatenarli con + & etc etc
CMD.Parameters.Add(Parametro1);
CMD.Parameters.Add(Parametro1);
CMD.Parameters.Add(Parametro1);
//Poi la esegui normalmente come fai adesso CMD.executereader() etc etc
Per quanto riguarda il tuo errore, potrebbe essere dato da un problema di incompatibilità tra tipi di dato, una cosa del tipo che stai tentando di leggere un intero, oppure un valore NULL e lo stai impostando come stringa.Al massimo usa il metodo .tostring() alla fine dell'oggetto item del datareader esempio :
PASSO("UTEN_TIPO").tostring()
Se fai il debug passo a passo puoi vedere dove si incastra...
Ciao
P.S. L'esempio è con gli sqlparameter ma ci dovrebbero essere anche per odbc
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)
paolope
Profilo
| Newbie
5
messaggi | Data Invio:
ven 28 ago 2009 - 08:34
Ti ringrazio per l'immediata risposta , per quanto riguarda il mio errore il campo che sto cercano di visualizzare
e un semplicissimo campo char(1) , dove non ci sono campi nulli e tanto meno vuoti , la cosa strana è che negli altri pc questo problema non succede, ne tanto meno sulla mia macchina dove posso si fare il debug.
provero come mi hai consigliato tu di inserire tostring
grazie 1000
Paolo
paolope
Profilo
| Newbie
5
messaggi | Data Invio:
ven 28 ago 2009 - 08:43
Ciao..
Ho appena fatto questo tentativo di inserire il tostring ma il risultato non cambia
e putroppo come dicevo nel tread precedente non posso fare il debug in quanto è una macchina client
Ho provato a installare e disintallare il software diverse volte anche i drive odbc di mysql
non so che pesci prendere ...
paolope
Profilo
| Newbie
5
messaggi | Data Invio:
ven 28 ago 2009 - 14:51
Buon giorno .. allora ho finalmente risolto ..
il problema era sul mdac durante l'installazione io ho installato la versione 2.6 , installando invece la versione 2.8 sp1 il problema e scomparso
ringrazio tutti per l'attenzione e l'aiuto che mi avete fornito
saluti
Paolo
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 !