Errore OleDB

giovedì 22 gennaio 2009 - 11.27

frenk76 Profilo | Newbie

Ciao a tutti del forum,
sto realizzando un piccolo programma in vb.net per l'inventario dei pc presenti nel posto dove lavoro ed ho un problema, premetto con la mia esperienza in .net si limita ad un corso e all'autoapprendimento.
Ho un errore ( OleDbException non è stata gestita - Errore di sintassi nell'istruzione INSERT INTO.) che si presenta quando da un form faccio una INSERT SQL, la cosa strana che lo stesso codice funziona benissimo con un altro form del programma.
La connessione (fatta senza wizard) è ok perchè le SELECT per visualizzare i dati funzionano regolarmente.

ciao grazie Frenk76

lbenaglia Profilo | Guru

>OleDbException non è stata gestita - Errore di sintassi nell'istruzione INSERT INTO.

Ciao Francesco,

Benveuto sui forum di DNH
Evidentemente hai un errore di sintassi sul comando di INSERT.
Se ci posti la struttura della tabella (CREATE TABLE) e la tua INSERT possiamo vedere insieme di cosa si tratta.

>ciao grazie Frenk76
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

frenk76 Profilo | Newbie

Ciao e grazie
allora ti posto una parte di codice con la connessione al db e la INSERT:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
grazie frenk76

lbenaglia Profilo | Guru

>Dim connstring2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;"
OK, ti connetti ad un db Access...

>Sql2 = "INSERT INTO tb_utenti (nome, cognome, login, password,
>permessi) VALUES ('" & nome & "','" & cognome & "','" & log_admin
>& "','" & pwd_admin & "','" & permessi & "')"
...e componi dinamicamente il comando di INSERT.
Attenzione, procedendo in questo modo vai incontro ad una serie di problemi tipo attacchi di SQL Injection ed errori di sintassi nel caso in cui una variabile contenga un singolo apice "'".
Se vuoi un consiglio, incapsula quel comando in una Query Parametrica ed utilizza lato client la collation Parameters dell'oggetto OleDbCommand per valorizzare i parametri.
Prova a dare un'occhiata a questo thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=13913

>grazie frenk76
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

frenk76 Profilo | Newbie

Trovato il problema, c'era un campo nell'INSERT con un nome diverso

Grazie alla prossima Frenk76

lbenaglia Profilo | Guru

>Trovato il problema, c'era un campo nell'INSERT con un nome diverso
OK, ma valuta molto attentamente quanto scritto sopra...

>Grazie alla prossima Frenk76
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Jeremy Profilo | Guru

L'uso dei parametri è fondamentale.....bisognerebbe VIETARE l'uso delle query a concatenazione di stringhe......(è tentato suicidio)

Chi usa le query non parametriche....dovrebbe finire in galera!!!!

Ciao.....

frenk76 Profilo | Newbie

Ciao grazie del consiglio, al momento uso solo io questa applicazione ma tutto quello che mi dite è gradito.
Ho una domanda, come e dove devo impostare una variabile globale che mi serve per far visualizzare una variabile indice in 2 form diversi?

frenk76

Jeremy Profilo | Guru

Puoi dichiararla pubblica in un modulo pubblico....

Public Module
Public tuavariabile as integer
End Module

Ciao

frenk76 Profilo | Newbie

Ciao grazie ma ho provato come dici ru e mi da sempre errore
io ho provato a mettere in cima al form1 che deve passare il valore questo:

Public indice As Integer
(se non sbaglio in questo modo tutto il fom1 vedrà quella variabile indice)

poi però non so come farla vedere al form3 che deve ricevere la variabile

frenk76

Jeremy Profilo | Guru

Fai click con il tasto destro sul nome del progetto--->Aggiungi---->Nuovo elemento----->Modulo
Ti si apre un file con scritto

Module Module1
End Module

Tu lo cambi così....

Public Module Module1
'e qui dichiari la tua variabile pubblica
End Module

Effettivamente nel post precedente ho dimenticato di indicare il nome del Modulo(Module1)..
Scusa ma non conoscevo il tuo livello di conoscenza...

Ciao.....

frenk76 Profilo | Newbie

Grazie adesso è ok

ciao frenk76
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5