InsertInto : Access e C#

giovedì 21 maggio 2009 - 10.23

dyd666 Profilo | Junior Member

Salve a tutti
In una mia pagina aspx.cs ho questo codice
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Non da errori di sorta il "compilatore" all'avvio (ho messo tutti quegli 1 giusto per prova) , eppure il la tabella Utenti non si aggiorna...
Cosa sbaglio secondo voi?

Saluti e grazie in anticipo

lbenaglia Profilo | Guru

>Non da errori di sorta il "compilatore" all'avvio (ho messo tutti
>quegli 1 giusto per prova) , eppure il la tabella Utenti non
>si aggiorna...
>Cosa sbaglio secondo voi?

Non stai eseguendo quel Command
Utilizza il metodo ExecuteNonQuery per eseguire il comando di INSERT:
http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbcommand.executenonquery.aspx

Inoltre per evitare attacchi di SQL Injection ti suggerisco di parametrizzare il comando di INSERT (il massimo sarebbe incapsularlo in un oggetto Query parametrico), popolando lato client la collection Parameters con i valori dei vari parametri:
http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbcommand.parameters.aspx

>Saluti e grazie in anticipo
Prego.

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

dyd666 Profilo | Junior Member

Grazie per la risposta innanzitutto.
Ho modificato il codice aggiungendo questa riga:

result = Cmd.ExecuteNonQuery();

Mi da il seguente errore in esecuzione:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

lbenaglia Profilo | Guru

>Grazie per la risposta innanzitutto.
>Ho modificato il codice aggiungendo questa riga:
>
> result = Cmd.ExecuteNonQuery();
>
>Mi da il seguente errore in esecuzione:
>
>
>Errore server nell'applicazione '/Progetto - E_commerce CD_DVD_ASPNET'.
>Errore di sintassi nell'istruzione INSERT INTO.

Boh, ad occhio il comando di INSERT mi sembra sintatticamente corretto.
Puoi postare la struttura della tabella Utenti?

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

dyd666 Profilo | Junior Member

Ecco qua , scusa se ho inserito un'immagine , non sapevo come fare altrimenti XD
(sono niubbo , lo so)

http://www.pctunerup.com/up/results/_200905/20090521113105_sdf.jpg

lbenaglia Profilo | Guru

>http://www.pctunerup.com/up/results/_200905/20090521113105_sdf.jpg
Tutto Text?
Beh, l'ultimo valore nel comando di INSERT non è racchiuso tra singoli apici...

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

dyd666 Profilo | Junior Member

Si , tutto TEXT
Per fare una prova iniziale , poi modificherò i valori
Comunque ho aggiornato , apici messi.
Nulla
Sempre lo stesso errore.

EDIT: Sto utilizzando un database .mdb , ovvero stile Access 2003 pur utilizzando Access2007

lbenaglia Profilo | Guru

>Sempre lo stesso errore.
Se lo esegui direttamente da Access definendo una nuova query di INSERT?

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

dyd666 Profilo | Junior Member

Oddio , sto utilizzando Access2007 , non trovo proprio dove definire , da codice SQL , una nuova query.
Perdona la mia ignoranza...

EDIT: Forse , e dico forse , ho risolto.

Ho tolto tutta la parte di defizione campi dalla query ottenendo così questa stringa

INSERT INTO Utenti VALUES ('1','1','1','1','1','1','1','1','1')

Quando lancio la funzione di inserimento mi da ora quest'errore:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Però , la cosa strana , è che mi inserisce comunque (solo la prima volta , per via dell'unicità della chiave primaria) i valori specificati nella stringa.
In sostanza sembra quasi che se ne freghi dell'errore...

SECONDO EDIT:

Ho controllato , non permette che vi siano valori dei campi uguali alla chiave primaria
Meglio , me li fa inserire una volta , avvertendomi però dell'errore imminente...sbaglio?
Comunque sembra funzionare ora

lbenaglia Profilo | Guru

>Quando lancio la funzione di inserimento mi da ora quest'errore:
>
>
>Errore server nell'applicazione '/Progetto - E_commerce CD_DVD_ASPNET'.
>L'apporto modifiche non è riuscito perché si è cercato di duplicare
>i valori nell'indice, nella chiave primaria o nella relazione.
Hai vìolato la PK.

>Però , la cosa strana , è che mi inserisce comunque (solo la
>prima volta , per via dell'unicità della chiave primaria) i valori
>specificati nella stringa.
>In sostanza sembra quasi che se ne freghi dell'errore...
Che significa questa frase?

>
>SECONDO EDIT:
>
>Ho controllato , non permette che vi siano valori dei campi uguali
>alla chiave primaria
>Meglio , me li fa inserire una volta , avvertendomi però dell'errore
>imminente...sbaglio?
No, è il normale comportamento del constraint Primary Key, che non ti permette appunto di inserire valori duplicati per le colonne specificate durante la creazione del constraint.

>Comunque sembra funzionare ora
Mah...

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

dyd666 Profilo | Junior Member

>>Però , la cosa strana , è che mi inserisce comunque (solo la
>>prima volta , per via dell'unicità della chiave primaria) i valori
>>specificati nella stringa.
>>In sostanza sembra quasi che se ne freghi dell'errore...
>Che significa questa frase?

Nel senso che la prima volta che mi visualizza l'errore sopra citato , lui inserisce comunque la tupla nella tabella.
Altre non ne inserirà in futuro , mna quella si.
>
>>
>>Comunque sembra funzionare ora
>Mah...
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>http://blogs.dotnethell.it/lorenzo/
>http://italy.mvps.org

Comunque si , ora sembra funzionare.
Sto provando anche con valori presi da caselle di testo.
Già che ci sono , domandina...
Mi hai detto prima che dovrei prevenirmi da Sql Injection , linkandomi quel riferimento di msdn.
Ho provato a guardare il codice , non è che ci capisca molto... praticamente come dovrei fare?
I parametri quando andrebbero gestiti?
Al momento della connessione?
Che valore dovranno avere?

Scusa le mille domande , liberissimo di non rispondere
Saluti e grazie

lbenaglia Profilo | Guru

>Nel senso che la prima volta che mi visualizza l'errore sopra
>citato , lui inserisce comunque la tupla nella tabella.
>Altre non ne inserirà in futuro , mna quella si.
Non è possibile, se c'è una vìolazione della PK significa che esiste già una riga con quella PK.

>Mi hai detto prima che dovrei prevenirmi da Sql Injection , linkandomi
>quel riferimento di msdn.
>Ho provato a guardare il codice , non è che ci capisca molto...
>praticamente come dovrei fare?
>I parametri quando andrebbero gestiti?
>Al momento della connessione?
>Che valore dovranno avere?
Prova a dare un'occhiata a questo thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=13913

>Saluti e grazie
Prego.

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

dyd666 Profilo | Junior Member

Grazie mille.
Dopo ci guardo e ti faccio sapere
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