Problema con insert...

giovedì 19 luglio 2007 - 10.26

n3mesi Profilo | Newbie

Ciao a tutti...ho un problema che non riesco a risolvere...
Devo inserire semplicemente un record nel database...per questa applicazione utilizzo un database access...
Inserisco in una form i dati e clicco su un pulsante che si occupa di fare la insert.
Mi si scatena una eccezione strana, almeno a mio avviso:
OleDbException non è stata gestita dall'utente: errore di sintassi nell'istruzione insert into.
Il fatto è che ho controllato mille volte la query (tra l'altro semplicissima), e non mi sembra ci sia niente di strano:

"insert into utente (user, pass, nomecompleto) values ( ' " + txbUser.Text + " ', ' " + txbPass.Text + " ', ' " + txbNome.Text + " ')";

Controllando in debug, effettivamente vengono caricati i valori giusti...copiando e incollando la query su access ed eseguendola, l'inserimento avviene correttamente, mentre eseguendo la stessa query dall'applicazione, mi viene generata questa eccezione.
Qualcuno sa dove sbaglio?
Oltre a questa query specifica, tutte le altre query di insert (solo per l'insert) sulle tabelle mi generano la stessa eccezione.

filippo.monti Profilo | Junior Member

Prova a controllare la inner exception per vedere il tipo di errore più specifico.
Se l'istruzione la metti tra try e catch potrai fermarti ed analizzare meglio il tutto.
Ciao
Filippo

n3mesi Profilo | Newbie

la inner exception è null...

filippo.monti Profilo | Junior Member

se metti l'istruzione tra try e catch vedi che ti da qualcosa altrimenti non ti direbbe che la OledbException non è stata gestita dall'utente. Comunque proverei a togliere gli apici singoli...
Ciao

Filippo

n3mesi Profilo | Newbie

Niente...nella try catch ho ancora a null la inner exception...
Ho anche provato a togliere gli apici ('), ma niente...mi da sempre errore di sintassi nella insert.
A me sembra una cosa strana, perchè poco tempo fa avevo fatto una applicazioncina web sempre con access e la insert la facevo in questo modo, e tutto funzinava...boh.
Ora con la windows application non va...apparentemente senza motivo...visto che copiando e incollando la stessa query su access, viene eseguita tranquillamente.

filippo.monti Profilo | Junior Member

Ed il punto_e_virgola alla fine?
Io normalmente uso passare i parametri tramite l'oggetto parameters per esempio in questo modo:

With .cmd.Parameters
.Clear()
.AddWithValue("id", oIva.id)
.AddWithValue("codice", oIva.codice)
.AddWithValue("descrizione", oIva.descrizione)
.AddWithValue("percentuale", oIva.percentuale)
.AddWithValue("decodificaIn", oIva.decodificaIn)
.AddWithValue("decodificaOut", oIva.decodificaOut)
End With

Try
.cmd.CommandText = strQry
.cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
End Try

per cui non ho mai avuto problemi di apici, stringhe quant'altro.
Mi risulta moltro strano che l'oggetto Exception non ti dica il tipo di errore. Senza di quello brancoli veramente nel buio. Potrebbe, per esempio, essere un problema di connessione al DB per cui controlli la stringa ma l'errore non è lì..
Ciao

Filippo

n3mesi Profilo | Newbie

ok, grazie mille per l'iteressamento...faccio alcuni tentativi, allora...
Comunque per quanto riguarda la storia degli apici, nel web, la stessa stringa funziona...
Per il resto, connessioni varie al database, ecc ecc, le altre query di select, update e delete funzionano senza problemi...
Ciao.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5