[VB.NET] System.Data.OleDb.OleDbException

martedì 07 ottobre 2003 - 15.04

naighes Profilo | Newbie

Salve a tutti, sono nuovo! :-)
Sto tentando invano di effettuare una INSERT, come mostra il codice seguente:


code:--------------------------------------------------------------------------------
'Ricavo i valori
codice = CodiceArticolo.Text
descrizione = descrizioneArticolo.Text
unita = unitaMisuraArticolo.Text
note = noteArticolo.Text
prezzo = Cdbl(prezzoArticolo.Text)
ricarico = CInt(ricaricoArticolo.Text)
iva = CInt(ivaArticolo.Text)

'Definisco la stringa
Dim strSql As String
strSql = "INSERT INTO Articoli (Codice,Descrizione,Prezzo,Ricarico,Unit
aDiMisura,Iva,Note) VALUES ('" & codice & "', '" & descrizione & "', " & prezzo & ", " & ricarico & ", '" & unita & "', " & iva & ", '" & note & "')"

'E procedo con l'inserimento
objCn.Open()
Dim objCmd As New OleDbCommand(strSql, objCn)
objCmd.ExecuteNonQuery()
objCn.Close()
end code: --------------------------------------------------------------------------------


Mi viene restituito il seguente errore:

Eccezione non gestita di tipo "System.Data.OleDb.OleDbException" in system.data.dll

Solo che non mi viene riportata esattamente il tipo specifico di eccezione che è stata sollevata...
Mi disassembla il codice e mi fa vedere l'istruzione assembler incriminata!
Ma dico, come posso capire?

Qualcuno può delucidarmi?
Vi ringrazio anticipatamente.

Admin Profilo | Junior Member

ciao, e benvenuto.

In questi casi, l'unico metodo infallibile è quello di fare una bella response.write della stringa sql generata, nel tuo caso:

response.write(strSql)

commentando magari il codice che esegue il comando, per evitare l'errore.
Quindi, prova a lanciare la query direttamente sul DB, e vedi se funziona.
Un errore molto frequente è dato dal fatto che nelle textbox vengono immessi degli apici, che vanno a fare casino poi nel concatenamento.
Per risolvere del tutto questo problema si dovrebbero usare i Parameters:
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbParameterClassTopic.asp?frame=true

Spero di aver risposto in maniera esauriente.

Ciao

Stefano Giannone [MCP .NET]

naighes Profilo | Newbie

Vuoi sapere da cosa dipendeva?
Dal fatto che "Note" è un costrutto sintattico riservato di sql!

Roba da non credere.
Mi è bastato sostituire il campo del database "Note" in "Varie" e tutto ha cominciato a funzionare a meraviglia!

Ti ringrazio infinitamente per l'interessamento.

Alla prossima! :-)

Admin Profilo | Junior Member

forse potevi anche lasciare "Note" come nome del campo... e riferirti ad esso da stringa Sql con "[Note]"

Cmq, se hai cambiato nome al campo... meglio così.

Ciao

Stefano Giannone [MCP .NET]
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