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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Problema INSERT su database Access
martedì 14 novembre 2006 - 20.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 14 nov 2006 - 20:47
Salve a tutti. Sto iniziando a cimentarmi con i database e per iniziare, per vari motivi, ho scelto di utilizzare un database access e sto sviluppando a tempo perso una piccola applicazione.
Per connettermi al database non ho utilizzato la procedura di collegamento del VS ma creo io manualmente la connessione fornendo tutti i parametri necessari. Fin qui tutto bene, la connessione avviene senza problemi e riesco anche a leggere il database facendo delle SELECT e appoggiandomi a dei dataadapter che vanno a riempire dei dataset.
Per quanto riguarda l'inserimento dei dati invece ho dei problemi. Ho cercato qualche tutorial in rete e poi mi sono imbattuto in questo topic
http://dotnethell.it/forum/messages.aspx?ThreadID=11720
Ho quindi cercato di adattarlo per access, ovviamente con scarsi risultati. Una volta che ho inserito i dati nel dataset li passo come parametri, ma viene generata un'eccezione: "Errore di sintassi nell'istruzione INSERT INTO." e non so dove sbattere la testa.
Le istruzioni che utilizzo sono le seguenti:
Dim SqlCmd As String = "INSERT INTO tbUtenti (Nome, Password, Ruolo) VALUES (@Nome, @Password, @Ruolo)"
Dim cmdUpdate As New OleDb.OleDbCommand(SqlCmd, FMain.ADOConn)
cmdUpdate.Parameters.Add("@Nome", Data.OleDb.OleDbType.VarChar, 20).Value = _
dstUtenti.Tables(0).Rows(dstUtenti.Tables(0).Rows.Count - 1)(0)
cmdUpdate.Parameters.Add("@Password", Data.OleDb.OleDbType.VarChar, 20).Value = _
dstUtenti.Tables(0).Rows(dstUtenti.Tables(0).Rows.Count - 1)(1)
cmdUpdate.Parameters.Add("@Ruolo", Data.OleDb.OleDbType.Integer).Value = _
dstUtenti.Tables(0).Rows(dstUtenti.Tables(0).Rows.Count - 1)(2)
cmdUpdate.ExecuteNonQuery()
Mi aiutate a capire dove e perchè sbaglio?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 14 nov 2006 - 20:58
>Salve a tutti.
Ciao!
>Sto iniziando a cimentarmi con i database e per
>iniziare, per vari motivi, ho scelto di utilizzare un database
>access e sto sviluppando a tempo perso una piccola applicazione.
>Per connettermi al database non ho utilizzato la procedura di
>collegamento del VS ma creo io manualmente la connessione fornendo
>tutti i parametri necessari. Fin qui tutto bene, la connessione
>avviene senza problemi e riesco anche a leggere il database facendo
>delle SELECT e appoggiandomi a dei dataadapter che vanno a riempire
>dei dataset.
Ti consiglio di riempire dei datatable se non hai bisogno delle funzionalità del dataset, sono più leggeri e veloci..
>
>Per quanto riguarda l'inserimento dei dati invece ho dei problemi.
>Ho cercato qualche tutorial in rete e poi mi sono imbattuto in
>questo topic
http://dotnethell.it/forum/messages.aspx?ThreadID=11720
>Ho quindi cercato di adattarlo per access, ovviamente con scarsi
>risultati. Una volta che ho inserito i dati nel dataset li passo
>come parametri, ma viene generata un'eccezione: "Errore di sintassi
>nell'istruzione INSERT INTO." e non so dove sbattere la testa.
>
>
>AddWithValue l'ho utilizzato perchè il compilatore mi segnalava
>che il metodo Add era obsoleto e in fase di debug mi veniva generata
>un'eccezione. Mi aiutate a capire dove e perchè sbaglio?
Quello che utilizzi è corretto, ma in sintassi T-SQL, ovvero l'SQL esteso di SQLServer..
In poche parole, funziona solo con System.Data.SQLClient..
Per la sintassi OLEDB, devi usare come segnaposto dei parametri i ?
ad esempio:
INSERT INTO TabUtenti (campo1,campo2,campo3) VALUES (?,?,?)
poi i parametri li devi indicare senza la @ ed il gioco è fatto..
Ciao!
Alx81 =)
http://blogs.dotnethell.it/suxstellino
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 14 nov 2006 - 22:26
Ciao e grazie per la risposta. Ho provato come dici, mettendo i ? e togliendo i @, ma mi da sempre lo stesso errore. Ho provato anche a togliere gli spazi ma niente. Ho provato anche ad aggiornare la query aggiungendo il campo ID (che nel codice che ho postato prima non avevo inserito), ma non è neanche quello il problema.
Ah, l'eccezione viene generata su cmdUpdate.ExecuteNonQuery(), quindi tutte le assegnazioni precedenti dovrebbero essere giuste.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 15 nov 2006 - 01:09
se puoi, postami il codice..
Alx81 =)
http://blogs.dotnethell.it/suxstellino
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 15 nov 2006 - 12:01
Ok, stasera se riesco ti posto il codice. Comunque quello per l'insert è quello che ho postato prima.
grancati
Profilo
| Newbie
29
messaggi | Data Invio:
ven 17 nov 2006 - 09:57
>Ciao e grazie per la risposta. Ho provato come dici, mettendo i ? e togliendo i @, ma mi da sempre lo stesso errore.
Ciao Hydra,
Password è una parola riservata, racchiudila tra []
----
"INSERT INTO tbUtenti (Nome, [Password], Ruolo) VALUES (?, ?,?)"
----
Ciao
Giorgio
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 21 nov 2006 - 17:38
Beh, racchiudendo Password tra [] funziona senza problemi. Spero sia questa la soluzione finale, io non sono esperto e devo fidarmi di voi.
Accetto la risposta di grancati ed è come se accettassi anche le risposte di alx_81 che è stato davvero disponibilissimo e mi ha in ogni caso dato preziosi aiuti.
grancati
Profilo
| Newbie
29
messaggi | Data Invio:
mar 21 nov 2006 - 22:31
>Beh, racchiudendo Password tra [] funziona senza problemi. Spero sia questa la >soluzione finale, io non sono esperto e devo fidarmi di voi.
ok, comprendo il dubbio, meglio indicare una fonte ufficiale
----
List of reserved words in Jet 4.0
http://support.microsoft.com/kb/248738/en-us
----
Ciao
giorgio
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 !