Подключение HTML к базе данных
Сразу скажу, что я в этом не очень разбераюсь, поэтому за грубые/не очень грубые ошибки тут же извиняюсь.
Как происходит подключение к базе данных?
Есть у меня, к примеру, маленький сайт-самоделка, где я отмечаю точки на google.maps и хочу эти координаты сохранить в базе данных. Как это реализовать?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Подключение к базе данных
Здравствуйте. У мене есть вопросы которые я хотел бы задать. Итак, есть программа база данных.
Чайник и VS Code Подключение базе данных
Добрый день подскажите как подключиться к БД в VS Code просто я затупок. Есть база создал ее в.
Ошибка при подключение к базе данных расположенной на интернет хостинге
У меня есть интернет хостинг и на нём расположена база данных. Я пытался через Visual Studio в.
Чем отличается внешнее подключение к базе данных от внутреннего
Можете объяснить: Чем отличается внешнее подключение к базе данных от внутреннего??
5314 / 4251 / 1049
Регистрация: 29.08.2013
Сообщений: 26,764
Записей в блоге: 3
в коде пишешь запрос INSERT и вставляешь данные в нужную таблицу
Регистрация: 18.06.2015
Сообщений: 28

Сообщение было отмечено imm как решение
Решение
Попробуй использовать PHP.
Например, есть страница на HTML. В ней есть форма с текстовыми полями для ввода имени и фамилии:
1 2 3 4 5 6
div class="form"> form action="index.php" method="post"> p> Имя input type="text" name="NAME" required />/p> p> Фамилия input type="text" name="SURNAME" required />/p> input type="submit"/> /form>
На кнопку «submit» подвязан скрипт «index.php» который осуществляет подключение и передачу данных в БД.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$serverName = "Имя сервера"; $connectionInfo = array("Database"=>"БД", "UID"=>"Пользователь", "PWD"=>"Пароль"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false ) { die( print_r( sqlsrv_errors(), true)); } $sql = "INSERT INTO Моя таблица (NAME, SURNAME) VALUES (?, ?)"; $params = array("$_POST[NAME]", "$_POST[SURNAME]"); $stmt = sqlsrv_query( $conn, $sql, $params); if( $stmt === false ) { die( print_r( sqlsrv_errors(), true)); }else{ echo ""; } ?>
На стороне SQL-сервера должна быть настроена возможность удаленного подключения и создан пользователь с соответствующими разрешениями. Также почитай про методы GET и POST.
P.S. Почитай/задай вопрос в темах web-программистов + рассмотри возможность использования БД MySQL.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Подключение к базе
Привет всем! Я делаю регистрацию, уже писалось в другой теме. Сделал Дату рождения (взял немного.
Подключение к базе через другой ПК
Помогите. Все делаю https://www.cyberforum.ru/sql-server/thread87227.html как здесь. Поставил.
Подключение к базе через SQL Developer
Можно ли подключиться к базе, созданной в MS sql server management studio? Откуда взять параметры.
Подключение к базе SQL2000 для Web
Пишу поключение BASE_STRING = ‘Driver=;Server=(local);Database=mybase;’, тестирую.
Как подключить форму html к бд mysql??
Все просто. 1) Сначала нужно получить данные из html формы. Вот как это сделать: https://fructcode.com/ru/courses/php-and-mysql/video-form-get-and-post/ 2) Потом эти данные нужно вставить в базу данных через insert: https://fructcode.com/ru/courses/php-and-mysql/video-sql-insert/ Вот здесь в ответе готовый пример получения данных из HTML формы и вставки его в базу данных + вывод данных из базы, на пример домашнего задания про плеер: https://fructcode.com/ru/qa/phpmysql-nzifh/
Sign up or Log in to write an answer
- Интерактивные уроки и курсы программирования и создания сайтов (дистанционное обучение) помогут вам в игровой форме изучить основы языков программирования веб-разработки и веб-программирования с нуля. Обучение онлайн 24/7.
Общие ссылки
- Отзывы
- Политика конфидециальности
- Условия использования
- Блог
- Цена и оплата
- Курсы и скринкасты
- Сертификаты
- Партнерская программа
- Комьюнити
Наши курсы и скринкасты
- HTML/CSS Advanced
- Bootstrap 4
- Vue JS
- Linux, GIT and web-hosting
- HTML and CSS
- Modern Javascript
- Javascript/jQuery
- Codeigniter
- Все курсы и скринкасты
Общие сведения о работе с базой данных на сайтах веб-страницы ASP.NET (Razor)
Версии программного обеспечения, используемые в этом руководстве
- веб-страницы ASP.NET (Razor) 2
- WebMatrix 2
Общие сведения о базах данных
Представьте себе типичную адресную книгу. Для каждой записи в адресной книге (т. е. для каждого человека) у вас есть несколько элементов информации, таких как имя, фамилия, адрес, адрес электронной почты и номер телефона.
Типичный способ изображения таких данных — таблица со строками и столбцами. В терминах базы данных каждую строку часто называют записью. Каждый столбец (иногда называемый полями) содержит значение для каждого типа данных: имя, фамилия и т. д.
| Идентификатор | FirstName | LastName | Адрес | Электронная почта | Номер телефона |
|---|---|---|---|---|---|
| 1 | Артем | Абрус | 210 100-й Санкт-СЕ Косатки WA 98031 | jim@contoso.com | 555 0100 |
| 2 | Terry | Адамс (Adams) | 1234 Main St. Seattle WA 99011 | terry@cohowinery.com | 555 0101 |
Для большинства таблиц базы данных таблица должна содержать столбец, содержащий уникальный идентификатор, например номер клиента, номер счета и т. д. Это называется первичным ключом таблицы, и он используется для идентификации каждой строки в таблице. В этом примере столбец id является первичным ключом адресной книги.
Благодаря этому базовому пониманию баз данных вы можете научиться создавать простую базу данных и выполнять такие операции, как добавление, изменение и удаление данных.
Реляционные базы данных
Вы можете хранить данные различными способами, включая текстовые файлы и электронные таблицы. Однако для большинства бизнес-применений данные хранятся в реляционной базе данных.
В этой статье не подробно рассматриваются базы данных. Тем не менее, вам может быть полезно понять немного о них. В реляционной базе данных сведения логически делятся на отдельные таблицы. Например, база данных для учебного заведения может содержать отдельные таблицы для учащихся и предложений классов. Программное обеспечение базы данных (например, SQL Server) поддерживает мощные команды, позволяющие динамически устанавливать связи между таблицами. Например, с помощью реляционной базы данных можно установить логическую связь между учащимися и классами, чтобы создать расписание. Хранение данных в отдельных таблицах снижает сложность структуры таблицы и снижает необходимость хранения избыточных данных в таблицах.
Создание базы данных
В этой процедуре показано, как создать базу данных с именем SmallBakery с помощью средства проектирования базы данных SQL Server Compact, включенного в WebMatrix. Хотя базу данных можно создать с помощью кода, более типично создавать базу данных и таблицы базы данных с помощью средства проектирования, такого как WebMatrix.
- Запустите WebMatrix и на странице Быстрого запуска щелкните Сайт из шаблона.
- Выберите Пустой сайт и в поле Имя сайта введите «SmallBakery» и нажмите кнопку ОК. Сайт создается и отображается в WebMatrix.
- В левой области щелкните рабочую область Базы данных .
- На ленте щелкните Создать базу данных. Создается пустая база данных с тем же именем, что и у сайта.
- В левой области разверните узел SmallBakery.sdf и щелкните Таблицы.
- На ленте щелкните Создать таблицу. WebMatrix открывает конструктор таблиц.
![[Снимок экрана: веб-матрица, открываемая конструктор таблиц.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image1.jpg)
- Щелкните столбец Имя и введите «Id».
- В столбце Тип данных выберите int.
- Задайте для параметров Первичный ключ? и Является ли определение? значение Да. Как следует из названия, Параметр Является первичным ключом сообщает базе данных, что это будет первичный ключ таблицы. Указывает , что база данных автоматически создает идентификационный номер для каждой новой записи и назначает ему следующий последовательный номер (начиная с 1).
- Щелкните следующую строку. Редактор запускает новое определение столбца.
- В поле Имя введите «Имя».
- В поле Тип данных выберите «nvarchar» и задайте длину 50. Часть nvarchar var сообщает базе данных, что данные для этого столбца будут строкой, размер которой может отличаться от записи к записи. (Префикс n представляет national, указывая, что поле может содержать символьные данные, представляющие любой алфавит или систему письма, то есть, что поле содержит данные Юникода.)
- Задайте для параметра Разрешить значения NULL значение Нет. Это приведет к тому, что столбец Name не останется пустым.
- С помощью этого же процесса создайте столбец с именем Description. Задайте для параметра Тип данных значение nvarchar и 50 для длины, а для параметра Allow Nulls задайте значение false.
- Создайте столбец с именем Price. Задайте для параметра Тип данных значение money , а для параметра Allow Nulls задайте значение false.
- В поле в верхней части назовите таблицу «Product». Когда все будет готово, определение будет выглядеть следующим образом:
![[Снимок экрана: как будет выглядеть определение после завершения.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image2.png)
- Нажмите клавиши CTRL+S, чтобы сохранить таблицу.
Добавление данных в базу данных
Теперь вы можете добавить некоторые примеры данных в базу данных, с которыми вы будете работать далее в этой статье.
- В левой области разверните узел SmallBakery.sdf и щелкните Таблицы.
- Щелкните правой кнопкой мыши таблицу Product и выберите пункт Данные.
- В области редактирования введите следующие записи:
имя; Описание Цена Хлеб Запеченный свежий каждый день. 2,99 Клубничный короткий кейк Сделано с органической клубникой из нашего сада. 9,99 Apple Pie Уступает только пирогу вашей мамы. 12,99 Пекан Пирог Если вы любите пекан, это для вас. 10.99 Лимонный пирог Сделано с лучшими лимонами в мире. 11.99 Кексы Ваши дети и ребенок в вас будут любить эти. 7,99 Помните, что вам не нужно вводить ничего для столбца Id . При создании столбца Id для его свойства Is Identity задается значение true, что приводит к автоматическому заполнению столбца. После ввода данных конструктор таблиц будет выглядеть следующим образом:
![[Снимок экрана: как будет выглядеть конструктор таблиц после ввода данных.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image3.jpg)
- Закройте вкладку, содержащую данные базы данных.
Отображение данных из базы данных
Получив базу данных с данными, вы можете отобразить их на веб-странице ASP.NET. Чтобы выбрать отображаемые строки таблицы, используйте инструкцию SQL, которая является командой, передаваемой в базу данных.
- В левой области щелкните рабочую область Файлы .
- В корне веб-сайта создайте страницу CSHTML с именем ListProducts.cshtml.
- Замените существующую разметку следующей:
@ < var db = Database.Open("SmallBakery"); var selectQueryString = "SELECT * FROM Product ORDER BY Name"; > Small Bakery Products table, th, td Small Bakery Products
Id Product Description Price @foreach(var row in db.Query(selectQueryString)) < @row.Id @row.Name @row.Description @row.Price >
В первом блоке кода открывается созданный ранее файл SmallBakery.sdf (база данных). Метод Database.Open предполагает, что SDF-файл находится в папке App_Data веб-сайта. (Обратите внимание, что вам не нужно указывать расширение SDF — на самом деле, если вы это сделаете, Open метод не будет работать.)
Примечание Папка App_Data — это специальная папка в ASP.NET, которая используется для хранения файлов данных. Дополнительные сведения см. в разделе Подключение к базе данных далее в этой статье.
Затем выполняется запрос на запрос к базе данных с помощью следующей инструкции SQL Select :
SELECT * FROM Product ORDER BY Name
Язык SQL
SQL — это язык, который используется в большинстве реляционных баз данных для управления данными в базе данных. Он включает команды, которые позволяют извлекать и обновлять данные, а также создавать, изменять и администрировать таблицы базы данных. SQL отличается от языка программирования (например, который вы используете в WebMatrix), так как в SQL идея заключается в том, что вы сообщаете базе данных, что хотите, и это задача базы данных — выяснить, как получить данные или выполнить задачу. Ниже приведены примеры некоторых команд SQL и их назначение.
SELECT Id, Name, Price FROM Product WHERE Price > 10.00 ORDER BY Name
При этом столбцы Id, Name и Price извлекается из записей в таблице Product , если значение Price больше 10, и возвращает результаты в алфавитном порядке на основе значений столбца Name . Эта команда возвращает результирующий набор, содержащий записи, соответствующие условиям, или пустой набор, если записи не совпадают.
INSERT INTO Product (Name, Description, Price) VALUES («Croissant», «A flaky delight», 1.99)
При этом в таблицу Product вставляется новая запись, задав для столбца Имя значение «Круассан», для столбца «Описание » значение «A flaky delight» и для значения цены значение 1,99.
DELETE FROM Product WHERE ExpirationDate < "01/01/2008"
Эта команда удаляет записи в таблице Product , столбец даты окончания срока действия которых раньше 1 января 2008 г. (При этом предполагается, что в таблице Product есть такой столбец, конечно.) Дата вводится здесь в формате ММ/ДД/ГГГГ, но она должна быть введена в формате, который используется для вашего языкового стандарта.
Команды Insert Into и Delete не возвращают результирующие наборы. Вместо этого они возвращают число, указывающее, сколько записей было затронуто командой .
Для некоторых из этих операций (например, вставки и удаления записей) процесс, запрашивающий операцию, должен иметь соответствующие разрешения в базе данных. Именно поэтому для рабочих баз данных часто требуется указывать имя пользователя и пароль при подключении к базе данных.
Существуют десятки команд SQL, но все они следуют следующему шаблону. Команды SQL можно использовать для создания таблиц базы данных, подсчета количества записей в таблице, вычисления цен и выполнения многих других операций.
Вставка данных в базу данных
В этом разделе показано, как создать страницу, которая позволяет пользователям добавлять новый продукт в таблицу базы данных Product . После вставки новой записи продукта на странице отображается обновленная таблица с помощью страницы ListProducts.cshtml , созданной в предыдущем разделе.
Страница включает проверку, чтобы убедиться, что данные, вводимые пользователем, являются допустимыми для базы данных. Например, код на странице гарантирует, что для всех обязательных столбцов введено значение.
- На веб-сайте создайте файл CSHTML с именем InsertProducts.cshtml.
- Замените существующую разметку следующей:
@ < Validation.RequireField("Name", "Product name is required."); Validation.RequireField("Description", "Product description is required."); Validation.RequireField("Price", "Product price is required."); var db = Database.Open("SmallBakery"); var Name = Request.Form["Name"]; var Description = Request.Form["Description"]; var Price = Request.Form["Price"]; if (IsPost && Validation.IsValid()) < // Define the insert query. The values to assign to the // columns in the Product table are defined as parameters // with the VALUES keyword. if(ModelState.IsValid) < var insertQuery = "INSERT INTO Product (Name, Description, Price) " + "VALUES (@0, @1, @2)"; db.Execute(insertQuery, Name, Description, Price); // Display the page that lists products. Response.Redirect("~/ListProducts"); >> > Add Products label fieldset legend .validation-summary-errors Add New Product
@Html.ValidationSummary("Errors with your submission:")
Текст страницы содержит HTML-форму с тремя текстовыми полями, которые позволяют пользователям ввести имя, описание и цену. Когда пользователи нажимают кнопку Вставка , код в верхней части страницы открывает подключение к базе данных SmallBakery.sdf . Затем вы получите значения, отправленные пользователем с помощью объекта , Request и назначьте их локальным переменным. Чтобы убедиться, что пользователь ввел значение для каждого обязательного столбца, необходимо зарегистрировать каждый элемент, который требуется проверить:
Validation.RequireField("Name", "Product name is required."); Validation.RequireField("Description", "Product description is required."); Validation.RequireField("Price", "Product price is required.");
Помощник Validation проверяет наличие значения в каждом зарегистрированном поле. Вы можете проверить, прошли ли все поля проверку, проверив Validation.IsValid() , что обычно делается перед обработкой сведений, полученных от пользователя:
if (IsPost && Validation.IsValid()) < // Process information here >
(Оператор && означает И — этот тест имеет значение , если это отправка формы И все поля прошли проверку.) Если все столбцы проверены (ни один из них не был пустым), создайте инструкцию SQL для вставки данных, а затем выполните ее, как показано ниже:
var insertQuery = "INSERT INTO Product (Name, Description, Price) VALUES (@0, @1, @2)";
Для вставляемых значений необходимо включить заполнители параметров ( @0 , @1 , @2 ).
Примечание В качестве меры безопасности всегда передайте значения в инструкцию SQL с помощью параметров, как показано в предыдущем примере. Это дает возможность проверить данные пользователя, а также помогает защититься от попыток отправки вредоносных команд в базу данных (иногда называемых атаками путем внедрения кода SQL).
Чтобы выполнить запрос, используйте следующую инструкцию, передавая ей переменные, содержащие значения для замены заполнителей:
db.Execute(insertQuery, Name, Description, Price);
После выполнения инструкции Insert Into пользователь отправляется на страницу со списком продуктов с помощью этой строки:
Response.Redirect("~/ListProducts");
Если проверка не выполнена, вставку можно пропустить. Вместо этого на странице есть вспомогательный помощник, который может отображать накопленные сообщения об ошибках (если таковые имеются):
@Html.ValidationSummary("Errors with your submission:")
Тестирование страницы вставки
- Просмотр страницы в браузере. На странице отображается форма, похожая на ту, которая показана на следующем рисунке.
![[Снимок экрана: форма, которая будет отображаться на странице в браузере.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image5.jpg)
- Введите значения для всех столбцов, но не забудьте оставить столбец Цена пустым.
- Нажмите кнопку Вставить. На странице отображается сообщение об ошибке, как показано на следующем рисунке. (Новая запись не создается.)
![[Снимок экрана: сообщение об ошибке.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image6.jpg)
- Заполните форму полностью и нажмите кнопку Вставить. На этот раз отобразится страница ListProducts.cshtml , на котором отображается новая запись.
Обновление данных в базе данных
После ввода данных в таблицу может потребоваться обновить их. В этой процедуре показано, как создать две страницы, похожие на страницы, созданные ранее для вставки данных. На первой странице отображаются продукты и пользователи могут выбрать один из них для изменения. Вторая страница позволяет пользователям вносить изменения и сохранять их.
Важно На рабочем веб-сайте обычно ограничивается, кому разрешено вносить изменения в данные. Сведения о настройке членства и способах авторизации пользователей для выполнения задач на сайте см. в статье Добавление безопасности и членства на сайт веб-страницы ASP.NET.
- На веб-сайте создайте новый CSHTML-файл с именем EditProducts.cshtml.
- Замените существующую разметку в файле следующим кодом:
@ < var db = Database.Open("SmallBakery"); var selectQueryString = "SELECT * FROM Product ORDER BY Name"; > Edit Products table, th, td Edit Small Bakery Products
Name Description Price @foreach (var row in db.Query(selectQueryString)) < Edit @row.Name @row.Description @row.Price >
Единственное отличие этой страницы от страницы ListProducts.cshtml от предыдущей заключается в том, что html-таблица на этой странице содержит дополнительный столбец, отображающий ссылку Изменить . Щелкнув эту ссылку, вы перейдете на страницу UpdateProducts.cshtml (которую вы создадите далее), где можно изменить выбранную запись. Просмотрите код, создающий ссылку Изменить :
Edit Edit Edit
![[Снимок экрана: данные, отображаемые на странице в браузере.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image7.jpg)
Обратите внимание, что href атрибут имеет значение UpdateProducts/n , где n — это номер продукта. Когда пользователь щелкает одну из этих ссылок, результирующий URL-адрес будет выглядеть примерно так: http://localhost:18816/UpdateProducts/6 Иными словами, номер продукта, который необходимо изменить, будет передан в URL-адресе.
@ < Validation.RequireField("Name", "Product name is required."); Validation.RequireField("Description", "Product description is required."); Validation.RequireField("Price", "Product price is required."); var Name = ""; var Description = ""; var Price = Decimal.Zero; var ProductId = UrlData[0]; if (ProductId.IsEmpty()) < Response.Redirect("~/EditProducts"); >var db = Database.Open("SmallBakery"); if (IsPost && Validation.IsValid()) < var updateQueryString = "UPDATE Product SET Name=@0, Description=@1, Price=@2 WHERE ; Name = Request["Name"]; Description = Request["Description"]; Price = Request["Price"].AsDecimal(); db.Execute(updateQueryString, Name, Description, Price, ProductId); Response.Redirect(@Href("~/EditProducts")); >else < var selectQueryString = "SELECT * FROM Product WHERE var row = db.QuerySingle(selectQueryString, ProductId); Name = row.Name; Description = row.Description; Price = row.Price; >> Add Products label < float: left; width: 8em; text-align: right; margin-right: 0.5em;>fieldset < padding: 1em; border: 1px solid; width: 35em;>legend < padding: 2px 4px; border: 1px solid; font-weight: bold;>.validation-summary-errors Update Product
@Html.ValidationSummary("Errors with your submission:")
Текст страницы содержит HTML-форму, в которой отображается продукт и где пользователи могут его редактировать. Чтобы отобразить продукт, используйте следующую инструкцию SQL:
SELECT * FROM Product WHERE
При этом будет выбран продукт, идентификатор которого соответствует значению, передаваемого в параметре @0 . (Так как id является первичным ключом и поэтому должен быть уникальным, таким образом можно выбрать только одну запись продукта.) Чтобы получить значение идентификатора, передаваемое в эту Select инструкцию, можно прочитать значение, передаваемое на страницу как часть URL-адреса, используя следующий синтаксис:
var ProductId = UrlData[0];
Чтобы получить запись продукта, используйте QuerySingle метод , который возвращает только одну запись:
var row = db.QuerySingle(selectQueryString, ProductId);
Одна строка возвращается в переменную row . Вы можете получить данные из каждого столбца и назначить их локальным переменным следующим образом:
var Name = row.Name; var Description = row.Description; var Price = row.Price;
В разметке для формы эти значения автоматически отображаются в отдельных текстовых полях с помощью внедренного кода, как показано ниже:
В этой части кода отображается обновляемая запись продукта. После отображения записи пользователь может изменять отдельные столбцы. Когда пользователь отправляет форму, нажимая кнопку Обновить , выполняется код в блоке if(IsPost) . Он получает значения пользователя из Request объекта , сохраняет их в переменных и проверяет заполнение каждого столбца. Если проверка пройдена, код создает следующую инструкцию Обновления SQL:
UPDATE Product SET Name=@0, Description=@1, Price=@2, WHERE
В инструкции SQL Update необходимо указать каждый обновляющийся столбец и значение, которое необходимо задать для него. В этом коде значения задаются с помощью заполнителей @0 параметров , @1 , @2 и т. д. (Как отмечалось ранее, для обеспечения безопасности всегда следует передавать значения в инструкцию SQL с помощью параметров.) При вызове db.Execute метода передаются переменные, содержащие значения в порядке, соответствующем параметрам в инструкции SQL:
db.Execute(updateQueryString, Name, Description, Price, ProductId);
После выполнения инструкции Update вызовите следующий метод, чтобы перенаправить пользователя обратно на страницу редактирования:
Response.Redirect(@Href("~/EditProducts"));
![[Снимок экрана: страница Обновления продуктов вместе с выбранной записью.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image8.jpg)
В результате пользователь видит обновленный список данных в базе данных и может редактировать другой продукт.
Удаление данных в базе данных
В этом разделе показано, как разрешить пользователям удалять продукт из таблицы базы данных product . Пример состоит из двух страниц. На первой странице пользователи выбирают запись для удаления. Затем запись, которую нужно удалить, отображается на второй странице, которая позволяет им подтвердить, что они хотят удалить запись.
Важно На рабочем веб-сайте обычно ограничивается, кому разрешено вносить изменения в данные. Сведения о том, как настроить членство и как авторизовать пользователя для выполнения задач на сайте, см. в статье Добавление безопасности и членства на веб-страницы ASP.NET сайт.
- На веб-сайте создайте файл CSHTML с именем ListProductsForDelete.cshtml.
- Замените существующую разметку следующей:
@ < var db = Database.Open("SmallBakery"); var selectQueryString = "SELECT * FROM Product ORDER BY Name"; > Delete a Product table, th, td Delete a Product
Эта страница аналогична предыдущей странице EditProducts.cshtml . Однако вместо отображения ссылки Изменить для каждого продукта отображается ссылка Удалить . Ссылка «Удалить » создается с помощью следующего внедренного кода в разметке:
@ < var db = Database.Open("SmallBakery"); var ProductId = UrlData[0]; if (ProductId.IsEmpty()) < Response.Redirect("~/ListProductsForDelete"); >var prod = db.QuerySingle("SELECT * FROM PRODUCT WHERE ProductId); if( IsPost && !ProductId.IsEmpty()) < var deleteQueryString = "DELETE FROM Product WHERE db.Execute(deleteQueryString, ProductId); Response.Redirect("~/ListProductsForDelete"); >> Delete Product Delete Product - Confirmation
Эта страница вызывается listProductsForDelete.cshtml и позволяет пользователям подтвердить, что они хотят удалить продукт. Чтобы получить список удаляемого продукта, вы получите идентификатор удаляемого продукта из URL-адреса с помощью следующего кода:
var ProductId = UrlData[0];
Затем страница предлагает пользователю нажать кнопку, чтобы фактически удалить запись. Это важная мера безопасности: при выполнении конфиденциальных операций на веб-сайте, таких как обновление или удаление данных, эти операции всегда должны выполняться с помощью операции POST, а не get. Если сайт настроен таким образом, что операция удаления может быть выполнена с помощью операции GET, любой пользователь может передать URL-адрес, например http://
if( IsPost && !ProductId.IsEmpty()) < var deleteQueryString = "DELETE FROM Product WHERE db.Execute(deleteQueryString, ProductId); Response.Redirect("~/ListProductsForDelete"); >
![[Снимок экрана: запуск продуктов списка для удаления точки CSHTML в браузере.]](https://learn.microsoft.com/ru-ru/aspnet/web-pages/overview/data/5-working-with-data/_static/image9.jpg)
Код выполняет инструкцию SQL, которая удаляет указанную запись, а затем перенаправляет пользователя обратно на страницу со списком.
Соединение с базой данных
Подключиться к базе данных можно двумя способами. Первый — использовать Database.Open метод и указать имя файла базы данных (за вычетом расширения SDF ):
var db = Database.Open(«SmallBakery»);
Метод Open предполагает, что объект .SDF-файл находится в папке App_Data веб-сайта. Эта папка предназначена специально для хранения данных. Например, он имеет соответствующие разрешения, позволяющие веб-сайту считывать и записывать данные, а в качестве меры безопасности WebMatrix не разрешает доступ к файлам из этой папки.
Второй способ — использовать строку подключения. Строка подключения содержит сведения о том, как подключиться к базе данных. Это может быть путь к файлу или имя базы данных SQL Server на локальном или удаленном сервере, а также имя пользователя и пароль для подключения к этому серверу. (Если данные хранятся в централизованно управляемой версии SQL Server, например на сайте поставщика услуг размещения, вы всегда используете строку подключения для указания сведений о подключении к базе данных.)
В WebMatrix строки подключения обычно хранятся в XML-файле с именемWeb.config. Как следует из названия, вы можете использовать файлWeb.config в корне веб-сайта для хранения сведений о конфигурации сайта, включая любые строки подключения, которые могут потребоваться вашему сайту. Пример строки подключения в файлеWeb.config может выглядеть следующим образом. Примечание $CREDENTIAL_PLACEHOLDER$ — это заполнитель для пары «ключ-значение» пароля:
В этом примере строка подключения указывает на базу данных в экземпляре SQL Server, который выполняется где-то на сервере (в отличие от локального SDF-файла). Необходимо заменить соответствующие имена для myServer и myDatabase , а также указать SQL Server значения входа для username и password . (Значения имени пользователя и пароля не обязательно совпадают с вашими учетными данными Windows или значениями, предоставленными поставщиком услуг размещения для входа на свои серверы. Обратитесь к администратору за точными значениями.)
Метод Database.Open является гибким, так как позволяет передать имя SDF-файла базы данных или имя строки подключения, хранящейся в файлеWeb.config . В следующем примере показано, как подключиться к базе данных с помощью строки подключения, показанной в предыдущем примере:
Как уже отмечалось, Database.Open метод позволяет передать имя базы данных или строку подключения и выяснить, какие из них следует использовать. Это очень полезно при развертывании (публикации) веб-сайта. SDF-файл можно использовать в папке App_Data при разработке и тестировании сайта. Затем при перемещении сайта на рабочий сервер можно использовать строку подключения в файлеWeb.config , имя которого совпадает с именем SDF-файла , но указывающее на базу данных поставщика услуг размещения. Все это без необходимости изменения кода.
Наконец, если вы хотите работать непосредственно со строкой подключения, можно вызвать Database.OpenConnectionString метод и передать ему фактическую строку подключения, а не только имя в файлеWeb.config . Это может быть полезно в ситуациях, когда по какой-либо причине у вас нет доступа к строке подключения (или значениям в ней, таким как имя SDF-файла ), пока страница не будет запущена. Однако в большинстве сценариев можно использовать Database.Open , как описано в этой статье.
Дополнительные ресурсы
- SQL Server Compact
- Подключение к базе данных SQL Server или MySQL в WebMatrix
- Проверка пользовательского ввода на сайтах веб-страниц ASP.NET
HTML 5. Работа с Web SQL базой данных
В HTML 5 есть много новых возможностей, которые позволяют web разработчикам создавать более мощные и насыщенные приложения. К этим возможностям относятся и новые способы хранения данных на клиенте, такие как web storage(поддерживается в IE8) и web SQL database.
При этом если web storage ориентирован на хранение пар ключ-значение, то в случае с web SQL database у нас есть полноценный sqlite(во всех текущих реализациях применяется именно этот движок баз данных, что является проблемой при стандартизации).
Далее я расскажу, как работать с web SQL database. При этом примеры естественно будут на JavaScript. Кроме того, стоит отметить, что с поддержкой браузерами всего этого хозяйства дела обстоят, не очень хорошо, но всё постепенно меняется к лучшему и, скажем, в Opera 10.50 поддержка будет, а браузерах на движке WebKit она уже есть. Более подробно про то, какой браузер, что поддерживает можно узнать, пройдя по ссылке.
Соединение с базой данных.
Подсоединиться к базе данных очень просто:
db = openDatabase(«ToDo», «0.1», «A list of to do items.», 200000);
Данный код создаёт объект, представляющий БД, а если базы данных с таким именем не существует, то создаётся и она. При этом в аргументах указывается имя базы данных, версия, отображаемое имя и приблизительный размер. Кроме того важно отметить, что приблизительный размер не является ограничением. Реальный размер базы данных может изменяться.
Успешность подключения к БД можно оценить, проверив объект db на null:
Всегда предпринимайте данную проверку, даже если соединение с БД для данного пользователя уже производилось в прошлом, и было успешно. Могут измениться настройки безопасности, закончиться дисковое пространство (скажем, если пользователь использует смартфон) или фаза луны окажется неподходящей.
Выполнение запросов.
Для выполнения запросов к БД предварительно надо создать транзакцию, вызвав функцию database.transaction(). У неё один аргумент, а именно другая JavaScript функция, принимающая объект транзакции и предпринимающая запросы к базе данных.
- строка SQL запроса
- массив параметров запроса (параметры подставляются на место вопросительных знаков в SQL запросе)
- функция, вызываемая при успешном выполнении запроса
- функция, вызываемая в случае возникновения ошибки выполнения запроса
db.transaction(function(tx) tx.executeSql(«SELECT COUNT(*) FROM ToDo», [], function(result)<>, function(tx, error)<>);
>);
Давайте теперь изменим код так, чтобы при невозможности выборки из таблицы «ToDo»(которой пока не существует), данная таблица создавалась.
db.transaction(function(tx) tx.executeSql(«SELECT COUNT(*) FROM ToDo», [], function (result) < alert('dsfsdf') >, function (tx, error) tx.executeSql(«CREATE TABLE ToDo (id REAL UNIQUE, label TEXT, timestamp REAL)», [], null, null);
>)>);
Вставка данных.
Давайте вставим новую строку в таблицу «ToDo». Для знакомых с синтаксисом SQL пример, приведённый ниже, покажется очень знакомым:
db.transaction(function(tx) tx.executeSql(«INSERT INTO ToDo (label, timestamp) values(?, ?)», [«Купить iPad или HP Slate», new Date().getTime()], null, null);
>);
Первый знак вопроса в SQL запросе заменяется на «Купить iPad или HP Slate», а второй на метку времени. В итоге выполнен будет примерно такой запрос:
INSERT INTO ToDo (label, timestamp) values («Купить iPad или HP Slate», 1265925077487)
Работа с результатами запросов.
Результат выполнения запроса на выборку данных содержит набор строк, а каждая строка содержит значения столбцов таблицы для данной строки.
Вы можете получить доступ к какой-либо строке результата вызвав функцию result.rows.item(i), где i – индекс строки. Далее, для получения требуемого значения, нужно обратиться к конкретному столбцу по имени – result.rows.item(i)[ «label»].
Следующий пример выводит результат запроса к базе данных на страницу:
db.transaction(function(tx) tx.executeSql(«SELECT * FROM ToDo», [], function(tx, result) for(var i = 0; i < result.rows.length; i++) document.write('‘ + result.rows.item(i)[‘label’] + ‘
‘);
>>, null)>);
Заключение.
Использование web SQL database предоставляет мощные возможности, но не стоит увлекаться. Если задачу можно решить с помощью web storage, лучше использовать его.
Вы можете найти дополнительную информацию по данной теме в соответствующем разделе сайта консорциуме w3c.
Также для web SQL database уже начали разрабатывать ORM библиотеки. Пример такой библиотеки тут.
