Infoga, uppdatera, ta bort: ASP.NET-databasanslutning
⚡ Smart sammanfattning
ASP.NET ansluter till databaser som SQL Server och Oracle via ADO.NET, med hjälp av klasserna SqlConnection, SqlCommand, SqlDataReader och SqlDataAdapter för att öppna en anslutning och köra åtgärder för att välja, infoga, uppdatera och ta bort mot lagrade poster.
Att komma åt data från en databas är en viktig aspekt av alla programmeringsspråk. Det är nödvändigt för alla programmeringsspråk att kunna arbeta med databaser.
ASP.NET har förmågan att arbeta med olika typer av databaser. Det kan arbeta med de vanligaste databaserna som t.ex. Oracle och Microsoft SQL Server.
Den har även förmågan att arbeta med nya former av databaser som t.ex MongoDB och MySQL.
Grunderna i databasanslutning
ASP.NET kan arbeta med de flesta databaser, den vanligaste är Oracle och Microsoft SQL Server. Men med varje databas är logiken bakom att arbeta med dem alla för det mesta densamma.
I våra exempel kommer vi att titta på att arbeta med Microsoft SQL Server som vår databas. För inlärningsändamål kan man ladda ner och använda Microsoft SQL Server Express Edition. Detta är en gratis databasprogramvara som tillhandahålls av Microsoft.
När man arbetar med databaser är följande koncept vanliga i alla databaser:
- förbindelse – För att arbeta med data i en databas är det första självklara steget uppkopplingen. Anslutningen till en databas består normalt av nedanstående parametrar.
- Databasnamn eller datakälla – Den första viktiga parametern är databasnamnet. Varje anslutning kan bara fungera med en databas åt gången.
- referenser – Nästa viktiga aspekt är användarnamnet och lösenordet. Dessa används för att upprätta en anslutning till databasen.
- Valfria parametrar – Du kan ange valfria parametrar för hur .NET ska hantera anslutningen till databasen. Till exempel kan man ange en parameter för hur länge anslutningen ska vara aktiv.
- Välja data från databasen – När anslutningen är upprättad hämtas data från databasen. ASP.NET har möjlighet att köra SQL select-kommandot mot databasen. SQL-satsen kan användas för att hämta data från en specifik tabell i databasen.
- Infoga data i databasen – ASP.NET används för att infoga poster i databasen. Värden för varje rad som behöver infogas i databasen anges i ASP.NET.
- Uppdatering av data till databasen – ASP.NET kan också användas för att uppdatera befintliga poster i databasen. Nya värden kan anges i ASP.NET för varje rad som behöver uppdateras i databasen.
- Ta bort data från en databas – ASP.NET kan också användas för att ta bort poster från databasen. Koden är skriven för att ta bort en viss rad från databasen.
Nu när vi har sett den teoretiska delen av varje operation, låt oss se hur man utför databasoperationer i ASP.NET.
ASP.NET-databasanslutningar
Låt oss nu titta på koden som behöver behållas för att skapa en anslutning till en databas. I vårt exempel kommer vi att ansluta till en databas som heter Demodb. Inloggningsuppgifterna som används för att ansluta till databasen anges nedan:
- Användarnamn – sa
- Lösenord – demo123
Låt oss arbeta med vår nuvarande webbapplikation som skapades i de tidigare avsnitten.
- Börja lägga till databasoperationer till den.
- Vårt exempel visar hur man upprättar en enkel anslutning. Denna anslutning görs till Demodb-databasen. Detta görs när sidan först öppnas.
- När anslutningen är upprättad kommer ett meddelande att skickas till användaren. Meddelandet kommer att indikera att anslutningen har upprättats.
Låt oss följa stegen nedan för att uppnå detta.
Steg 1) Låt oss först se till att du har din webbapplikation (DemoApplication) öppen i Visual Studio. Double-klicka på filen demo.aspx.cs för att ange koden för databasanslutningen.
Steg 2) Lägg till koden nedan som kommer att användas för att upprätta en anslutning till 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 Förklaring:-
- Det första steget är att skapa variabler. De kommer att användas för att skapa anslutningssträngen och anslutningen till SQL Server-databasen.
- Nästa steg är att faktiskt skapa anslutningssträngen. Anslutningssträngen består av följande delar:
- Datakälla – Detta är namnet på servern där databasen finns. I vårt fall finns den på en maskin som heter WIN-50GP30FGO75.
- Den initiala katalogen används för att ange databasens namn.
- Användar-ID och lösenord är de inloggningsuppgifter som krävs för att ansluta till databasen.
- Därefter tilldelar vi anslutningssträngen till variabeln cnn.
- Variabeln cnn är av typen SqlConnection. Detta används för att upprätta en anslutning till databasen.
- SqlConnection är en klass i ASP.NET som används för att skapa en koppling till en databas.
- För att använda den här klassen måste du först skapa ett objekt av klassen. Därför skapar vi här en variabel som heter cnn, vilken är av typen SqlConnection.
- Därefter använder vi Open-metoden i variabeln cnn för att öppna en anslutning till databasen. Vi visar ett meddelande till användaren att anslutningen är upprättad. Detta görs via Response.Write-metoden. Vi stänger sedan anslutningen till databasen.
När ovanstående kod är inställd och projektet körs med hjälp av Visual Studio, får du utdata nedan. När formuläret visas klickar du på knappen Anslut.
Produktion:-
Utdatameddelandet som visas i webbläsaren visar att anslutningen till databasen är gjord.
ASP.NET Läs databas med SqlDataReader
För att visa data som nås med ASP.NET, låt oss anta följande artefakter i vår databas.
- En tabell som heter demotb. Denna tabell kommer att användas för att lagra ID och namn på olika handledningar.
- Tabellen kommer att ha två kolumner, en som heter HandledningsID och den andra som heter Handledningsnamn.
- För tillfället kommer tabellen att ha två rader som visas nedan.
| Handlednings-ID | TutorialName |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Låt oss ändra koden så att vi kan fråga efter dessa data och visa informationen på själva webbsidan. Observera att den angivna koden är en fortsättning på den som skrivits för dataanslutningsmodulen.
Steg 1) Låt oss dela upp koden i två delar:
- Den första delen går ut på att konstruera vår select-sats. Den kommer att användas för att läsa data från databasen.
- Vi kommer sedan att köra select-satsen mot databasen. Detta kommer att hämta alla tabellrader i enlighet därmed.
Code Förklaring:-
- Det första steget är att skapa följande variabler:
- SqlCommand – SqlCommand är en klass definierad i C#. Klassen används för att utföra operationer för att läsa och skriva till databasen.
- DataReader-objektet används för att hämta all data som specificeras av SQL-frågan. Vi kan sedan läsa alla tabellrader en efter en med hjälp av dataläsaren.
- Vi definierar sedan två strängvariabler. En är SQL för att innehålla vår SQL-kommandosträng. Nästa är Output som kommer att innehålla alla tabellvärden.
- Nästa steg är att faktiskt definiera SQL-satsen. I vårt fall är det "Select TutorialID, TutorialName from demotb". Detta hämtar alla rader från tabellen demotb.
- Därefter skapar vi kommandoobjektet som används för att exekvera SQL-satsen mot databasen. I SQL-kommandot måste du skicka anslutningsobjektet och SQL-strängen.
- Därefter kör vi kommandot data reader, vilket hämtar alla rader från demotb-tabellen.
- Nu när vi har alla rader i tabellen med oss behöver vi en mekanism för att komma åt raderna en efter en.
- För detta använder vi while-satsen för att komma åt raderna från dataläsaren en i taget.
- Vi använder sedan GetValue-metoden för att hämta värdet för TutorialID och TutorialName.
Steg 2) I det sista steget visar vi utdata för användaren. Sedan stänger vi alla objekt som är relaterade till databasoperationen.
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 Förklaring:-
- Vi fortsätter vår kod genom att visa värdet på variabeln Output. Detta görs med hjälp av metoden Response.Write.
- Vi stänger äntligen alla objekt som är relaterade till vår databasoperation. Kom ihåg att detta alltid är en bra vana.
När ovanstående kod är inställd och projektet körs med Visual Studio får du följande utdata.
Produktion:-
Från utgången kan du tydligt se att programmet kunde hämta värdena från databasen. Datan visas sedan i webbläsaren för användaren.
Infoga databaspost med InsertCommand
Precis som vid åtkomst till data har ASP.NET även möjligheten att infoga poster i databasen. Låt oss ta samma tabellstruktur som används för att infoga poster.
| Handlednings-ID | TutorialName |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Låt oss ändra koden i vårt formulär så att vi kan infoga följande rad i tabellen:
| Handlednings-ID | TutorialName |
|---|---|
| 3 | VB.Net |
Steg 1) Som ett första steg lägger vi till följande kod i vårt program. Kodavsnittet nedan kommer att användas för att infoga en post i vår databas.
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 Förklaring:-
- Det första steget är att skapa följande variabler:
- SqlCommand – Den här datatypen används för att definiera objekt som utför SQL-operationer mot en databas. Detta objekt kommer att innehålla SQL-kommandot som körs mot vår SQL Server-databas.
- DataAdapter-objektet används för att utföra SQL-kommandon för att infoga, ta bort och uppdatera.
- Vi definierar sedan en strängvariabel, som är sql, som ska innehålla vår SQL-kommandosträng.
- Nästa steg är att faktiskt definiera SQL-satsen. I vårt fall utfärdar vi en insert-sats. Detta infogar posterna TutorialID=3 och TutorialName=VB.Net.
- Därefter skapar vi kommandoobjektet som används för att exekvera SQL-satsen mot databasen. I SQL-kommandot måste du skicka anslutningsobjektet och SQL-strängen.
- I vårt dataadapterkommando:
- Associera kommandot insert SQL till adaptern.
- Kör sedan metoden ExecuteNonQuery. Denna används för att köra insert-satsen mot vår databas.
- ExecuteNonQuery-metoden används i C# att utfärda några DML-satser (infoga, ta bort och uppdatera operation) mot databasen.
- Vi stänger äntligen alla objekt som är relaterade till vår databasoperation. Kom ihåg att detta alltid är en bra vana.
Steg 2) Som ett andra steg lägger vi till samma kod som i avsnittet för åtkomst till data. Detta är för att visa de senaste tabelldata i webbläsaren. För det lägger vi till koden nedan i filen 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(); } } }
När ovanstående kod är inställd och projektet körs i Visual Studio får du följande utdata.
Produktion:-
I webbläsarfönstret ser du att raden har infogas i databasen.
Uppdatera databaspost med UpdateCommand
ASP.NET har möjlighet att uppdatera befintliga poster i en databas. Låt oss ta samma tabellstruktur som användes ovan i exemplet för att infoga poster.
| Handlednings-ID | TutorialName |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net |
Låt oss ändra koden i vårt formulär så att vi kan uppdatera följande rad. Det gamla radvärdet är TutorialID som 3 och TutorialName som VB.Net, vilket vi kommer att uppdatera till "VB.Net Complete" medan radvärdet för TutorialID kommer att förbli detsamma.
Gammal rad
| Handlednings-ID | TutorialName |
|---|---|
| 3 | VB.Net |
Ny rad
| Handlednings-ID | TutorialName |
|---|---|
| 3 | VB.Net komplett |
Steg 1) Som ett första steg lägger vi till följande kod i vårt program. Kodavsnittet nedan kommer att användas för att uppdatera en befintlig post i vår databas.
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 Förklaring:-
- Det första steget är att skapa följande variabler:
- SqlCommand – Den här datatypen används för att definiera objekt som ska utföra SQL-operationer mot en databas. Objektet kommer att innehålla SQL-kommandot som körs mot vår SQL Server-databas.
- DataAdapter-objektet används för att utföra SQL-kommandon för att infoga, ta bort och uppdatera.
- Vi definierar sedan en strängvariabel, som är sql, som ska innehålla vår SQL-kommandosträng.
- Nästa steg är att faktiskt definiera SQL-satsen. I vårt fall utfärdar vi en uppdateringssats. Detta kommer att uppdatera TutorialName till "VB.Net Complete". TutorialID kommer att förbli oförändrat och värdet kommer att vara 3.
- Nästa steg är att skapa kommandoobjektet. Detta används för att köra SQL-satsen mot databasen. I SQL-kommandot skickar du connection-objektet och SQL-strängen.
- I vårt dataadapterkommando associerar vi SQL-kommandot med vår adapter. Vi kör sedan metoden ExecuteNonQuery. Denna används för att köra uppdateringskommandot mot vår databas.
- Vi stänger äntligen alla objekt som är relaterade till vår databasoperation. Kom ihåg att detta alltid är en bra vana.
Steg 2) Som ett andra steg lägger vi till samma kod som i avsnittet för åtkomst till data. Detta är för att visa de senaste tabelldata i webbläsaren. För det lägger vi till koden nedan.
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 ovanstående kod är inställd och projektet körs med Visual Studio får du följande utdata.
Produktion:-
I webbläsarfönstret ser du att raden har uppdaterats i databasen.
Ta bort databaspost med DeleteCommand
ASP.NET kan ta bort befintliga poster från en databas. Låt oss ta samma tabellstruktur som användes ovan i exemplet för att ta bort poster.
| Handlednings-ID | TutorialName |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net komplett |
Låt oss ändra koden i vårt formulär så att vi kan ta bort följande rad:
| Handlednings-ID | TutorialName |
|---|---|
| 3 | VB.Net komplett |
Steg 1) Som ett första steg lägger vi till följande kod i vårt program. Kodavsnittet nedan kommer att användas för att ta bort en befintlig post i vår databas.
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 Förklaring:-
- Den viktigaste skillnaden i den här koden är att vi nu utfärdar SQL-satsen delete. Satsen delete används för att ta bort raden i demotb-tabellen där TutorialID har värdet 3.
- I vårt data adapter-kommando associerar vi SQL-kommandot delete till vår adapter. Vi kör också metoden ExecuteNonQuery som används för att köra delete-kommandot mot vår databas.
Steg 2) Som ett andra steg lägger vi till samma kod som i avsnittet för åtkomst till data. Detta är för att visa de senaste tabelldata i webbläsaren. För det lägger vi till koden nedan.
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 ovanstående kod är inställd och projektet körs med Visual Studio får du följande utdata.
Produktion:-
Ansluta ASP.NET-kontroller till data
Vi har sett hur vi kan använda ASP.NET-kommandon som SqlCommand och SqlDataReader för att hämta data från en databas. Vi har också sett hur vi kan läsa varje rad i tabellen och visa den på webbsidan.
Det finns metoder tillgängliga för att länka kontroller direkt till olika fält i tabellen. För närvarande kan endast följande kontroller bindas till en ASP.NET-applikation:
- Kolla uppBoxLista
- RadioButtonList
- Dropdownlist
- ListaBox
Låt oss se ett exempel på hur vi kan använda kontrollbindning i ASP.NET. Här tar vi en listaBox exempel. Låt oss säga att vi har följande data i vår databas.
| Handlednings-ID | TutorialName |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net komplett |
Låt oss använda listanBox kontroll och se hur den automatiskt kan hämta data från vår demotb-tabell. Låt oss följa stegen nedan för att uppnå detta.
Steg 1) Skapa det grundläggande webbformuläret. Dra och släpp två komponenter – etiketter och lista – från verktygslådan i Visual Studio.Boxes. Utför sedan följande delsteg:
- Ange textvärdet för den första etiketten som HandledningsID.
- Skriv textvärdet för den andra etiketten som Handledningsnamn.
Nedan visas hur formuläret kommer att se ut när ovanstående steg är utförda.
Steg 2) Nästa steg är att börja koppla samman varje listaBox till databastabellen.
- Klicka först på listanBox för TutorialID. Detta visar en annan dialogruta bredvid kontrollen.
- I dialogrutan klickar du på alternativet Välj datakälla.
Steg 3) Du kommer då att få upp en dialogruta. Den kan användas för att skapa en ny datakälla. Datakällan kommer att representera en koppling till databasen. Välj alternativet Ny datakälla.
Steg 4) Skärmen nedan kommer att uppmanas efter att ha valt den nya datakällan i det sista steget. Här måste vi nämna vilken typ av datakälla vi vill skapa.
- Välj databasalternativet för att arbeta med en SQL Server-databas.
- Nu måste vi ge ett namn till vår datakälla. Här ger vi det namnet DemoDataSource.
- Slutligen klickar vi på OK-knappen för att gå vidare till nästa skärm.
Steg 5) Nu behöver vi skapa en anslutning till vår databas. På nästa skärm klickar du på knappen Ny anslutning.
Steg 6) Därefter måste du lägga till autentiseringsuppgifterna för att ansluta till databasen.
- Välj servernamnet där SQL-servern finns.
- Ange användar-ID och lösenord för att ansluta till databasen.
- Välj databasen som demotb.
- Klicka på OK-knappen.
Steg 7) På nästa skärm kommer du att kunna se demotb-tabellen. Klicka bara på knappen Nästa för att acceptera standardinställningen.
Steg 8) Du kommer nu att kunna testa anslutningen på nästa skärm.
- Klicka på knappen Testfråga för att se om du kan hämta värdena från tabellen.
- Klicka på knappen Slutför för att slutföra guiden.
Steg 9) Nu på den sista skärmen kan du klicka på OK-knappen. Detta kommer nu att binda TutorialID-listan.Box till fältnamnet TutorialID i demotb-tabellen.
Steg 10) Nu är det dags att binda TutorialName-listanBox till fältet Handledningsnamn.
- Klicka först på listan HandledningsnamnBox.
- Välj sedan Datakälla i dialogrutan som visas bredvid listan.Box.
Steg 11) Du kommer redan att se DemoDataSource när du väljer datakälla på nästa skärm.
- Välj DemoDataSource.
- Klicka på OK-knappen.
Om alla ovanstående steg exekveras som visas, kommer du att få utdata nedan.
Produktion:-
Från utdata kan du se att listanBoxes visar HandledningsID respektive Handledningsnamn.




























