Sqldatasource e stored procedure con risultato

mercoledì 28 ottobre 2009 - 10.55

cicciuzzo Profilo | Junior Member

ciao a tutti

sto utilizzando l'sqldatasource con una stored procedure per inserire dei dati in una tabella e farmi tornare un risultato ... provando la stored procedure all'interno del managment studio tutto ok, ma non so come si fa con l'sqldatasouce all'interno di una pagina aspx...

mi potere dare qualche sugerimento?

ciao e grazie

Gluck74 Profilo | Guru

al momento che metti un sqldatasource nella pagina, clicchi su "configure datasource" e ti fa un widzard facilissimo. non dovresti avere problemi a configurarlo. comqunque questa una prova di con una storedProcedure con 2 parametri:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:myConnessione %>" SelectCommand="SalesByCategory" SelectCommandType="StoredProcedure" > <SelectParameters> <asp:Parameter DefaultValue="Beverages" Name="CategoryName" Type="String" /> <asp:Parameter DefaultValue="1998" Name="OrdYear" Type="String" /> </SelectParameters> </asp:SqlDataSource>

cicciuzzo Profilo | Junior Member

Grazie per la risposta

il problema e che non riesco a recuperare i valori che mi restituisce la SP... in pratica la SP che fa insert torna un result facendo una select...

nella pagina aspx ho messo il mio sqldatasource collegato a una formview dopo che faccio l'insert e passo il formviewmode in ReadOnly non visualizzo nessun dato....!!!

forse è un approccio sbagliato per recupere i dati?

ciao e grazie

martinez Profilo | Senior Member

Ciao!

per poter utilizzare una sp che restituisca un parametro (OUTPUT) occorre seguire le seguenti regole ... Supponiamo di voler inserire una riga nel nostro db utilizzando una insert e ricavarne l'ID assegnato automaticamente ...

come prima cosa dobbiamo modificare la query di insert in questo modo:

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


quindi aggiungiamo un parametro di OUTPUT per contenere il valore di ritorno ...

<InsertParameters> <asp:Parameter Name="ID" Type="Int32" Direction="Output"/> <asp:ControlParameter ControlID="txtText" Type="string" Name="Nome" PropertyName="Text" /> </InsertParameters>

infine ... per recuperare il valore del parametro dalla insert creiamo un Event Handler per l'evento Inserted

protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e) { if (e.Exception == null) { int lastID = (int)e.Command.Parameters["@ID"].Value; this.lblID.Text = string.Format("Il record è stato aggiunto con id: {0}", lblID); } else { e.ExceptionHandled = true; this.IlblID.Text = "Errore ..."; } }

nell'esempio si recupera l'id dell'oggetto SqlDataSource ... ma può essere applicato a qualsiasi paramentro OUTPUT inserito nella SP ...

Antonio

Gluck74 Profilo | Guru

>Grazie per la risposta
>
>il problema e che non riesco a recuperare i valori che mi restituisce
>la SP... in pratica la SP che fa insert torna un result facendo
>una select...

approccio sbagliato secondo me. la insert dovrebbe restituirti solo un valore di ritorno che è ad esempio l'ID del record appena inserito

>
>nella pagina aspx ho messo il mio sqldatasource collegato a una
>formview dopo che faccio l'insert e passo il formviewmode in
>ReadOnly non visualizzo nessun dato....!!!
lascia fare tutto agli automatismi dei controlli asp.net.
quando hai un FormView con un SQLDataSource collegato, fanno tutto da soli. esempio:
visualizzi il formView, quindi sei in ReadOnly, e il formView richiama in automatico gli eventi per eseguire il Select del dataSource.
se premi il comando "modifica + aggiorna", il formView passa in EditMode e richiama gli eventi per eseguire l'update del dataSource.
se premi il comando "inserisci + salva", il formView passa in InsertMode e richiama gli eventi per eseguire l'insert del dataSource.

finiti gli eventi il formView se ne ritorna in ReadOnly (salvo gestioni personalizzate che puoi fare con gli eventi del form) e richiama quindi gli eventi per eseguire il select del datasource, bindare i dati e farteli vedere.

Il bello è che fanno tutto da soli senza che tu faccia una riga di codice.
In teoria non servirebbe nemmeno quello che ti ha suggerito martinez, ma per scrupolo fai come ti dice, che è molto preciso, così ti testi in debug i risultati che escono dalla storedProcedure.

ciao ciao

>
>forse è un approccio sbagliato per recupere i dati?
>
>ciao e grazie
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