Inserimento, aggiornamento, eliminazione: connessione al database ASP.NET
โก Riepilogo intelligente
ASP.NET si connette a database come SQL Server e Oracle Tramite ADO.NET, utilizzando le classi SqlConnection, SqlCommand, SqlDataReader e SqlDataAdapter per aprire una connessione ed eseguire operazioni di selezione, inserimento, aggiornamento ed eliminazione sui record memorizzati.
L'accesso ai dati da un database รจ un aspetto fondamentale di qualsiasi linguaggio di programmazione. ร indispensabile che ogni linguaggio di programmazione sia in grado di interagire con i database.
ASP.NET รจ in grado di lavorare con diversi tipi di database. Puรฒ funzionare con i database piรน comuni come Oracle and Microsoft SQL Server.
Ha anche la capacitร di lavorare con nuove forme di database come MongoDB and MySQL.
Nozioni fondamentali di connettivitร ai database
ASP.NET รจ in grado di lavorare con la maggior parte dei database, il piรน comune dei quali รจ Oracle and Microsoft SQL Server. Ma con ogni database, la logica alla base del lavoro con tutti รจ sostanzialmente la stessa.
Nei nostri esempi, esamineremo come lavorare con il file Microsoft SQL Server come il nostro database. A scopo didattico รจ possibile scaricare e utilizzare il file Microsoft SQL Server Edizione Express. Questo รจ un software di database gratuito fornito da Microsoft.
Quando si lavora con i database, i seguenti concetti sono comuni a tutti i database:
- Connessione โ Per lavorare con i dati in un database, il primo passo ovvio รจ la connessione. La connessione ad un database รจ normalmente costituita dai parametri sotto indicati.
- Nome del database o origine dati โ Il primo parametro importante รจ il nome del database. Ogni connessione puรฒ funzionare solo con un database alla volta.
- Credenziali โ Il prossimo aspetto importante รจ il nome utente e la password. Questi vengono utilizzati per stabilire una connessione al database.
- Parametri opzionali โ ร possibile specificare parametri opzionali relativi al modo in cui .NET deve gestire la connessione al database. Ad esempio, si puรฒ specificare un parametro per la durata di validitร della connessione.
- Selezione dei dati dal database โ Una volta stabilita la connessione, i dati vengono recuperati dal database. ASP.NET รจ in grado di eseguire il comando SQL SELECT sul database. L'istruzione SQL puรฒ essere utilizzata per recuperare dati da una tabella specifica del database.
- Inserimento dei dati nel database โ ASP.NET viene utilizzato per inserire record nel database. I valori per ogni riga che devono essere inseriti nel database vengono specificati in ASP.NET.
- Aggiornamento dei dati nel database โ ASP.NET puรฒ essere utilizzato anche per aggiornare i record esistenti nel database. ร possibile specificare nuovi valori in ASP.NET per ogni riga che deve essere aggiornata nel database.
- Eliminazione di dati da un database โ ASP.NET puรฒ essere utilizzato anche per eliminare record dal database. Il codice รจ scritto per eliminare una riga specifica dal database.
Ora che abbiamo esaminato la parte teorica di ciascuna operazione, vediamo come eseguire operazioni sul database in ASP.NET.
Connessioni al database ASP.NET
Analizziamo ora il codice necessario per stabilire una connessione a un database. Nel nostro esempio, ci connetteremo a un database chiamato Demodb. Le credenziali utilizzate per la connessione al database sono riportate di seguito:
- Nome utente โ sa
- Password โ demo123
Lavoriamo ora con l'applicazione web che abbiamo creato nelle sezioni precedenti.
- Inizia ad aggiungere operazioni di database ad esso.
- Il nostro esempio illustra come stabilire una semplice connessione. Questa connessione viene effettuata al database Demodb, al primo avvio della pagina.
- Una volta stabilita la connessione, verrร inviato un messaggio all'utente. Il messaggio indicherร che la connessione รจ stata stabilita.
Seguiamo i passaggi indicati di seguito per raggiungere questo obiettivo.
Passo 1) Innanzitutto, assicuriamoci che l'applicazione web (DemoApplication) sia aperta in Visual Studio. Double-fare clic sul file demo.aspx.cs per inserire il codice per la connessione al database.
Passo 2) Aggiungi il codice seguente che verrร utilizzato per stabilire una connessione al database.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string connectionString; SqlConnection cnn; connectionString = @"Data Source=WIN-50GP30FGO75;Initial Catalog=Demodb;User ID=sa;Password=demo123"; cnn = new SqlConnection(connectionString); cnn.Open(); Response.Write("Connection Made"); cnn.Close(); } } }
Code Spiegazione:-
- Il primo passo consiste nel creare delle variabili. Queste verranno utilizzate per creare la stringa di connessione e la connessione al database SQL Server.
- Il passo successivo consiste nel creare effettivamente la stringa di connessione. La stringa di connessione รจ composta dalle seguenti parti:
- Origine dati: questo รจ il nome del server su cui risiede il database. Nel nostro caso, risiede sulla macchina denominata WIN-50GP30FGO75.
- Il catalogo iniziale viene utilizzato per specificare il nome del database.
- L'ID utente e la password sono le credenziali necessarie per connettersi al database.
- In seguito, assegniamo la stringa di connessione alla variabile cnn.
- La variabile cnn รจ di tipo SqlConnection. Viene utilizzato per stabilire una connessione al database.
- SqlConnection รจ una classe di ASP.NET utilizzata per creare una connessione a un database.
- Per utilizzare questa classe, รจ necessario innanzitutto creare un oggetto di questa classe. Pertanto, qui creiamo una variabile chiamata cnn che รจ di tipo SqlConnection.
- Successivamente, utilizziamo il metodo Open della variabile cnn per aprire una connessione al database. Visualizziamo un messaggio all'utente per informarlo che la connessione รจ stata stabilita. Questo viene fatto tramite il metodo Response.Write. Infine, chiudiamo la connessione al database.
Quando il codice sopra indicato รจ impostato e il progetto viene eseguito utilizzando Di Visual StudioOtterrai il seguente output. Una volta visualizzato il modulo, fai clic sul pulsante Connetti.
Produzione:-
Il messaggio di output visualizzato nel browser mostrerร che la connessione al database รจ stata effettuata.
ASP.NET Leggi il database utilizzando SqlDataReader
Per mostrare i dati a cui si accede tramite ASP.NET, ipotizziamo i seguenti elementi nel nostro database.
- Una tabella chiamata demotb. Questa tabella verrร utilizzata per memorizzare l'ID e i nomi dei vari tutorial.
- La tabella avrร due colonne, una chiamata TutorialID e l'altra chiamata TutorialName.
- Per il momento la tabella avrร due righe come mostrato di seguito.
| ID tutorial | NomeTutorial |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Modifichiamo il codice in modo da poter interrogare questi dati e visualizzare le informazioni direttamente sulla pagina web. Si noti che il codice inserito รจ la continuazione di quello scritto per il modulo di connessione dati.
Passo 1) Dividiamo il codice in due parti:
- La prima parte consisterร nella creazione della nostra istruzione SELECT. Questa verrร utilizzata per leggere i dati dal database.
- Eseguiremo quindi l'istruzione SELECT sul database. In questo modo verranno recuperate tutte le righe della tabella.
Code Spiegazione:-
- Il primo passo consiste nel creare le seguenti variabili:
- SqlCommand โ SqlCommand รจ una classe definita in C#. Questa classe viene utilizzata per eseguire operazioni di lettura e scrittura nel database.
- L'oggetto DataReader viene utilizzato per ottenere tutti i dati specificati dalla query SQL. Possiamo quindi leggere tutte le righe della tabella una per una utilizzando il lettore dati.
- Definiamo quindi due variabili stringa. Una รจ sql, che conterrร la stringa del nostro comando SQL. L'altra รจ Output, che conterrร tutti i valori della tabella.
- Il passo successivo consiste nel definire l'istruzione SQL. Nel nostro caso, si tratta di "SELECT TutorialID, TutorialName FROM demotb". Questa istruzione recupererร tutte le righe dalla tabella demotb.
- Successivamente, creiamo l'oggetto comando che viene utilizzato per eseguire l'istruzione SQL sul database. Nel comando SQL, devi passare l'oggetto connessione e la stringa SQL.
- Successivamente, eseguiamo il comando di lettura dei dati, che recupererร tutte le righe dalla tabella demotb.
- Ora che abbiamo a disposizione tutte le righe della tabella, ci serve un meccanismo per accedervi una per una.
- A tale scopo, utilizziamo l'istruzione while per accedere alle righe dal lettore di dati una alla volta.
- Utilizziamo quindi il metodo GetValue per ottenere il valore di TutorialID e TutorialName.
Passo 2) Nell'ultimo passaggio, visualizziamo l'output all'utente. Quindi chiudiamo tutti gli oggetti relativi all'operazione sul database.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Code Spiegazione:-
- Proseguiamo con il codice visualizzando il valore della variabile Output. Questo viene fatto utilizzando il metodo Response.Write.
- Infine, chiudiamo tutti gli oggetti relativi alle operazioni sul nostro database. Ricorda, questa รจ sempre una buona pratica.
Una volta impostato il codice sopra riportato e avviato il progetto tramite Visual Studio, si otterrร l'output seguente.
Produzione:-
Dall'output, puoi vedere chiaramente che il programma รจ stato in grado di ottenere i valori dal database. I dati vengono quindi visualizzati nel browser per l'utente.
Inserisci il record del database utilizzando InsertCommand
Proprio come per l'accesso ai dati, ASP.NET offre anche la possibilitร di inserire record nel database. Prendiamo come esempio la stessa struttura di tabella utilizzata per l'inserimento dei record.
| ID tutorial | NomeTutorial |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Modifichiamo il codice del nostro modulo in modo da poter inserire la seguente riga nella tabella:
| ID tutorial | NomeTutorial |
|---|---|
| 3 | VB.Net |
Passo 1) Come primo passo, aggiungiamo il seguente codice al nostro programma. Il frammento di codice riportato di seguito verrร utilizzato per inserire un record nel nostro database.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Insert into demotb(TutorialID,TutorialName) values(3,'VB.Net')"; command = new SqlCommand(sql, cnn); adapter.InsertCommand = new SqlCommand(sql, cnn); adapter.InsertCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code Spiegazione:-
- Il primo passo consiste nel creare le seguenti variabili:
- SqlCommand โ Questo tipo di dati viene utilizzato per definire oggetti che eseguono operazioni SQL su un database. Questo oggetto conterrร il comando SQL che verrร eseguito sul nostro database SQL Server.
- L'oggetto DataAdapter viene utilizzato per eseguire comandi SQL di inserimento, eliminazione e aggiornamento.
- Definiamo quindi una variabile stringa, chiamata sql, per contenere la stringa del nostro comando SQL.
- Il passo successivo consiste nel definire effettivamente l'istruzione SQL. Nel nostro caso, stiamo eseguendo un'istruzione INSERT. Questa inserirร il record con TutorialID=3 e TutorialName=VB.Net.
- Successivamente, creiamo l'oggetto comando che viene utilizzato per eseguire l'istruzione SQL sul database. Nel comando SQL, devi passare l'oggetto connessione e la stringa SQL.
- Nel nostro comando data adapter:
- Associare il comando Inserisci SQL all'adattatore.
- Successivamente, richiama il metodo ExecuteNonQuery. Questo metodo viene utilizzato per eseguire l'istruzione INSERT nel nostro database.
- Il metodo ExecuteNonQuery viene utilizzato in C# per emettere qualsiasi istruzione DML (operazione di inserimento, eliminazione e aggiornamento) sul database.
- Infine, chiudiamo tutti gli oggetti relativi alle operazioni sul nostro database. Ricorda, questa รจ sempre una buona pratica.
Passo 2) Come secondo passaggio, aggiungiamo lo stesso codice utilizzato nella sezione relativa all'accesso ai dati. Questo serve a visualizzare i dati piรน recenti della tabella nel browser. A tale scopo, aggiungeremo il codice seguente al file demo.aspx.cs.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Una volta impostato il codice sopra riportato ed eseguito il progetto in Visual Studio, si otterrร l'output seguente.
Produzione:-
Nella finestra del browser, vedrai che la riga รจ stata inserita correttamente nel database.
Aggiorna il record del database utilizzando UpdateCommand
ASP.NET offre la possibilitร di aggiornare i record esistenti in un database. Utilizziamo la stessa struttura di tabella impiegata nell'esempio precedente per inserire nuovi record.
| ID tutorial | NomeTutorial |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net |
Modifichiamo il codice del nostro modulo in modo da poter aggiornare la riga seguente. Il vecchio valore della riga รจ TutorialID pari a 3 e TutorialName pari a VB.Net, che aggiorneremo a "VB.Net Complete", mentre il valore della riga per TutorialID rimarrร invariato.
Vecchia fila
| ID tutorial | NomeTutorial |
|---|---|
| 3 | VB.Net |
Nuova riga
| ID tutorial | NomeTutorial |
|---|---|
| 3 | VB.Net completo |
Passo 1) Come primo passo, aggiungiamo il seguente codice al nostro programma. Il frammento di codice riportato di seguito verrร utilizzato per aggiornare un record esistente nel nostro database.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Update demotb set TutorialName='VB.Net Complete' where TutorialID=3"; command = new SqlCommand(sql, cnn); adapter.InsertCommand = new SqlCommand(sql, cnn); adapter.InsertCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code Spiegazione:-
- Il primo passo consiste nel creare le seguenti variabili:
- SqlCommand โ Questo tipo di dati viene utilizzato per definire oggetti che eseguono operazioni SQL su un database. Questo oggetto conterrร il comando SQL che verrร eseguito sul nostro database SQL Server.
- L'oggetto DataAdapter viene utilizzato per eseguire comandi SQL di inserimento, eliminazione e aggiornamento.
- Definiamo quindi una variabile stringa, chiamata sql, per contenere la stringa del nostro comando SQL.
- Il passo successivo consiste nel definire effettivamente l'istruzione SQL. Nel nostro caso, stiamo eseguendo un'istruzione UPDATE. Questa aggiornerร il campo TutorialName a "VB.Net Complete". Il campo TutorialID rimarrร invariato e il suo valore sarร 3.
- Successivamente, creiamo l'oggetto comando. Questo viene utilizzato per eseguire l'istruzione SQL sul database. Nel comando SQL, si passano l'oggetto di connessione e la stringa SQL.
- Nel nostro comando dell'adattatore dati, associamo il comando SQL al nostro adattatore. Successivamente, richiamiamo il metodo ExecuteNonQuery. Questo viene utilizzato per eseguire l'istruzione di aggiornamento sul nostro database.
- Infine, chiudiamo tutti gli oggetti relativi alle operazioni sul nostro database. Ricorda, questa รจ sempre una buona pratica.
Passo 2) Come secondo passaggio, aggiungiamo lo stesso codice utilizzato nella sezione relativa all'accesso ai dati. Questo serve a visualizzare i dati piรน recenti della tabella nel browser. A tale scopo, aggiungeremo il codice seguente.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Una volta impostato il codice sopra riportato ed eseguito il progetto tramite Visual Studio, si otterrร l'output seguente.
Produzione:-
Nella finestra del browser, vedrai che la riga รจ stata aggiornata correttamente nel database.
Elimina il record del database utilizzando DeleteCommand
ASP.NET consente di eliminare record esistenti da un database. Prendiamo come esempio la stessa struttura di tabella utilizzata in precedenza per eliminare i record.
| ID tutorial | NomeTutorial |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net completo |
Modifichiamo il codice del nostro modulo in modo da poter eliminare la seguente riga:
| ID tutorial | NomeTutorial |
|---|---|
| 3 | VB.Net completo |
Passo 1) Come primo passo, aggiungiamo il seguente codice al nostro programma. Il frammento di codice riportato di seguito verrร utilizzato per eliminare un record esistente nel nostro database.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Delete demotb where TutorialID=3"; command = new SqlCommand(sql, cnn); adapter.DeleteCommand = new SqlCommand(sql, cnn); adapter.DeleteCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code Spiegazione:-
- La differenza fondamentale in questo codice รจ che ora stiamo emettendo l'istruzione SQL DELETE. L'istruzione DELETE viene utilizzata per eliminare la riga nella tabella demotb in cui il valore di TutorialID รจ 3.
- Nel nostro comando di adattatore dati, associamo il comando SQL di eliminazione al nostro adattatore. Richiamiamo inoltre il metodo ExecuteNonQuery, che viene utilizzato per eseguire l'istruzione di eliminazione sul nostro database.
Passo 2) Come secondo passaggio, aggiungiamo lo stesso codice utilizzato nella sezione relativa all'accesso ai dati. Questo serve a visualizzare i dati piรน recenti della tabella nel browser. A tale scopo, aggiungeremo il codice seguente.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Una volta impostato il codice sopra riportato ed eseguito il progetto tramite Visual Studio, si otterrร l'output seguente.
Produzione:-
Collegamento dei controlli ASP.NET ai dati
Abbiamo visto come utilizzare i comandi ASP.NET, come SqlCommand e SqlDataReader, per recuperare dati da un database. Abbiamo anche visto come leggere ogni riga della tabella e visualizzarla sulla pagina web.
Esistono diversi metodi per collegare i controlli direttamente ai vari campi della tabella. Al momento, solo i controlli elencati di seguito possono essere associati a un'applicazione ASP.NET:
- VediBoxLista
- Elenco dei pulsanti radio
- Elenco a discesa
- ListaBox
Vediamo quindi un esempio di come possiamo utilizzare il data binding dei controlli in ASP.NET. Qui prenderemo un elencoBox Esempio. Supponiamo di avere i seguenti dati nel nostro database.
| ID tutorial | NomeTutorial |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net completo |
Utilizziamo l'elencoBox Controlliamo e vediamo come puรฒ prelevare automaticamente i dati dalla nostra tabella demotb. Seguiamo i passaggi indicati di seguito per raggiungere questo obiettivo.
Passo 1) Costruisci il modulo web di base. Dalla casella degli strumenti in Visual Studio, trascina e rilascia 2 componenti: etichette e elenco.Boxes. Quindi esegui i seguenti passaggi:
- Inserisci il valore testuale della prima etichetta come TutorialID.
- Inserisci il testo della seconda etichetta come TutorialName.
Di seguito viene mostrato l'aspetto del modulo una volta completati i passaggi sopra descritti.
Passo 2) Il passo successivo รจ iniziare a collegare ogni listaBox alla tabella del database.
- Innanzitutto, fai clic su ElencoBox per TutorialID. Questo farร apparire un'altra finestra di dialogo a lato del controllo.
- Nella finestra di dialogo, fai clic sull'opzione Scegli origine dati.
Passo 3) Verrร quindi visualizzata una finestra di dialogo. Questa puรฒ essere utilizzata per creare una nuova origine dati. L'origine dati rappresenterร una connessione al database. Selezionare l'opzione "Nuova origine dati".
Passo 4) Verrร visualizzata la schermata seguente dopo aver scelto la nuova origine dati nell'ultimo passaggio. Qui dobbiamo menzionare il tipo di origine dati che vogliamo creare.
- Scegli l'opzione database per lavorare con un database SQL Server.
- Ora dobbiamo dare un nome alla nostra origine dati. Qui gli stiamo dando il nome DemoDataSource.
- Infine, clicchiamo sul pulsante OK per passare alla schermata successiva.
Passo 5) Ora dobbiamo creare una connessione al nostro database. Nella schermata successiva, fai clic sul pulsante Nuova connessione.
Passo 6) Successivamente รจ necessario aggiungere le credenziali per connettersi al database.
- Selezionare il nome del server su cui risiede SQL Server.
- Inserisci nome utente e password per connetterti al database.
- Selezionare il database come demotb.
- Fare clic sul pulsante OK.
Passo 7) Nella schermata successiva, potrai visualizzare la tabella demotb. Fai clic sul pulsante Avanti per accettare le impostazioni predefinite.
Passo 8) Ora potrai testare la connessione nella schermata successiva.
- Fai clic sul pulsante "Test Query" per verificare se riesci a ottenere i valori dalla tabella.
- Fare clic sul pulsante Fine per completare la procedura guidata.
Passo 9) Ora, nella schermata finale, puoi fare clic sul pulsante OK. Questo collegherร l'elenco TutorialID.Box al nome del campo TutorialID nella tabella demotb.
Passo 10) Ora รจ il momento di collegare l'elenco TutorialName.Box al campo TutorialName.
- Innanzitutto, fai clic su TutorialName ListBox.
- Successivamente, scegli Origine dati nella finestra di dialogo che appare a lato dell'elencoBox.
Passo 11) Vedrai giร DemoDataSource quando scegli l'origine dati nella schermata successiva.
- Seleziona DemoDataSource.
- Clicca sul pulsante OK.
Se tutti i passaggi precedenti vengono eseguiti come mostrato, otterrai l'output indicato di seguito.
Produzione:-
Dall'output, puoi vedere che l'elencoBoxes visualizzano rispettivamente TutorialID e TutorialName.




























