Вмъкване, актуализиране, изтриване: Връзка с база данни ASP.NET
⚡ Умно обобщение
ASP.NET се свързва с бази данни като SQL Server и Oracle чрез ADO.NET, използвайки класовете SqlConnection, SqlCommand, SqlDataReader и SqlDataAdapter за отваряне на връзка и изпълнение на операции за избиране, вмъкване, актуализиране и изтриване спрямо съхранени записи.
Достъпът до данни от база данни е важен аспект на всеки език за програмиране. Необходимо е всеки език за програмиране да може да работи с бази данни.
ASP.NET има възможността да работи с различни видове бази данни. Той може да работи с най-често срещаните бази данни, като например Oracle намлява Microsoft SQL Server.
Той също така има способността да работи с нови форми на бази данни като MongoDB намлява MySQL.
Основи на свързаността на бази данни
ASP.NET има възможността да работи с повечето бази данни, като най-често срещаните са Oracle намлява Microsoft SQL Server. Но с всяка база данни логиката зад работата с всички тях е почти една и съща.
В нашите примери ще разгледаме работата с Microsoft SQL Server като нашата база данни. За учебни цели можете да изтеглите и използвате Microsoft SQL Server Express Edition. Това е безплатен софтуер за бази данни, предоставен от Microsoft.
При работа с бази данни, следните понятия са общи за всички бази данни:
- Връзка – За да работите с данните в база данни, първата очевидна стъпка е връзката. Връзката към база данни обикновено се състои от посочените по-долу параметри.
- Име на база данни или източник на данни – Първият важен параметър е името на базата данни. Всяка връзка може да работи само с една база данни в даден момент.
- акредитивни писма – Следващият важен аспект е потребителското име и паролата. Те се използват за установяване на връзка с базата данни.
- Незадължителни параметри – Можете да зададете незадължителни параметри за това как .NET трябва да обработва връзката с базата данни. Например, може да се зададе параметър за това колко дълго връзката трябва да остане активна.
- Избор на данни от базата данни – След като връзката е установена, данните се извличат от базата данни. ASP.NET има възможността да изпълни SQL командата select спрямо базата данни. SQL операторът може да се използва за извличане на данни от конкретна таблица в базата данни.
- Вмъкване на данни в базата данни – ASP.NET се използва за вмъкване на записи в базата данни. Стойностите за всеки ред, който трябва да бъде вмъкнат в базата данни, са посочени в ASP.NET.
- Актуализиране на данните в базата данни – ASP.NET може да се използва и за актуализиране на съществуващи записи в базата данни. В ASP.NET могат да се задават нови стойности за всеки ред, който трябва да се актуализира в базата данни.
- Изтриване на данни от база данни – ASP.NET може да се използва и за изтриване на записи от базата данни. Кодът е написан за изтриване на определен ред от базата данни.
След като разгледахме теоретичната част на всяка операция, нека видим как да извършваме операции с база данни в ASP.NET.
ASP.NET връзки към бази данни
Нека сега разгледаме кода, който трябва да се запази, за да се създаде връзка с база данни. В нашия пример ще се свържем с база данни с име Demodb. Идентификационните данни, използвани за свързване с базата данни, са дадени по-долу:
- Потребителско име – sa
- Парола – demo123
Нека работим с нашето текущо уеб приложение, създадено в предишните раздели.
- Започнете да добавяте операции с база данни към него.
- Нашият пример разглежда установяването на проста връзка. Тази връзка се осъществява с базата данни Demodb. Това се прави при първото стартиране на страницата.
- Когато връзката бъде установена, на потребителя ще бъде изпратено съобщение. Съобщението ще покаже, че връзката е установена.
Нека следваме посочените по-долу стъпки, за да постигнем това.
Стъпка 1) Нека първо се уверим, че вашето уеб приложение (DemoApplication) е отворено във Visual Studio. Double-щракнете върху файла demo.aspx.cs, за да въведете кода за връзката с базата данни.
Стъпка 2) Добавете кода по-долу, който ще се използва за установяване на връзка с базата данни.
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 Обяснение:
- Първата стъпка е да се създадат променливи. Те ще бъдат използвани за създаване на низа за свързване и връзката с базата данни на SQL Server.
- Следващата стъпка е реалното създаване на низа за свързване. Низът за свързване се състои от следните части:
- Източник на данни – Това е името на сървъра, на който се намира базата данни. В нашия случай тя се намира на машина, наречена WIN-50GP30FGO75.
- Първоначалният каталог се използва за задаване на името на базата данни.
- Потребителският идентификатор и паролата са данните за достъп, необходими за свързване с базата данни.
- След това присвояваме низа за свързване на променливата cnn.
- Променливата cnn е от тип SqlConnection. Това се използва за установяване на връзка с базата данни.
- SqlConnection е клас в ASP.NET, който се използва за създаване на връзка с база данни.
- За да използвате този клас, първо трябва да създадете обект от този клас. Следователно, тук създаваме променлива, наречена cnn, която е от типа SqlConnection.
- След това използваме метода Open на променливата cnn, за да отворим връзка с базата данни. Показваме съобщение на потребителя, че връзката е установена. Това се прави чрез метода Response.Write. След това затваряме връзката с базата данни.
Когато горният код е зададен и проектът се изпълни с помощта на Visual Studio, ще получите резултата по-долу. След като формулярът се покаже, щракнете върху бутона „Свързване“.
Изход: -
Изходното съобщение, показано в браузъра, ще покаже, че връзката с базата данни е направена.
ASP.NET чете база данни с помощта на SqlDataReader
За да покажем данни, достъпни чрез ASP.NET, нека приемем следните артефакти в нашата база данни.
- Таблица, наречена demotb. Тази таблица ще се използва за съхраняване на идентификатора и имената на различни уроци.
- Таблицата ще има две колони, едната наречена TutorialID, а другата наречена TutorialName.
- За момента таблицата ще има два реда, както е показано по-долу.
| TutorialID | Име на урока |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Нека променим кода, така че да можем да правим заявки за тези данни и да показваме информацията на самата уеб страница. Обърнете внимание, че въведеният код е продължение на този, написан за модула за връзка с данни.
Стъпка 1) Нека разделим кода на две части:
- Първата част ще бъде да конструираме нашата команда select. Тя ще бъде използвана за четене на данните от базата данни.
- След това ще изпълним командата select спрямо базата данни. Това ще извлече всички редове от таблицата съответно.
Code Обяснение:
- Първата стъпка е да се създадат следните променливи:
- SqlCommand – SqlCommand е клас, дефиниран в C#. Този клас се използва за извършване на операции по четене и запис в базата данни.
- Обектът DataReader се използва за получаване на всички данни, посочени от SQL заявката. След това можем да прочетем всички редове на таблицата един по един с помощта на четеца на данни.
- След това дефинираме две променливи тип „string“. Едната е sql, която ще съхранява нашия SQL команден низ. Следващата е Output, която ще съдържа всички стойности от таблицата.
- Следващата стъпка е да дефинираме SQL оператора. В нашия случай това е „Select TutorialID, TutorialName from demotb“. Това ще извлече всички редове от таблицата demotb.
- След това създаваме командния обект, който се използва за изпълнение на SQL израза срещу базата данни. В SQL командата трябва да предадете обекта за връзка и SQL низа.
- След това изпълняваме командата за четене на данни, която ще извлече всички редове от таблицата demotb.
- След като вече имаме всички редове от таблицата, ни е необходим механизъм за достъп до редовете един по един.
- За тази цел използваме оператора while, за да достъпваме редовете от четеца на данни един по един.
- След това използваме метода GetValue, за да получим стойността на TutorialID и TutorialName.
Стъпка 2) В последната стъпка показваме резултата на потребителя. След това затваряме всички обекти, свързани с операцията с базата данни.
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 Обяснение:
- Продължаваме кода си, като показваме стойността на променливата Output. Това се прави с помощта на метода Response.Write.
- Накрая затваряме всички обекти, свързани с нашата операция с базата данни. Не забравяйте, че това винаги е добра практика.
Когато горният код е зададен и проектът се изпълни с помощта на Visual Studio, ще получите резултата по-долу.
Изход: -
От изхода можете ясно да видите, че програмата е успяла да получи стойностите от базата данни. След това данните се показват в браузъра на потребителя.
Вмъкнете запис в база данни с помощта на InsertCommand
Точно както при достъпа до данни, ASP.NET има възможност и за вмъкване на записи в базата данни. Нека вземем същата таблична структура, използвана за вмъкване на записи.
| TutorialID | Име на урока |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Нека променим кода във формата ни, така че да можем да вмъкнем следния ред в таблицата:
| TutorialID | Име на урока |
|---|---|
| 3 | VB.Net |
Стъпка 1) Като първа стъпка, нека добавим следния код към нашата програма. Фрагментът от код по-долу ще бъде използван за вмъкване на запис в нашата база данни.
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 Обяснение:
- Първата стъпка е да се създадат следните променливи:
- SqlCommand – Този тип данни се използва за дефиниране на обекти, които извършват SQL операции с база данни. Този обект ще съдържа SQL командата, която ще се изпълни с нашата база данни на SQL Server.
- Обектът DataAdapter се използва за изпълнение на SQL команди за вмъкване, изтриване и актуализиране.
- След това дефинираме низова променлива, която е sql, за да съхраняваме нашия SQL команден низ.
- Следващата стъпка е реалното дефиниране на SQL оператора. В нашия случай, ние изпълняваме оператор за вмъкване. Това ще вмъкне записа TutorialID=3 и TutorialName=VB.Net.
- След това създаваме командния обект, който се използва за изпълнение на SQL израза срещу базата данни. В SQL командата трябва да предадете обекта за връзка и SQL низа.
- В нашата команда за адаптер за данни:
- Свържете командата за вмъкване на SQL към адаптера.
- След това издайте метода ExecuteNonQuery. Той се използва за изпълнение на оператора insert в нашата база данни.
- Методът ExecuteNonQuery се използва в C# за издаване на DML изрази (операция за вмъкване, изтриване и актуализиране) срещу базата данни.
- Накрая затваряме всички обекти, свързани с нашата операция с базата данни. Не забравяйте, че това винаги е добра практика.
Стъпка 2) Като втора стъпка, нека добавим същия код, както в секцията за достъп до данни. Това е за показване на последните данни от таблицата в браузъра. За целта ще добавим кода по-долу към файла 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(); } } }
Когато горният код е зададен и проектът е изпълнен във Visual Studio, ще получите резултата по-долу.
Изход: -
В прозореца на браузъра ще видите, че редът е успешно вмъкнат в базата данни.
Актуализирайте записа на базата данни с помощта на UpdateCommand
ASP.NET има възможността да актуализира съществуващи записи в база данни. Нека вземем същата таблична структура, която беше използвана по-горе за примера, за да вмъкнем записи.
| TutorialID | Име на урока |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net |
Нека променим кода във формата ни, така че да можем да актуализираме следния ред. Старата стойност на реда е TutorialID като 3 и TutorialName като VB.Net, която ще актуализираме на „VB.Net Complete“, докато стойността на реда за TutorialID ще остане същата.
Стар ред
| TutorialID | Име на урока |
|---|---|
| 3 | VB.Net |
Нов ред
| TutorialID | Име на урока |
|---|---|
| 3 | VB.Net Complete |
Стъпка 1) Като първа стъпка, нека добавим следния код към нашата програма. Фрагментът от код по-долу ще бъде използван за актуализиране на съществуващ запис в нашата база данни.
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 Обяснение:
- Първата стъпка е да се създадат следните променливи:
- SqlCommand – Този тип данни се използва за дефиниране на обекти за извършване на SQL операции с база данни. Този обект ще съдържа SQL командата, която ще се изпълни с нашата база данни на SQL Server.
- Обектът DataAdapter се използва за изпълнение на SQL команди за вмъкване, изтриване и актуализиране.
- След това дефинираме низова променлива, която е sql, за да съхраняваме нашия SQL команден низ.
- Следващата стъпка е реалното дефиниране на SQL оператора. В нашия случай издаваме оператор за актуализиране. Това ще актуализира TutorialName на „VB.Net Complete“. TutorialID ще остане непроменен, а стойността ще бъде 3.
- След това създаваме обекта command. Той се използва за изпълнение на SQL оператора спрямо базата данни. В SQL командата предавате обекта за връзка и SQL низа.
- В нашата команда за адаптер за данни, ние свързваме SQL командата с нашия адаптер. След това издаваме метода ExecuteNonQuery. Той се използва за изпълнение на оператора за актуализиране спрямо нашата база данни.
- Накрая затваряме всички обекти, свързани с нашата операция с базата данни. Не забравяйте, че това винаги е добра практика.
Стъпка 2) Като втора стъпка, нека добавим същия код, както в секцията за достъп до данни. Това е за показване на последните данни от таблицата в браузъра. За целта ще добавим кода по-долу.
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(); } } }
Когато горният код е зададен и проектът е изпълнен с помощта на Visual Studio, ще получите резултата по-долу.
Изход: -
В прозореца на браузъра ще видите, че редът е успешно актуализиран в базата данни.
Изтриване на запис в база данни с помощта на DeleteCommand
ASP.NET може да изтрива съществуващи записи от база данни. Нека вземем същата таблична структура, която беше използвана по-горе за примера за изтриване на записи.
| TutorialID | Име на урока |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net Complete |
Нека променим кода във формата ни, така че да можем да изтрием следния ред:
| TutorialID | Име на урока |
|---|---|
| 3 | VB.Net Complete |
Стъпка 1) Като първа стъпка, нека добавим следния код към нашата програма. Фрагментът от код по-долу ще бъде използван за изтриване на съществуващ запис в нашата база данни.
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 Обяснение:
- Ключовата разлика в този код е, че сега издаваме SQL командата за изтриване. Командата за изтриване се използва за изтриване на реда в таблицата demotb, в която TutorialID има стойност 3.
- В нашата команда за адаптер за данни, ние свързваме SQL командата за изтриване с нашия адаптер. Също така издаваме метода ExecuteNonQuery, който се използва за изпълнение на командата за изтриване спрямо нашата база данни.
Стъпка 2) Като втора стъпка, нека добавим същия код, както в секцията за достъп до данни. Това е за показване на последните данни от таблицата в браузъра. За целта ще добавим кода по-долу.
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(); } } }
Когато горният код е зададен и проектът е изпълнен с помощта на Visual Studio, ще получите резултата по-долу.
Изход: -
Свързване на ASP.NET контроли с данни
Видяхме как можем да използваме ASP.NET команди като SqlCommand и SqlDataReader, за да извличаме данни от база данни. Видяхме също как можем да прочетем всеки ред от таблицата и да го покажем на уеб страницата.
Има методи за директно свързване на контроли с различни полета в таблицата. В момента само контролите по-долу могат да бъдат свързани с ASP.NET приложение:
- ПроверкаBoxсписък
- RadioButtonList
- Падащ списък
- списъкBox
Нека видим пример как можем да използваме свързване на контроли в ASP.NET. Тук ще вземем списъкBox пример. Да кажем, че имаме следните данни в нашата база данни.
| TutorialID | Име на урока |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net Complete |
Нека използваме списъкаBox контрол и да видим как той може автоматично да извлича данните от нашата таблица demotb. Нека следваме стъпките, посочени по-долу, за да постигнем това.
Стъпка 1) Създайте основна уеб форма. От инструментариума във Visual Studio, плъзнете и пуснете 2 компонента – етикети и списъкBoxСлед това изпълнете следните подстъпки:
- Поставете текстовата стойност на първия етикет като TutorialID.
- Поставете текстовата стойност на втория етикет като TutorialName.
По-долу е показано как ще изглежда формулярът, след като бъдат изпълнени гореспоменатите стъпки.
Стъпка 2) Следващата стъпка е да започнете да свързвате всеки списъкBox към таблицата на базата данни.
- Първо, кликнете върху „Списък“Box за TutorialID. Това ще отвори друг диалогов прозорец отстрани на контролата.
- От диалоговия прозорец щракнете върху опцията „Избор на източник на данни“.
Стъпка 3) След това ще ви бъде показан диалогов прозорец. Той може да се използва за създаване на нов източник на данни. Източникът на данни ще представлява връзка с базата данни. Изберете опцията Нов източник на данни.
Стъпка 4) Екранът по-долу ще бъде подканен, след като изберете новия източник на данни в последната стъпка. Тук трябва да споменем типа източник на данни, който искаме да създадем.
- Изберете опцията за база данни, за да работите с база данни на SQL Server.
- Сега трябва да дадем име на нашия източник на данни. Тук му даваме име DemoDataSource.
- Накрая щракваме върху бутона OK, за да преминем към следващия екран.
Стъпка 5) Сега трябва да създадем връзка с нашата база данни. На следващия екран щракнете върху бутона „Нова връзка“.
Стъпка 6) След това трябва да добавите идентификационните данни, за да се свържете с базата данни.
- Изберете името на сървъра, на който се намира SQL Server.
- Въведете потребителското име и паролата, за да се свържете с базата данни.
- Изберете базата данни като demotb.
- Щракнете върху бутона OK.
Стъпка 7) На следващия екран ще можете да видите таблицата demotb. Просто кликнете върху бутона „Напред“, за да приемете настройката по подразбиране.
Стъпка 8) Вече ще можете да тествате връзката на следващия екран.
- Кликнете върху бутона „Тест на заявката“, за да видите дали можете да получите стойностите от таблицата.
- Щракнете върху бутона Край, за да завършите съветника.
Стъпка 9) Сега на последния екран можете да щракнете върху бутона OK. Това ще свърже списъка TutorialID.Box към името на полето TutorialID в таблицата demotb.
Стъпка 10) Сега е време да се свърже списъкът TutorialNameBox към полето TutorialName.
- Първо, кликнете върху списъка с имена на урокиBox.
- След това изберете „Източник на данни“ в диалоговия прозорец, който се появява отстрани на списъка.Box.
Стъпка 11) Вече ще видите DemoDataSource, когато избирате източник на данни на следващия екран.
- Изберете DemoDataSource.
- Кликнете върху бутона OK.
Ако всички горни стъпки се изпълнят, както е показано, ще получите посочения по-долу резултат.
Изход: -
От резултата можете да видите, че списъкътBoxпоказват съответно TutorialID и TutorialName.




























