Учебники

Erlang — Базы данных

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")]).

Выход вышеупомянутой программы будет —