Logo UGIdotNET

Discussione 'inserimenti in database access'

# Pubblicato il 09 set 2004 12.35 - Rispondi
Pier Paolo Pandolfi
inserimenti in database access
Salve a tutti.
Ho un problema con un insert in accessa tramite datareader.
La seguanti stringa:
"insert into utente (user,pwd,ruolo,id_societa) values ('" & duplicaApici(Me.txtUser.Text) & "','" & duplicaApici(Me.txtPw.Text) & "','" & Me.cmbRuolo.Text & "'," & ID_Soc & ")"

è equivalente alla sua runtime:
"insert into utente (user,pwd,ruolo,id_societa) values ('pp','pp','Rilevazione presenze',1)"

La variabile ID_Soc è integer.... il campo id_societa è numerico...
Eseguendo la query direttamente in access funziona.
Se la eseguo da programma, il costrutto try catch mi indica
un errore nella sintassi INSERT INTO della query.
Stiamo impazzendo in tre!
Aiuto!
Grazie anticipatamente


# Pubblicato il 09 set 2004 13.28 - Rispondi
Corrado Cavalli
Re: inserimenti in database access
La query sembra ok, però se fossi in te userei i parametri anzichè creare le query direttamente le quali oltre ad essere illeggibili posso dare origine a problemi di sicurezza

HTH
Corrado
# Pubblicato il 09 set 2004 13.28 - Rispondi
Marco Barzaghi
Re: inserimenti in database access
> Ho un problema con un insert in accessa tramite datareader.
> La seguanti stringa:

in che senso insert e datareader?

> "insert into utente (user,pwd,ruolo,id_societa) values ('" &
> duplicaApici(Me.txtUser.Text) & "','" & duplicaApici(Me.txtPw.Text) & "','" &
> Me.cmbRuolo.Text & "'," & ID_Soc & ")"

Attenzione a concatenare parametri per fare stringa SQL.
Prova dare un occhio in giro ai problemi di "SQL injection", problema molto fastidioso soprattutto se si parla di contesto web.
E' prefereibile l'uso dei parametri.

> è equivalente alla sua runtime:
> "insert into utente (user,pwd,ruolo,id_societa) values ('pp','pp','Rilevazione
> presenze',1)"

la sintassi sembra corretta prova dare un occhio se il support segnala qualche problema/bug/tips:

http://www.google.com/search?hl=it&ie=UTF-8&q=site%3Asupport.microsoft.com+%22Syntax+Error+in+INSERT+INTO%22+access&lr=

HTH M.rkino

--
Marco Barzaghi - [MVP - MCP]
http://mvp.support.microsoft.com - http://italy.mvps.org
UGIDotNet - User Group Italiano .NET, http://www.ugidotnet.org
Read my WebLog: http://blogs.ugidotnet.org/markino
# Pubblicato il 09 set 2004 14.43 - Rispondi
Pier Paolo Pandolfi
Re: inserimenti in database access
Ho risolto.
Sembra incredibile, ma nella tabella access se dò il nome "user" ad un campo,
l'insert fallisce ma solo da applicazione!!!!
Ho verificato che non ci siano alias in tutta l'applicazione.
Rinominando il campo da "user" a "user_id" (o qualsiasi altro nome)
l'insert FUNZIONA!
Misteri della fede.
# Pubblicato il 11 set 2004 8.42 - Rispondi
Alessandro Scardova
Re: inserimenti in database access
Ciao,
USER è una reserved Keyword sia del T-SQL che di ODBC, non lo è per il JET.
Il QueryParser del provider OLEDB per il jet però la considera una keyword (come "name") e quindi rialscia un syntax error. Dovresti usare nel SQL Command le parentesi quadre [USER].
Alternativamente potresti fare una Query con Parametri in access e usarla dall'applicativo come fosse una Stored di SQL.
ciao
AS



© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185