Inserimento, aggiornamento ed eliminazione dei dati con SqlDataSource (VB)
Nelle esercitazioni precedenti si è appreso come il controllo ObjectDataSource ha consentito l'inserimento, l'aggiornamento e l'eliminazione dei dati. Il controllo SqlDataSource supporta le stesse operazioni, ma l'approccio è diverso e questa esercitazione illustra come configurare SqlDataSource per inserire, aggiornare ed eliminare dati.
Introduzione
Come illustrato in Una panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione, il controllo GridView offre funzionalità predefinite di aggiornamento ed eliminazione, mentre i controlli DetailsView e FormView includono il supporto per l'inserimento insieme alla funzionalità di modifica ed eliminazione. Queste funzionalità di modifica dei dati possono essere collegate direttamente a un controllo origine dati senza dover scrivere una riga di codice. Panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione esaminati tramite ObjectDataSource per facilitare l'inserimento, l'aggiornamento e l'eliminazione con i controlli GridView, DetailsView e FormView. In alternativa, è possibile usare SqlDataSource al posto di ObjectDataSource.
Tenere presente che per supportare l'inserimento, l'aggiornamento e l'eliminazione, con ObjectDataSource è necessario specificare i metodi del livello oggetto da richiamare per eseguire l'azione di inserimento, aggiornamento o eliminazione. Con SqlDataSource è necessario fornire INSERT
istruzioni , UPDATE
e DELETE
SQL (o stored procedure) da eseguire. Come illustrato in questa esercitazione, queste istruzioni possono essere create manualmente o possono essere generate automaticamente dalla procedura guidata Configura origine dati di SqlDataSource.
Nota
Poiché sono già state illustrate le funzionalità di inserimento, modifica ed eliminazione dei controlli GridView, DetailsView e FormView, questa esercitazione è incentrata sulla configurazione del controllo SqlDataSource per supportare queste operazioni. Se è necessario implementare queste funzionalità all'interno di GridView, DetailsView e FormView, tornare alle esercitazioni Su modifica, inserimento ed eliminazione di dati, a partire da Una panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione.
Passaggio 1: Specifica delle istruzioni INSERT, UPDATE e DELETE
Come illustrato nelle due esercitazioni precedenti, per recuperare i dati da un controllo SqlDataSource è necessario impostare due proprietà:
ConnectionString
, che specifica il database a cui inviare la query eSelectCommand
, che specifica l'istruzione SQL ad hoc o il nome della stored procedure da eseguire per restituire i risultati.
Per SelectCommand
i valori con parametri, i valori dei parametri vengono specificati tramite l'insieme SqlDataSource SelectParameters
e possono includere valori hardcoded, valori di origine dei parametri comuni (campi querystring, variabili di sessione, valori del controllo Web e così via) o possono essere assegnati a livello di codice. Quando il metodo del Select()
controllo SqlDataSource viene richiamato a livello di codice o automaticamente da un controllo Web dati viene stabilita una connessione al database, i valori dei parametri vengono assegnati alla query e il comando viene distribuito al database. I risultati vengono quindi restituiti come DataSet o DataReader, a seconda del valore della proprietà del DataSourceMode
controllo.
Oltre a selezionare i dati, il controllo SqlDataSource può essere usato per inserire, aggiornare ed eliminare dati fornendo INSERT
istruzioni , UPDATE
e DELETE
SQL in modo molto simile. È sufficiente assegnare le InsertCommand
proprietà , UpdateCommand
e DeleteCommand
alle INSERT
istruzioni , UPDATE
e DELETE
SQL da eseguire. Se le istruzioni includono parametri (come sempre), includerli nelle InsertParameters
raccolte , UpdateParameters
e DeleteParameters
.
Dopo aver specificato un InsertCommand
valore , UpdateCommand
o DeleteCommand
, l'opzione Abilita inserimento, Abilita modifica o Abilita eliminazione nello smart tag del controllo Web dati corrispondente diventerà disponibile. Per illustrare questo problema, si prenda un esempio dalla Querying.aspx
pagina creata nell'esercitazione Querying Data with the SqlDataSource Control (Querying Data with the SqlDataSource Control) (Eseguire query sui dati con l'esercitazione Sul controllo SqlDataSource e aumentarla per includere le funzionalità di eliminazione).
Per iniziare, aprire le InsertUpdateDelete.aspx
pagine e Querying.aspx
dalla SqlDataSource
cartella . Dal Designer nella Querying.aspx
pagina selezionare SqlDataSource e GridView nel primo esempio (i ProductsDataSource
controlli e GridView1
). Dopo aver selezionato i due controlli, passare al menu Modifica e scegliere Copia (oppure premere CTRL+C). Passare quindi alla Designer di InsertUpdateDelete.aspx
e incollare i controlli. Dopo aver spostato i due controlli in InsertUpdateDelete.aspx
, testare la pagina in un browser. Verranno visualizzati i valori delle ProductID
colonne , ProductName
e UnitPrice
per tutti i record nella tabella di Products
database.
Figura 1: Tutti i prodotti sono elencati, ordinati per ProductID
(fare clic per visualizzare l'immagine a dimensione intera)
Aggiunta delle proprietà DeleteCommand e DeleteParameters di SqlDataSource
A questo punto è disponibile un oggetto SqlDataSource che restituisce semplicemente tutti i record della Products
tabella e un controllo GridView che esegue il rendering di questi dati. L'obiettivo è estendere questo esempio per consentire all'utente di eliminare i prodotti tramite GridView. A tale scopo, è necessario specificare i valori per le proprietà e s DeleteCommand
del DeleteParameters
controllo SqlDataSource e quindi configurare GridView per supportare l'eliminazione.
Le DeleteCommand
proprietà e DeleteParameters
possono essere specificate in diversi modi:
- Tramite la sintassi dichiarativa
- Dalla Finestra Proprietà nel Designer
- Nella schermata Specificare un'istruzione SQL personalizzata o una stored procedure nella procedura guidata Configura origine dati
- Tramite il pulsante Avanzate nella schermata Specifica colonne da una tabella di visualizzazione della procedura guidata Configura origine dati, che genererà automaticamente l'istruzione SQL e la
DELETE
DeleteCommand
raccolta di parametri utilizzata nelle proprietà e eDeleteParameters
Si esaminerà come creare automaticamente l'istruzione DELETE
nel passaggio 2. Per il momento, è possibile usare il Finestra Proprietà nella Designer, anche se l'opzione Configura origine dati o sintassi dichiarativa funziona anche.
Dal Designer in InsertUpdateDelete.aspx
, fare clic su ProductsDataSource
SqlDataSource e quindi visualizzare il Finestra Proprietà (dal menu Visualizza scegliere Finestra Proprietà o semplicemente premere F4). Selezionare la proprietà DeleteQuery, che consente di visualizzare un set di puntini di sospensione.
Figura 2: Selezionare la proprietà DeleteQuery dalla finestra Proprietà
Nota
SqlDataSource non dispone di una proprietà DeleteQuery. DeleteQuery è invece una combinazione delle DeleteCommand
proprietà e e DeleteParameters
viene elencata solo nella Finestra Proprietà quando si visualizza la finestra tramite il Designer. Se si esamina il Finestra Proprietà nella visualizzazione Origine, si troverà invece la DeleteCommand
proprietà .
Fare clic sui puntini di sospensione nella proprietà DeleteQuery per visualizzare la finestra di dialogo Comando e parametro Editor (vedere la figura 3). In questa finestra di dialogo è possibile specificare l'istruzione DELETE
SQL e specificare i parametri. Immettere la query seguente nella casella di testo del DELETE
comando (manualmente o usando Generatore query, se si preferisce):
DELETE FROM Products
WHERE ProductID = @ProductID
Fare quindi clic sul pulsante Aggiorna parametri per aggiungere il @ProductID
parametro all'elenco dei parametri riportato di seguito.
@ProductID aggiunto all'elenco dei parametri di comando DELETE." />
Figura 3: Selezionare la proprietà DeleteQuery dalla finestra Proprietà (fare clic per visualizzare l'immagine a dimensione intera)
Non specificare un valore per questo parametro (lasciare l'origine parametro in None ). Dopo aver aggiunto il supporto per l'eliminazione a GridView, GridView fornirà automaticamente questo valore di parametro, usando il valore della relativa DataKeys
raccolta per la riga su cui è stato fatto clic sul pulsante Elimina.
Nota
Il nome del parametro usato nella DELETE
query deve corrispondere al nome del DataKeyNames
valore in GridView, DetailsView o FormView. Ovvero, il parametro nell'istruzione DELETE
è denominato @ProductID
intenzionalmente (anziché, ad esempio , @ID
), perché il nome della colonna chiave primaria nella tabella Products (e quindi il valore DataKeyNames in GridView) è ProductID
.
Se il nome e DataKeyNames
il valore del parametro non corrispondono, GridView non può assegnare automaticamente il parametro al valore della DataKeys
raccolta.
Dopo aver immesso le informazioni relative all'eliminazione nella finestra di dialogo Comando e parametro Editor fare clic su OK e passare alla visualizzazione Origine per esaminare il markup dichiarativo risultante:
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand=
"SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]"
DeleteCommand="DELETE FROM Products WHERE ProductID = @ProductID">
<DeleteParameters>
<asp:Parameter Name="ProductID" />
</DeleteParameters>
</asp:SqlDataSource>
Prendere nota dell'aggiunta della DeleteCommand
proprietà, nonché della <DeleteParameters>
sezione e dell'oggetto Parameter denominato productID
.
Configurazione di GridView per l'eliminazione
Dopo aver aggiunto la DeleteCommand
proprietà, lo smart tag di GridView contiene ora l'opzione Abilita eliminazione. Andare avanti e selezionare questa casella di controllo. Come illustrato in Panoramica dell'inserimento, dell'aggiornamento e dell'eliminazione, gridView aggiunge un oggetto CommandField con la relativa ShowDeleteButton
proprietà impostata su True
. Come illustrato nella figura 4, quando la pagina viene visitata tramite un browser è incluso un pulsante Elimina. Testare questa pagina eliminando alcuni prodotti.
Figura 4: Ogni riga gridView include ora un pulsante Elimina (fare clic per visualizzare l'immagine a dimensione intera)
Quando si fa clic su un pulsante Elimina, si verifica un postback, GridView assegna al parametro il ProductID
valore della DataKeys
raccolta per la riga su cui è stato fatto clic sul pulsante Delete e richiama il metodo s Delete()
SqlDataSource. Il controllo SqlDataSource si connette quindi al database ed esegue l'istruzione DELETE
. GridView esegue quindi nuovamente l'associazione a SqlDataSource, recuperando e visualizzando il set corrente di prodotti (che non include più il record appena eliminato).
Nota
Poiché GridView usa la raccolta DataKeys
per popolare i parametri SqlDataSource, è fondamentale impostare la proprietà GridView DataKeyNames
sulle colonne che costituiscono la chiave primaria e che sqlDataSource SelectCommand
restituisce queste colonne. Inoltre, è importante che il nome del parametro in SqlDataSource s DeleteCommand
sia impostato su @ProductID
. Se la DataKeyNames
proprietà non è impostata o il parametro non è denominato @ProductsID
, facendo clic sul pulsante Elimina verrà generato un postback, ma non eliminerà effettivamente alcun record.
La figura 5 illustra questa interazione graficamente. Fare riferimento all'esercitazione Analisi degli eventi associati all'inserimento, all'aggiornamento e all'eliminazione per una discussione più dettagliata sulla catena di eventi associati all'inserimento, all'aggiornamento e all'eliminazione da un controllo Web dati.
Figura 5: Fare clic sul pulsante Elimina in GridView richiama il metodo sqlDataSource Delete()
Passaggio 2: Generazione automatica delle INSERT
istruzioni , UPDATE
e DELETE
Durante l'esame del passaggio 1, INSERT
le istruzioni , UPDATE
e DELETE
SQL possono essere specificate tramite la Finestra Proprietà o la sintassi dichiarativa del controllo. Tuttavia, questo approccio richiede di scrivere manualmente le istruzioni SQL, che possono essere monotono e soggette a errori. Fortunatamente, la procedura guidata Configura origine dati offre un'opzione per fare in modo che le INSERT
istruzioni , UPDATE
e DELETE
vengano generate automaticamente quando si usano le colonne Specifica da una tabella della schermata di visualizzazione.
È possibile esplorare questa opzione di generazione automatica. Aggiungere un controllo DetailsView al Designer in InsertUpdateDelete.aspx
e impostarne la ID
proprietà su ManageProducts
. Successivamente, dallo smart tag DetailsView, scegliere di creare una nuova origine dati e creare un oggetto SqlDataSource denominato ManageProductsDataSource
.
Figura 6: Creare un nuovo oggetto SqlDataSource denominato ManageProductsDataSource
(fare clic per visualizzare un'immagine di dimensioni intere)
Nella procedura guidata Configura origine dati scegliere di usare il NORTHWINDConnectionString
stringa di connessione e fare clic su Avanti. Nella schermata Configura istruzione selezionare il pulsante di opzione Specifica colonne da una tabella o vista e selezionare la Products
tabella dall'elenco a discesa. Selezionare le ProductID
colonne , ProductName
, UnitPrice
e Discontinued
dall'elenco delle caselle di controllo.
Figura 7: Utilizzo della Products
tabella, restituire le ProductID
colonne , ProductName
, UnitPrice
e Discontinued
(fare clic per visualizzare l'immagine a dimensione intera)
Per generare INSERT
automaticamente istruzioni , UPDATE
e DELETE
in base alla tabella e alle colonne selezionate, fare clic sul pulsante Avanzate e selezionare la casella di controllo Genera INSERT
istruzioni , UPDATE
e DELETE
.
Figura 8: Selezionare la casella di controllo Genera INSERT
istruzioni , UPDATE
e DELETE
La casella di controllo Genera INSERT
istruzioni , UPDATE
e DELETE
sarà selezionabile solo se la tabella selezionata ha una chiave primaria e la colonna chiave primaria (o colonne) sono incluse nell'elenco delle colonne restituite. La casella di controllo Usa concorrenza ottimistica, che diventa selezionabile dopo che la casella di controllo Genera INSERT
istruzioni , UPDATE
e DELETE
è stata selezionata, aumenta le WHERE
clausole nelle istruzioni e DELETE
risultanti UPDATE
per fornire il controllo della concorrenza ottimistica. Per il momento, lasciare deselezionata questa casella di controllo; Si esaminerà la concorrenza ottimistica con il controllo SqlDataSource nell'esercitazione successiva.
Dopo aver selezionato la casella di controllo Genera INSERT
istruzioni , UPDATE
e DELETE
fare clic su OK per tornare alla schermata Configura istruzione seleziona, quindi fare clic su Avanti e quindi su Fine per completare la procedura guidata Configura origine dati. Al termine della procedura guidata, Visual Studio aggiungeRà BoundFields a DetailsView per le ProductID
colonne , ProductName
e UnitPrice
e un checkBoxField per la Discontinued
colonna. Dallo smart tag DetailsView selezionare l'opzione Abilita paging in modo che l'utente che visita questa pagina possa scorrere i prodotti.From the DetailsView s smart tag, check the Enable Paging option so that the user visit this page can step through the products. Cancellare anche le proprietà e detailsView Width
Height
.
Si noti che lo smart tag include le opzioni Abilita inserimento, Abilita modifica e Abilita eliminazione disponibili. Ciò avviene perché SqlDataSource contiene i valori per InsertCommand
, UpdateCommand
e DeleteCommand
, come illustrato nella sintassi dichiarativa seguente:
<asp:DetailsView ID="ManageProducts" runat="server" AllowPaging="True"
AutoGenerateRows="False" DataKeyNames="ProductID"
DataSourceID="ManageProductsDataSource" EnableViewState="False">
<Fields>
<asp:BoundField DataField="ProductID" HeaderText="ProductID"
InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
SortExpression="UnitPrice" />
<asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"
SortExpression="Discontinued" />
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="ManageProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
DeleteCommand=
"DELETE FROM [Products] WHERE [ProductID] = @ProductID"
InsertCommand=
"INSERT INTO [Products] ([ProductName], [UnitPrice], [Discontinued])
VALUES (@ProductName, @UnitPrice, @Discontinued)"
SelectCommand=
"SELECT [ProductID], [ProductName], [UnitPrice], [Discontinued]
FROM [Products]"
UpdateCommand=
"UPDATE [Products] SET [ProductName] = @ProductName,
[UnitPrice] = @UnitPrice, [Discontinued] = @Discontinued
WHERE [ProductID] = @ProductID">
<DeleteParameters>
<asp:Parameter Name="ProductID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="ProductName" Type="String" />
<asp:Parameter Name="UnitPrice" Type="Decimal" />
<asp:Parameter Name="Discontinued" Type="Boolean" />
<asp:Parameter Name="ProductID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="ProductName" Type="String" />
<asp:Parameter Name="UnitPrice" Type="Decimal" />
<asp:Parameter Name="Discontinued" Type="Boolean" />
</InsertParameters>
</asp:SqlDataSource>
Si noti che il controllo SqlDataSource ha impostato automaticamente i valori per le InsertCommand
relative proprietà , UpdateCommand
e DeleteCommand
. Il set di colonne a cui si fa riferimento nelle InsertCommand
proprietà e UpdateCommand
si basa su quelli nell'istruzione SELECT
. Vale a dire, invece di avere ogni colonna Products in InsertCommand
e UpdateCommand
, sono presenti solo le colonne specificate in SelectCommand
( ProductID
minore , che viene omesso perché si tratta di una IDENTITY
colonna, il cui valore non può essere modificato quando viene modificato e che viene assegnato automaticamente durante l'inserimento). Inoltre, per ogni parametro nelle InsertCommand
proprietà , UpdateCommand
e DeleteCommand
sono presenti parametri corrispondenti nelle InsertParameters
raccolte , UpdateParameters
e DeleteParameters
.
Per attivare le funzionalità di modifica dei dati di DetailsView, selezionare le opzioni Abilita inserimento, Abilita modifica e Abilita eliminazione nello smart tag. In questo modo viene aggiunto un oggetto CommandField con ShowInsertButton
le proprietà , ShowEditButton
e ShowDeleteButton
impostate su True
.
Visitare la pagina in un browser e prendere nota dei pulsanti Modifica, Elimina e Nuovo inclusi in DetailsView. Facendo clic sul pulsante Modifica, DetailsView viene attivata la modalità di modifica, che visualizza ogni BoundField la cui ReadOnly
proprietà è impostata False
su (impostazione predefinita) come controllo TextBox e checkBoxField come casella di controllo.
Figura 9: Interfaccia di modifica predefinita di DetailsView (fare clic per visualizzare l'immagine a dimensione intera)
Analogamente, è possibile eliminare il prodotto attualmente selezionato o aggiungere un nuovo prodotto al sistema. Poiché l'istruzione InsertCommand
funziona solo con le ProductName
colonne , UnitPrice
e Discontinued
, le altre colonne hanno NULL
o il valore predefinito assegnato dal database al momento dell'inserimento. Analogamente a ObjectDataSource, se manca InsertCommand
qualsiasi colonna della tabella di database che non consente NULL
s e non ha un valore predefinito, si verificherà un errore SQL quando si tenta di eseguire l'istruzione INSERT
.
Nota
Le interfacce di inserimento e modifica di DetailsView non dispongono di qualsiasi tipo di personalizzazione o convalida. Per aggiungere controlli di convalida o per personalizzare le interfacce, è necessario convertire BoundFields in TemplateFields. Per altre informazioni, vedere l'esercitazione Aggiunta di controlli di convalida alle interfacce di modifica e inserimento e personalizzazione dell'interfaccia di modifica dei dati .
Tenere inoltre presente che per l'aggiornamento e l'eliminazione, DetailsView usa il valore del DataKey
prodotto corrente, che è presente solo se la DataKeyNames
proprietà è configurata. Se la modifica o l'eliminazione sembra non avere alcun effetto, assicurarsi che la DataKeyNames
proprietà sia impostata.
Limitazioni della generazione automatica di istruzioni SQL
Poiché l'opzione Genera INSERT
istruzioni , UPDATE
e DELETE
è disponibile solo quando si selezionano colonne da una tabella, per le query più complesse sarà necessario scrivere istruzioni , UPDATE
e DELETE
personalizzate INSERT
come nel passaggio 1. In genere, le istruzioni SQL SELECT
usano JOIN
s per riportare i dati da una o più tabelle di ricerca a scopo di visualizzazione, ad esempio per riportare indietro il campo della tabella durante la Categories
visualizzazione delle informazioni sul CategoryName
prodotto. Allo stesso tempo, è possibile consentire all'utente di modificare, aggiornare o inserire dati nella tabella principale (Products
in questo caso).
Anche se le INSERT
istruzioni , UPDATE
e DELETE
possono essere immesse manualmente, prendere in considerazione il suggerimento seguente per il risparmio di tempo. Configurare inizialmente SqlDataSource in modo che estrae i dati solo dalla Products
tabella. Usare la procedura guidata Configura origine dati specificare le colonne da una schermata di tabella o vista in modo da poter generare automaticamente le INSERT
istruzioni , UPDATE
e DELETE
. Dopo aver completato la procedura guidata, scegliere quindi di configurare SelectQuery dal Finestra Proprietà oppure, in alternativa, tornare alla procedura guidata Configura origine dati, ma usare l'opzione Specificare un'istruzione SQL personalizzata o una stored procedure. Aggiornare quindi l'istruzione SELECT
in modo da includere la JOIN
sintassi . Questa tecnica offre i vantaggi di risparmio di tempo delle istruzioni SQL generate automaticamente e consente un'istruzione più personalizzata SELECT
.
Un'altra limitazione della generazione automatica delle INSERT
istruzioni , UPDATE
e DELETE
è che le colonne nelle INSERT
istruzioni e UPDATE
sono basate sulle colonne restituite dall'istruzione SELECT
. Potrebbe tuttavia essere necessario aggiornare o inserire più o meno campi. Ad esempio, nell'esempio del passaggio 2, potrebbe essere necessario che BoundField UnitPrice
sia di sola lettura. In questo caso, non dovrebbe essere visualizzato in UpdateCommand
. In alternativa, è possibile impostare il valore di un campo tabella che non viene visualizzato in GridView. Ad esempio, quando si aggiunge un nuovo record, è possibile impostare il QuantityPerUnit
valore su TODO .
Se tali personalizzazioni sono necessarie, è necessario renderle manualmente, tramite il Finestra Proprietà, l'opzione Specificare un'istruzione SQL personalizzata o una stored procedure nella procedura guidata o tramite la sintassi dichiarativa.
Nota
Quando si aggiungono parametri che non dispongono di campi corrispondenti nel controllo Web dati, tenere presente che questi valori di parametri dovranno essere assegnati in qualche modo. Questi valori possono essere: hardcoded direttamente in InsertCommand
o UpdateCommand
, possono provenire da un'origine predefinita (querystring, stato sessione, controlli Web nella pagina e così via) oppure possono essere assegnati a livello di codice, come illustrato nell'esercitazione precedente.
Riepilogo
Per consentire ai controlli Web di dati di utilizzare le funzionalità predefinite di inserimento, modifica ed eliminazione, il controllo origine dati a cui sono associati deve offrire tali funzionalità. Per SqlDataSource, ciò significa che INSERT
le istruzioni , UPDATE
e DELETE
SQL devono essere assegnate alle InsertCommand
proprietà , UpdateCommand
e DeleteCommand
. Queste proprietà e le raccolte di parametri corrispondenti possono essere aggiunte manualmente o generate automaticamente tramite la procedura guidata Configura origine dati. In questa esercitazione sono state esaminate entrambe le tecniche.
È stata esaminata l'uso della concorrenza ottimistica con ObjectDataSource nell'esercitazione Implementazione della concorrenza ottimistica . Il controllo SqlDataSource fornisce anche il supporto della concorrenza ottimistica. Come indicato nel passaggio 2, quando si generano automaticamente le INSERT
istruzioni , UPDATE
e DELETE
, la procedura guidata offre un'opzione Usa concorrenza ottimistica. Come illustrato nell'esercitazione successiva, l'uso della concorrenza ottimistica con SqlDataSource modifica le WHERE
clausole nelle UPDATE
istruzioni e DELETE
per assicurarsi che i valori per le altre colonne non siano stati modificati dall'ultima visualizzazione dei dati nella pagina.
Buon programmatori!
Informazioni sull'autore
Scott Mitchell, autore di sette libri ASP/ASP.NET e fondatore di 4GuysFromRolla.com, lavora con le tecnologie Web Microsoft dal 1998. Scott lavora come consulente indipendente, formatore e scrittore. Il suo ultimo libro è Sams Teach Yourself ASP.NET 2.0 in 24 ore. Può essere raggiunto all'indirizzo mitchell@4GuysFromRolla.com. o tramite il suo blog, disponibile all'indirizzo http://ScottOnWriting.NET.