Erlang имеет возможность подключения к традиционным базам данных, таким как SQL Server и Oracle. Erlang имеет встроенную библиотеку odbc, которую можно использовать для работы с базами данных.
Подключение к базе данных
В нашем примере мы собираемся использовать Microsoft SQL Server. Перед подключением к базе данных Microsoft SQL Server убедитесь, что следующие указатели проверены.
-
Вы создали базу данных TESTDB.
-
Вы создали таблицу EMPLOYEE в TESTDB.
-
В этой таблице есть поля FIRST_NAME, LAST_NAME, AGE, SEX и INCOME.
-
Идентификатор пользователя «testuser» и пароль «test123» установлены для доступа к TESTDB.
-
Убедитесь, что вы создали ODBC DSN с именем usersqlserver, который создает ODBC-соединение с базой данных.
Вы создали базу данных TESTDB.
Вы создали таблицу EMPLOYEE в TESTDB.
В этой таблице есть поля FIRST_NAME, LAST_NAME, AGE, SEX и INCOME.
Идентификатор пользователя «testuser» и пароль «test123» установлены для доступа к TESTDB.
Убедитесь, что вы создали ODBC DSN с именем usersqlserver, который создает ODBC-соединение с базой данных.
Установление соединения
Чтобы установить соединение с базой данных, можно использовать следующий пример кода.
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver;UID = testuser;PWD = test123", []), io:fwrite("~p",[Ref]).
Вывод вышеуказанной программы следующий:
Выход
<0.33.0>
Следующие вещи необходимо отметить о вышеупомянутой программе.
-
Метод start библиотеки odbc используется для указания начала операции базы данных.
-
Для подключения требуется DSN, имя пользователя и пароль для подключения.
Метод start библиотеки odbc используется для указания начала операции базы данных.
Для подключения требуется DSN, имя пользователя и пароль для подключения.
Создание таблицы базы данных
Следующим шагом после подключения к базе данных является создание таблиц в нашей базе данных. В следующем примере показано, как создать таблицу в базе данных, используя Erlang.
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = testuser;PWD = test123, []), odbc:sql_query(Ref, "CREATE TABLE EMPLOYEE (FIRSTNAME char varying(20), LASTNAME char varying(20), AGE integer, SEX char(1), INCOME integer)")
Если вы сейчас проверите базу данных, вы увидите, что будет создана таблица EMPLOYEE .
Вставка записи в базу данных
Это необходимо, когда вы хотите создать свои записи в таблице базы данных.
В следующем примере будет вставлена запись в таблицу сотрудников. Если таблица успешно обновлена, запись и инструкция вернут значение обновленной записи и количество записей, которые были обновлены.
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = testuser;PWD = test123", []), io:fwrite("~p",[odbc:sql_query(Ref, "INSERT INTO EMPLOYEE VALUES('Mac', 'Mohan', 20, 'M', 2000)")]).
Выход вышеупомянутой программы будет —
Выход
{updated,1}
Извлечение записей из базы данных
Erlang также имеет возможность извлекать записи из базы данных. Это делается с помощью метода sql_query .
Пример показан в следующей программе —
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = testuser;PWD = test123", []), io:fwrite("~p",[odbc:sql_query(Ref, "SELECT * FROM EMPLOYEE") ]).
Вывод вышеуказанной программы будет следующим:
Выход
{selected,["FIRSTNAME","LASTNAME","AGE","SEX","INCOME"], [{"Mac","Mohan",20,"M",2000}]}
Итак, вы можете видеть, что команда вставки в последнем разделе сработала, и команда select вернула правильные данные.
Выборка записей из базы данных на основе параметров
Erlang также имеет возможность извлекать записи из базы данных на основе определенных критериев фильтрации.
Пример таков:
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN=usersqlserver; UID=testuser;PWD=test123", []), io:fwrite("~p",[ odbc:param_query(Ref, "SELECT * FROM EMPLOYEE WHERE SEX=?", [{{sql_char, 1}, ["M"]}])]).
Выход вышеупомянутой программы будет —
Выход
{selected,["FIRSTNAME","LASTNAME","AGE","SEX","INCOME"], [{"Mac","Mohan",20,"M",2000}]}
Обновление записей из базы данных
Erlang также имеет возможность обновлять записи из базы данных.
Примером того же является следующее —
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = testuser;PWD = test123", []), io:fwrite("~p",[ odbc:sql_query(Ref, " UPDATE EMPLOYEE SET AGE = 5 WHERE INCOME= 2000")]).
Выход вышеупомянутой программы будет —
Выход
{updated,1}
Удаление записей из базы данных
Erlang также имеет возможность удалять записи из базы данных.
Примером того же является следующее —
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = testuser;PWD = test123", []), io:fwrite("~p",[ odbc:sql_query(Ref, "DELETE EMPLOYEE WHERE INCOME= 2000")]).
Вывод вышеуказанной программы будет следующим:
Выход
{updated,1}
Структура таблицы
Эрланг также имеет возможность описать структуру таблицы.
Пример таков:
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = testuser;PWD = test123", []), io:fwrite("~p",[odbc:describe_table(Ref, "EMPLOYEE")]).
Вывод вышеуказанной программы будет следующим:
Выход
{ok,[{"FIRSTNAME",{sql_varchar,20}}, {"LASTNAME",{sql_varchar,20}}, {"AGE",sql_integer}, {"SEX",{sql_char,1}}, {"INCOME",sql_integer}]}
Количество записей
Erlang также имеет возможность извлекать общее количество записей в таблице.
Пример того же самого показан в следующей программе.
пример
-module(helloworld). -export([start/0]). start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = sa;PWD = demo123", []), io:fwrite("~p",[odbc:select_count(Ref, "SELECT * FROM EMPLOYEE")]).
Выход вышеупомянутой программы будет —