62 messaggi dal 05 dicembre 2003
Salve a tutti

Sono un novello di ASP.NET e devo dire che ho riscontrato molti problemi sulla gestione dei dati rispetto ad ASP

Io avrei il seguente problema apro una pagina con un form, questo si compila con le informazioni contenute in un record di una tabella, ora vorrei salvare i dati che vengono cambiati dall'utente (es: la descizione) ma al momento dell'Update, non da errori ma non effettua modifiche al DB.

Vi posto il codice da me usato:

SqlConnection objConn = new SqlConnection(sConn);
SqlDataReader myReader = null;
Boolean bOk=false;

try
{
objConn.Open();
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(strSQL,objConn);
DataSet ds = new DataSet();
mySqlDataAdapter.Fill(ds,"Prototipi");

if (ds.Tables["Prototipi"].Rows.Count>0)
{
ds.Tables["Prototipi"].Rows[0].BeginEdit();
ds.Tables["Prototipi"].Rows[0]["CodCliente"]=Int64.Parse(lstCliente.SelectedValue.ToString());
ds.Tables["Prototipi"].Rows[0]["Descrizione"]=txtDescrizione.Text.ToString();
............
ds.Tables["Prototipi"].Rows[0].EndEdit();
SqlCommandBuilder sqlCommBuild = new SqlCommandBuilder(mySqlDataAdapter);
mySqlDataAdapter.Update(ds, "Prototipi");

}
else
{
//Prototipo non trovato
}
}
catch(Exception e)
{
lblMessage.Text="Errore nell'inserimento del nuovo protipo ("+ e +")";
}
finally
{
if (myReader != null)
myReader.Close();
if (objConn.State == ConnectionState.Open)
objConn.Close();
}

Mi sapete mica dare un consiglio.

Grazie a tutti
Aldo
2.198 messaggi dal 30 novembre 2001
creati una stored procedure e gestisci l'update da sp piuttosto che da codice è meglio ed è anche più pulito.
L'osservazione di chiccosimo è corretta.

Nel tuo caso non hai bisogno di usare il batch update di un DataSet.

Puoi utilizzare il metodo ExecuteNonQuery di una istanza di SqlCommand (che ritorna il numero di righe modificate) per eseguire un comando SQL di tipo UPDATE.

Da un punto di vista delle prestazioni è meglio utilizzare una stored procedure, ma puoi utilizzare anche un comando testuale parametrizzato.

Una osservazione: a cosa ti serve myReader? Non lo usi mai!

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
62 messaggi dal 05 dicembre 2003
Grazie ad entrambi per l'aiuto.
vi chiederei se potreste farmi un esempio di come poter fare una stored perchè non ne ho mei fatte in questo modo.

Grazie.

Per rickyvr: il myReader non serve a niente è un mio errore.
Leggiti questo tutorial su ADO.NET:
http://www.aspitalia.com/articoli/asp.net/adodotnet.aspx

Anche se gli esempi di codice sono in VB.NET, i concetti sono validi anche nel caso di C# (con l'opportuna traduzione nella sintassi del linguaggio).

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
62 messaggi dal 05 dicembre 2003
Grazie mille, ora funziona.

In questo modo sono riuscito a trovare un errore che non sapevo.

Dopo aver premuto il bottone salva del form, la pagina richiamava la Page_Load che mi ricariva il form con i vecchi dati.
C'è un modo per evitare la chiamata alla page_load o, come ho fatto, metto un un if (!this.IsPostBack) ed evito le operazioni di caricamento?
Page_Load è un event handler che viene eseguito sempre. Va bene usare il blocco condizionale in cui verifichi se si tratta di un postback oppure no.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.