Indsæt, opdater, slet: ASP.NET-databaseforbindelse
⚡ Smart opsummering
ASP.NET opretter forbindelse til databaser som SQL Server og Oracle via ADO.NET, ved hjælp af klasserne SqlConnection, SqlCommand, SqlDataReader og SqlDataAdapter til at åbne en forbindelse og køre SELECT-, INSER-, OPDATER- og SLEUT-operationer mod gemte poster.
Adgang til data fra en database er et vigtigt aspekt af ethvert programmeringssprog. Det er nødvendigt for ethvert programmeringssprog at kunne arbejde med databaser.
ASP.NET har mulighed for at arbejde med forskellige typer databaser. Det kan arbejde med de mest almindelige databaser som f.eks. Oracle og Microsoft SQL Server.
Den har også mulighed for at arbejde med nye former for databaser som f.eks MongoDB og MySQL.
Grundlæggende om databaseforbindelse
ASP.NET kan arbejde med de fleste databaser, hvoraf den mest almindelige er Oracle og Microsoft SQL Server. Men med hver database er logikken bag arbejdet med dem alle stort set den samme.
I vores eksempler vil vi se på arbejdet med Microsoft SQL Server som vores database. Til læringsformål kan man downloade og bruge Microsoft SQL Server Express Edition. Dette er gratis databasesoftware leveret af Microsoft.
Når man arbejder med databaser, er følgende koncepter fælles for alle databaser:
- Forbindelse – For at arbejde med dataene i en database er det første oplagte skridt forbindelsen. Forbindelsen til en database består normalt af nedenstående parametre.
- Databasenavn eller datakilde – Den første vigtige parameter er databasenavnet. Hver forbindelse kan kun fungere med én database ad gangen.
- Legitimationsoplysninger – Det næste vigtige aspekt er brugernavn og adgangskode. Disse bruges til at oprette en forbindelse til databasen.
- Valgfri parametre – Du kan angive valgfrie parametre for, hvordan .NET skal håndtere forbindelsen til databasen. For eksempel kan man angive en parameter for, hvor længe forbindelsen skal forblive aktiv.
- Valg af data fra databasen – Når forbindelsen er etableret, hentes data fra databasen. ASP.NET har mulighed for at udføre SQL select-kommandoen mod databasen. SQL-sætningen kan bruges til at hente data fra en specifik tabel i databasen.
- Indsættelse af data i databasen – ASP.NET bruges til at indsætte poster i databasen. Værdier for hver række, der skal indsættes i databasen, er angivet i ASP.NET.
- Opdatering af data til databasen – ASP.NET kan også bruges til at opdatere eksisterende poster i databasen. Nye værdier kan angives i ASP.NET for hver række, der skal opdateres i databasen.
- Sletning af data fra en database – ASP.NET kan også bruges til at slette poster fra databasen. Koden er skrevet til at slette en bestemt række fra databasen.
Nu hvor vi har set den teoretiske del af hver operation, lad os se på, hvordan man udfører databaseoperationer i ASP.NET.
ASP.NET-databaseforbindelser
Lad os nu se på den kode, der skal gemmes for at oprette en forbindelse til en database. I vores eksempel opretter vi forbindelse til en database med navnet Demodb. De loginoplysninger, der bruges til at oprette forbindelse til databasen, er angivet nedenfor:
- Brugernavn – sa
- Adgangskode – demo123
Lad os arbejde med vores nuværende webapplikation, som vi oprettede i de tidligere afsnit.
- Begynd at tilføje databaseoperationer til den.
- Vores eksempel ser på etablering af en simpel forbindelse. Denne forbindelse oprettes til Demodb-databasen. Dette gøres, når siden åbnes første gang.
- Når forbindelsen er etableret, sendes en besked til brugeren. Meddelelsen vil indikere, at forbindelsen er etableret.
Lad os følge nedenstående trin for at opnå dette.
Trin 1) Lad os først sikre os, at du har din webapplikation (DemoApplication) åben i Visual Studio. Double-klik på filen demo.aspx.cs for at indtaste koden til databaseforbindelsen.
Trin 2) Tilføj nedenstående kode, som vil blive brugt til at oprette forbindelse til databasen.
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 Forklaring:-
- Det første trin er at oprette variabler. De vil blive brugt til at oprette forbindelsesstrengen og forbindelsen til SQL Server-databasen.
- Det næste trin er faktisk at oprette forbindelsesstrengen. Forbindelsesstrengen består af følgende dele:
- Datakilde – Dette er navnet på den server, som databasen ligger på. I vores tilfælde ligger den på en maskine kaldet WIN-50GP30FGO75.
- Det indledende katalog bruges til at angive navnet på databasen.
- Bruger-ID og adgangskode er de legitimationsoplysninger, der kræves for at oprette forbindelse til databasen.
- Dernæst tildeler vi forbindelsesstrengen til variablen cnn.
- Variablen cnn er af typen SqlConnection. Dette bruges til at oprette forbindelse til databasen.
- SqlConnection er en klasse i ASP.NET, der bruges til at oprette en forbindelse til en database.
- For at bruge denne klasse skal du først oprette et objekt af denne klasse. Derfor opretter vi her en variabel kaldet cnn, som er af typen SqlConnection.
- Dernæst bruger vi Open-metoden fra cnn-variablen til at åbne en forbindelse til databasen. Vi viser en besked til brugeren om, at forbindelsen er etableret. Dette gøres via Response.Write-metoden. Vi lukker derefter forbindelsen til databasen.
Når ovenstående kode er indstillet, og projektet udføres vha. Visual Studio, får du nedenstående output. Når formularen vises, skal du klikke på knappen Forbind.
Produktion:-
Outputmeddelelsen, der vises i browseren, vil vise, at forbindelsen til databasen er oprettet.
ASP.NET Læs database ved hjælp af SqlDataReader
For at vise data, der er tilgået ved hjælp af ASP.NET, lad os antage følgende artefakter i vores database.
- En tabel kaldet demotb. Denne tabel vil blive brugt til at gemme ID'et og navnene på forskellige tutorials.
- Tabellen vil have to kolonner, en kaldet TutorialID og den anden kaldet TutorialName.
- I øjeblikket vil tabellen have to rækker som vist nedenfor.
| Tutorial-ID | Tutorial Navn |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Lad os ændre koden, så vi kan forespørge om disse data og vise oplysningerne på selve websiden. Bemærk, at den indtastede kode er en fortsættelse af den, der er skrevet til dataforbindelsesmodulet.
Trin 1) Lad os opdele koden i to dele:
- Den første del vil være at konstruere vores select-sætning. Den vil blive brugt til at læse dataene fra databasen.
- Vi udfører derefter select-sætningen mod databasen. Dette vil hente alle tabellerækkerne i overensstemmelse hermed.
Code Forklaring:-
- Det første trin er at oprette følgende variabler:
- SqlCommand – SqlCommand er en klasse defineret i C#. Denne klasse bruges til at udføre operationer med læsning og skrivning i databasen.
- DataReader-objektet bruges til at hente alle data specificeret af SQL-forespørgslen. Vi kan så læse alle tabelrækkerne én efter én ved hjælp af datalæseren.
- Vi definerer derefter to strengvariabler. Den ene er SQL, der skal indeholde vores SQL-kommandostreng. Den næste er Output, som vil indeholde alle tabelværdierne.
- Det næste trin er faktisk at definere SQL-sætningen. I vores tilfælde er det "Vælg TutorialID, TutorialName fra demotb". Dette vil hente alle rækkerne fra tabellen demotb.
- Dernæst opretter vi kommandoobjektet, som bruges til at udføre SQL-sætningen mod databasen. I SQL-kommandoen skal du videregive forbindelsesobjektet og SQL-strengen.
- Dernæst udfører vi data reader-kommandoen, som henter alle rækkerne fra demotb-tabellen.
- Nu hvor vi har alle rækkerne i tabellen, har vi brug for en mekanisme til at få adgang til rækkerne én efter én.
- Til dette bruger vi while-sætningen til at tilgå rækkerne fra datalæseren én ad gangen.
- Vi bruger derefter GetValue-metoden til at få værdien af TutorialID og TutorialName.
Trin 2) I det sidste trin viser vi outputtet til brugeren. Derefter lukker vi alle objekter relateret til databaseoperationen.
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 Forklaring:-
- Vi fortsætter vores kode ved at vise værdien af Output-variablen. Dette gøres ved hjælp af Response.Write-metoden.
- Vi lukker endelig alle objekter relateret til vores databaseoperation. Husk, at dette altid er god praksis.
Når ovenstående kode er indstillet, og projektet køres ved hjælp af Visual Studio, får du nedenstående output.
Produktion:-
Fra outputtet kan du tydeligt se, at programmet var i stand til at hente værdierne fra databasen. Dataene vises derefter i browseren til brugeren.
Indsæt databasepost ved hjælp af InsertCommand
Ligesom med at tilgå data har ASP.NET også muligheden for at indsætte poster i databasen. Lad os tage den samme tabelstruktur, der bruges til at indsætte poster.
| Tutorial-ID | Tutorial Navn |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Lad os ændre koden i vores formular, så vi kan indsætte følgende række i tabellen:
| Tutorial-ID | Tutorial Navn |
|---|---|
| 3 | VB.Net |
Trin 1) Som det første trin, lad os tilføje følgende kode til vores program. Nedenstående kodestykke vil blive brugt til at indsætte en post i vores 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 Forklaring:-
- Det første trin er at oprette følgende variabler:
- SqlCommand – Denne datatype bruges til at definere objekter, der udfører SQL-operationer mod en database. Dette objekt indeholder den SQL-kommando, der kører mod vores SQL Server-database.
- DataAdapter-objektet bruges til at udføre SQL-kommandoer til indsættelse, sletning og opdatering.
- Vi definerer derefter en strengvariabel, som er sql, til at indeholde vores SQL-kommandostreng.
- Det næste trin er faktisk at definere SQL-sætningen. I vores tilfælde bruger vi en insert-sætning. Denne vil indsætte posterne TutorialID=3 og TutorialName=VB.Net.
- Dernæst opretter vi kommandoobjektet, som bruges til at udføre SQL-sætningen mod databasen. I SQL-kommandoen skal du videregive forbindelsesobjektet og SQL-strengen.
- I vores dataadapterkommando:
- Knyt indsæt SQL-kommandoen til adapteren.
- Udfør derefter ExecuteNonQuery-metoden. Denne bruges til at udføre insert-sætningen mod vores database.
- ExecuteNonQuery-metoden bruges i C# at udstede eventuelle DML-sætninger (indsæt, slet og opdatering) mod databasen.
- Vi lukker endelig alle objekter relateret til vores databaseoperation. Husk, at dette altid er god praksis.
Trin 2) Som et andet trin tilføjer vi den samme kode som i afsnittet om adgang til data. Dette er for at vise de seneste tabeldata i browseren. For at gøre dette tilføjer vi nedenstående kode til demo.aspx.cs-filen.
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(); } } }
Når ovenstående kode er indstillet, og projektet udføres i Visual Studio, får du nedenstående output.
Produktion:-
I browservinduet vil du se, at rækken er blevet indsat i databasen.
Opdater databasepost ved hjælp af UpdateCommand
ASP.NET har mulighed for at opdatere eksisterende poster i en database. Lad os tage den samme tabelstruktur, som blev brugt ovenfor i eksemplet, til at indsætte poster.
| Tutorial-ID | Tutorial Navn |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net |
Lad os ændre koden i vores formular, så vi kan opdatere den følgende række. Den gamle rækkeværdi er TutorialID som 3 og TutorialName som VB.Net, som vi opdaterer til "VB.Net Complete", mens rækkeværdien for TutorialID forbliver den samme.
Gammel række
| Tutorial-ID | Tutorial Navn |
|---|---|
| 3 | VB.Net |
Ny række
| Tutorial-ID | Tutorial Navn |
|---|---|
| 3 | VB.Net Komplet |
Trin 1) Som det første trin, lad os tilføje følgende kode til vores program. Nedenstående kodestykke vil blive brugt til at opdatere en eksisterende post i vores 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 Forklaring:-
- Det første trin er at oprette følgende variabler:
- SqlCommand – Denne datatype bruges til at definere objekter, der skal udføre SQL-operationer mod en database. Dette objekt indeholder den SQL-kommando, der køres mod vores SQL Server-database.
- DataAdapter-objektet bruges til at udføre SQL-kommandoer til indsættelse, sletning og opdatering.
- Vi definerer derefter en strengvariabel, som er sql, til at indeholde vores SQL-kommandostreng.
- Det næste trin er faktisk at definere SQL-sætningen. I vores tilfælde udsteder vi en opdateringssætning. Dette vil opdatere TutorialName til "VB.Net Complete". TutorialID'et vil forblive uændret, og værdien vil være 3.
- Dernæst opretter vi kommandoobjektet. Dette bruges til at udføre SQL-sætningen mod databasen. I SQL-kommandoen overfører du forbindelsesobjektet og SQL-strengen.
- I vores data adapter-kommando knytter vi SQL-kommandoen til vores adapter. Vi udfører derefter ExecuteNonQuery-metoden. Denne bruges til at udføre opdateringskommandoen mod vores database.
- Vi lukker endelig alle objekter relateret til vores databaseoperation. Husk, at dette altid er god praksis.
Trin 2) Som et andet trin tilføjer vi den samme kode som i afsnittet om adgang til data. Dette er for at vise de seneste tabeldata i browseren. Til det formål tilføjer vi nedenstående kode.
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(); } } }
Når ovenstående kode er indstillet, og projektet udføres ved hjælp af Visual Studio, får du nedenstående output.
Produktion:-
I browservinduet vil du se, at rækken er blevet opdateret i databasen.
Slet databasepost ved hjælp af DeleteCommand
ASP.NET kan slette eksisterende poster fra en database. Lad os tage den samme tabelstruktur, som blev brugt ovenfor i eksemplet til at slette poster.
| Tutorial-ID | Tutorial Navn |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net Komplet |
Lad os ændre koden i vores formular, så vi kan slette følgende række:
| Tutorial-ID | Tutorial Navn |
|---|---|
| 3 | VB.Net Komplet |
Trin 1) Som det første trin, lad os tilføje følgende kode til vores program. Nedenstående kodestykke vil blive brugt til at slette en eksisterende post i vores 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 Forklaring:-
- Den vigtigste forskel i denne kode er, at vi nu udsteder SQL-sætningen `delete`. Sletningssætningen bruges til at slette den række i demotb-tabellen, hvor TutorialID har en værdi på 3.
- I vores data adapter-kommando knytter vi delete SQL-kommandoen til vores adapter. Vi udfører også ExecuteNonQuery-metoden, som bruges til at udføre delete-sætningen mod vores database.
Trin 2) Som et andet trin tilføjer vi den samme kode som i afsnittet om adgang til data. Dette er for at vise de seneste tabeldata i browseren. Til det formål tilføjer vi nedenstående kode.
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(); } } }
Når ovenstående kode er indstillet, og projektet udføres ved hjælp af Visual Studio, får du nedenstående output.
Produktion:-
Forbinde ASP.NET-kontroller til data
Vi har set, hvordan vi kan bruge ASP.NET-kommandoer som SqlCommand og SqlDataReader til at hente data fra en database. Vi har også set, hvordan vi kan læse hver række i tabellen og vise den på websiden.
Der findes metoder til at linke kontrolelementer direkte til forskellige felter i tabellen. I øjeblikket kan kun nedenstående kontrolelementer bindes til en ASP.NET-applikation:
- Check (Skak)BoxListe
- RadioButtonList
- DropDownList
- ListeBox
Lad os se et eksempel på, hvordan vi kan bruge kontrolbinding i ASP.NET. Her tager vi en listeBox eksempel. Lad os sige, at vi har følgende data i vores database.
| Tutorial-ID | Tutorial Navn |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net Komplet |
Lad os bruge listenBox kontrol og se, hvordan den automatisk kan hente dataene fra vores demotb-tabel. Lad os følge nedenstående trin for at opnå dette.
Trin 1) Konstruer den grundlæggende webformular. Træk og slip to komponenter – etiketter og liste – fra værktøjskassen i Visual Studio.Boxes. Udfør derefter følgende deltrin:
- Indsæt tekstværdien for den første etiket som TutorialID.
- Indsæt tekstværdien for den anden etiket som TutorialName.
Nedenfor ses, hvordan formularen vil se ud, når ovenstående trin er udført.
Trin 2) Det næste trin er at begynde at forbinde hver listeBox til databasetabellen.
- Klik først på listenBox for TutorialID. Dette vil åbne en anden dialogboks ved siden af kontrolelementet.
- Klik på indstillingen Vælg datakilde i dialogboksen.
Trin 3) Du vil derefter blive præsenteret for en dialogboks. Denne kan bruges til at oprette en ny datakilde. Datakilden vil repræsentere en forbindelse til databasen. Vælg muligheden Ny datakilde.
Trin 4) Nedenstående skærm vil blive bedt om, efter at du har valgt den nye datakilde i det sidste trin. Her skal vi nævne den type datakilde, vi ønsker at oprette.
- Vælg databaseindstillingen for at arbejde med en SQL Server-database.
- Nu skal vi give vores datakilde et navn. Her giver vi det navnet DemoDataSource.
- Til sidst klikker vi på OK-knappen for at fortsætte til næste skærmbillede.
Trin 5) Nu skal vi oprette en forbindelse til vores database. Klik på knappen Ny forbindelse på det næste skærmbillede.
Trin 6) Dernæst skal du tilføje legitimationsoplysningerne for at oprette forbindelse til databasen.
- Vælg navnet på den server, hvor SQL Serveren er placeret.
- Indtast bruger-id og adgangskode for at oprette forbindelse til databasen.
- Vælg databasen som demotb.
- Klik på OK-knappen.
Trin 7) På den næste skærm vil du kunne se demotb-tabellen. Klik blot på knappen Næste for at acceptere standardindstillingen.
Trin 8) Du vil nu kunne teste forbindelsen på den næste skærm.
- Klik på knappen Testforespørgsel for at se, om du kan hente værdierne fra tabellen.
- Klik på knappen Udfør for at fuldføre guiden.
Trin 9) Nu på den sidste skærm kan du klikke på OK-knappen. Dette vil nu binde TutorialID-listen.Box til TutorialID-feltnavnet i demotb-tabellen.
Trin 10) Nu er det tid til at binde TutorialName-listenBox til feltet TutorialName.
- Klik først på listen over vejledningsnavneBox.
- Vælg derefter Datakilde i dialogboksen, der vises ved siden af listen.Box.
Trin 11) Du vil allerede se DemoDataSource, når du vælger Data Source på det næste skærmbillede.
- Vælg DemoDataSource.
- Klik på OK-knappen.
Hvis alle ovenstående trin udføres som vist, vil du få nedenstående output.
Produktion:-
Ud fra outputtet kan du se, at listenBoxes viser henholdsvis TutorialID og TutorialName.




























