Разработка приложений для работы с БД На примере PHP и ASP.Net
Установка MySQL Установка СУБД MySQL заключается в распаковке ее дистрибутива в нужную папку, например, C:\mysql. Все исполнимые файлы MySQL находятся в папке \mysql\bin. Чтобы запустить MySQL, достаточно в этой папке выполнить команду mysql. Однако если вы работаете в Windows, то вместо этого рекомендуется запустить исполняемый файл winmysqladmin.exe.
Создание БД
Основные средства PHP для взаимодействия с базой данных Подключение к серверу базы данных (предполагается, что сервер базы данных запущен) 2. Передача SQL-запроса, который должен быть выполнен СУБД. SQL-запрос представляется на язык SQL. Он оформляется в виде строки и передается специальной PHP-функции в качестве параметра. 3. Получение от СУБД данных, соответствующих переданному ранее SQL-запросу. С помощью специальных функций можно получить данные и далее их обработать (например, просто вывести на экран). 4. Обработка полученных данных. Вы можете отформатировать по своему усмотрению или подвергать более сложному анализу и преобразованию полученных данных.
Подключение к базе данных Подключение к базе данных (БД) осуществляется с помощью специальных функций PHP, которым передаются в качестве параметров следующие данные: Местоположение (host) для многих серверов БД это доменное имя или IP-адрес компьютера, на котором расположена БД; Регистрационное имя (username) строка символов, соответствующая имени пользователя, под которым он может получить доступ к БД; Пароль (password) строка символов, которая вместе с регистрационным именем, служит для обеспечения доступа к БД; Имя базы данных. СУБД может поддерживать несколько БД, каждая из которых должна иметь уникальное имя. Вы должны указать имя конкретной БД, с которой хотите работать. $connect=mysql_connect(host, username, password) ; $db=mysql_select_db($connect, имя_БД); $connect=mysql_connect(host, username, password) ; $db=mysql_select_db($connect, имя_БД);
Передача запросов к базе данных mysql_query(SQL_запрос, идентификатор_соединения); Пример /* Подключение к серверу БД: */ $connect=mysql_connect(localhost, guest) or exit("Не удалось соединиться с сервером".mysql_error()); /* Выбор БД: */ $db= mysql_select_db(gbook, $connect) or exit("Не удалось выбрать БД"".mysql_error()); $strsql=SELECT * FROM gb; // строка с SQL-запросом $selectall= mysql_query($strsql, $connect); // выполнение SQL- запроса $ mysql_close($connect); // отключение от БД
Выбор нужных данных из одной или нескольких таблиц выполняется с помощью SQL-запроса, начинающегося с ключевого слова (оператора) SELECT. Результатом выполнения такого запроса является временная таблица (возможно, пустая, если нет данных, удовлетворяющих условию запроса). Функция PHP, выполняющая запрос, возвращает указатель на полученную в результате временную таблицу. Чтение в массив записей временной таблицы, полученной в результате выполнения SQL-запроса, производится функциями, в имени которой находится слово fetch (достать).
Гостевая книга Для взаимодействия гостевой книги с посетителем потребуются два сценария. Первый сценарий формирует страницу, содержащую все записи из базы данных гостевой книги. Кроме того, на этой странице находится кнопка Добавить запись, щелчок на которой приводит к переходу ко второму сценарию, предоставляющему форму для ввода данных и выполняющему запись их в БД.
Листинг программы вывода записей книги echo " Моя гостевая книга "; echo " "; /**** Подключение к БД ***********************************************/ $servername="VADIM"; // имя сервера БД $dbname="[Гостевая книга]"; // имя БД $user='Гость'; // login пользователя /* Cоединение с сервером: */ $connect=mssql_connect($servername,$user) or exit("Не удалось соединиться с сервером"); /* Выбор БД: */ $db=mssql_select_db($dbname, $connect) or exit("Не удалось выбрать БД");
/**** Выбор всех записей ********************************************/ $strsql="SELECT * FROM gbook ORDER BY date DESC"; $rez=mssql_query($strsql,$connect); // выполнение запроса /**** Вывод содержимого БД *****************************************/ while ($row=mssql_fetch_assoc($rez)){ // цикл по всем записям таблицы $i++; $t=$row['date']; echo " $i. {$row['username']} {$row['city']} $t Сайт: {$row['site']} {$row[' ']} {$row['msg']} "; if ($row['answer']) { echo " Ответ: {$row['answer']} "; } echo " "; } mssql_close($connect); // отключение от БД
формы ввода и добавление данных в гостевую книгу if ($_POST['addrecord']){ // если требуется добавить запись /* Вывод формы для ввода сообщения */ echo " Моя гостевая книга Ваше имя: Город: URL Вашего сайта: Сообщение: ";
} elseif ($_POST['addok']) { // если подтвердили ввод в форму header("Location:gbookdb.php"); /* Переход к странице показа гостевой книги */ if (!$_POST['msg']){exit;}; // если сообщение пусто, то выход $t=date("Y-m-d H:i:s"); // текущие дата и время /**** Подключение к БД **************************************/ $servername="VADIM"; // имя сервера БД $dbname="[Гостевая книга]"; // имя БД $user='Гость'; // login пользователя $connect=mssql_connect($servername,$user); // соединение с сервером $db=mssql_select_db($dbname, $connect); // выбор БД $strsql="INSERT INTO gbook (username, city, site, , msg, date) VALUES (\"{$_POST['username']}\", \"{$_POST['city']}\", \"{$_POST['site']}\",\"{$_POST[' ']}\", \"{$_POST['msg']}\", CAST('".$t."' AS datetime))"; $rez=mssql_query($strsql,$connect); // выполнение запроса mssql_close($connect); // отключение от БД }
ADO.NET ADO.NET - это набор классов для работы с внешними данными. Соединение в ADO.NET может происходить с помощью различных провайдеров. В настоящее время рекомендуется работать с помощью провайдера MS SQL или Oracle. Эти провайдер сами написаны на управляемом коде.NET. Еще один провайдер OleDb, позволяет получить доступ к другим источникам данных - Access, Excel, MySql, SAP.
Классы ADO.NET System.Data - это ядро ADO.NET. Оно содержит классы, необходимые для связи посредством любых провайдеров данных. Эти классы представляют таблицы, строки, столбцы, DataSet(множество взаимосвязанных таблиц). Там определены интерфейсы (в смысле языка C#) соединений с базами данных, команд, адаптеров данных. System.Data.Common - базовые классы для всех провайдеров данных - DbConnection, DbCommand, DbDataAdapter.
Программирование ADO.NET Вначале создается соединение с базой данных - класс Connection, который обеспечивается необходимой информацией - строкой соединения. Создается объект Command и задается команда, которую необходимо выполнить в данной СУБД. Эта команда может быть запросом SQL или исполняемой процедурой. Если команда не возвращает данных, она просто выполняется с помощью одного из методов Execute. Например, это может быть удаление или обновление данных таблицы. Если команда возвращает выборку данных, их необходимо куда-то поместить. нужно создать класс DataAdapter и с его помощью сохранить данные в DataSet или в DataTable. Задать полученный DataSet или DataReader как источник данных элемента управления или вывести их на страницу другим способом.
Объект Connection DataSource - Путь к базе данных в файловой системе при использовании Oledb, имя экземпляра базы сервера при использовании SqlConnection Database - Возвращает имя базы данных, используемой в объекте Connection после открытия State - Возвращает текущее состояние соединения. Возможные значения - Broken, Closed, Connecting, Executing, Fetching и Open. ConnectionString - Строка соединения с СУБД
Использование объекта Command Свойство CommandType может принимать значения из перечисления CommandType. По умолчанию это Text, то есть выполняется непосредственно текст команды SQL, который записан в свойстве Command. TableDirect означает, что в результате выполнения команды будет возвращено все содержание таблицы. StoredProcedure означает, что в Command находится имя процедуры сервера, которая и будет выполняться. Свойство CommandText хранит текст запроса SQL или имя серверной процедуры. CommandTimeout задает время ожидания ответа, по умолчанию равное 30 секунд. Если команда не выполнится в течение этого времени, будет выброшено исключение.
Методы метод ExecuteNonQuery. С помощью него можно выполнить любую операцию с базами данных, которая не связана с запросом и получением данных, как то обновление, удаление записей, создание и изменение таблиц ExecuteScalar возвращает результат запроса в случае, если это одно-единственное значение ExecuteRow возвращает единственную запись. ExecuteReader выполняется, если нужно получить табличные данные. Результат выполнения - курсор, в котором можно двигаться только от начала до конца.
ExecuteReader public void CreateMySqlDataReader(string mySelectQuery, string myConnectionString) { SqlConnection myConnection = new SqlConnection(myConnectionString); SqlCommand myCommand = new SqlCommand(mySelectQuery, myConnection); myCommand.CommandType = CommandType.Text; myCommand.Connection.Open(); SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); while myReader.Read()) { Response.Write(myReader.GetString(0) + " "); } myReader.Close(); myConnection.Close(); }
DataAdapter Классы DataAdapter обеспечивают двусторонний обмен информацией. SelectCommand - эта команда используется для выборки данных из базы. При этом класс DataTable заполняется данными. UpdateCommand - обновляет данные(редактирование записей). InsertCommand - добавление новых записей InsertCommand - команда для удаления записей
DataSet DataSet - это класс, содержащий в себе одну или несколько таблиц DataTable и связи между ними. Класс DataSet - это представление в памяти информации, считанной через ADO из баз данных или XML. Он позволяет манипулировать данными после отключения от источника данных.
protected void Page_Load(object sender, EventArgs e) { String strConnect; String strCommand; strConnect Source=.\SQLExpress;Initial Catalog=Northwind;Integrated Security=True"; SqlConnection myConn = new SqlConnection(strConnect); strCommand = "SELECT CategoryName, CategoryID FROM Categories"; SqlDataAdapter myData = new SqlDataAdapter(strCommand, myConn); DataSet DataSet1 = new DataSet(); myData.Fill(DataSet1, "Categories"); DropDownList1. DataSource = DataSet1.Tables[0]; DropDownList1. DataTextField = "CategoryName"; DropDownList1. DataValueField = "CategoryID"; DropDownList1.DataBind(); myConn.Close(); }