Errore su VALUE in fase di caricamento dati da Form ASP.NET a DB

giovedì 20 novembre 2008 - 11.44

Leonida Profilo | Junior Member

Ciao a tutti,

Voglio memorizzare delle informazioni da un form ASP.NET a un DB scritto con SQLExpress tramite Visual Studio 2005. Per farlo ho scritto una classe che contiene il metodo InsertOnDB di cui riporto il codice:

public void InsertOnDB(string tab, string val)
{
string insert = "INSERT INTO" + tab + " VALUE ("+ val +");";

SqlConnection connect = new SqlConnection(connString);
SqlCommand com = new SqlCommand(insert, connect);

com.Connection.Open();
com.ExecuteNonQuery();
com.Connection.Close();

}

La classe memorizza in un campo inizializzato da un costruttore, la stringa di connessione. Quando da form Clicco il pulsante di conferma, mi da un errore di sintassi su VALUE e un riferimento alla riga con la chiamata del metodo: com.ExecuteNonQuery().

Come posso risolvere?Non uso asp da molto...

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao!

> public void InsertOnDB(string tab, string val)
> {
>string insert = "INSERT INTO" + tab + " VALUE ("+ val +");";
>Come posso risolvere?Non uso asp da molto...

A parte che sembra manchi uno spazio tra INTO e la variabile tab e a parte che non so di che tipo sia il value che vai ad inserire (se è stringa, servono le apici), perchè usi la concatenazione di stringhe?
Ti consiglio di lasciar perdere questo tipo di approccio, usando invece le query parametriche:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=15921

Questo perchè rischi di incappare nei pericoli da SQL Injection. Leggi questo articolo:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx

Ciao!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Leonida Profilo | Junior Member

Grazie per il consiglio...sto dando uno sguardo alle query parametriche ma non capisco la logica di funzionamento, o meglio ho dei dubbi.

Se ho capito bene, usando SqlDataSource in corrispondenza, per esempio, di una TextBox con id "nome" in ASP.NET, tramite l'attributo "InsertCommand" e passando come valore da caricare nel database @nome, la stringa scritta nella TextBox viene memorizzata nella tabella del database.

La memorizzazione della stringa quando avviene? Io in pratica vorrei venissero copiati tutti i campi del form solo dopo la pressione di un pulsante di conferma. In tal caso sarebbe allora più opportuno scrivere il codice direttamente in C# in corrispondenza di un evento click del pulsante?

Non voglio scocciarti ulteriormente ma potresti scrivermi un esempio semplice di codice?Scusa ma è da pochissimo che studio l'ASP.NET e il C#, in pratica sono ancora in fase di scoperta e sperimentazione

Leonida Profilo | Junior Member

Problema risolto su un altro thread, scrivevo VALUE al posto di VALUES nella query...
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