English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlang может подключаться к традиционным базам данных, таким как SQL Server и Oracle. Erlang имеетвстроенная библиотека odbcИнструменты, доступные для обработки базы данных.
В нашем примере мы будем использовать Microsoft SQL Server. Перед подключением к базе данных Microsoft SQL Server убедитесь, что проверили следующие указатели.
Вы создали базу данных TESTDB.
Вы создали таблицу EMPLOYEE в TESTDB.
Эта таблица содержит поля FIRST_NAME, LAST_NAME, AGE, SEX и INCOME.
ID пользователя "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>
Обратите внимание на以下几点 по поводу вышеуказанного программного кода.
Метод запуска библиотеки 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таблицы.
ее необходимо при создании записи в базе данных.
Ниже приведен пример вставки записи в таблицу 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, "Вставка 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}]}
Таким образом, вы можете видеть, что команда insert из предыдущего раздела сработала, и команда 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}
Erlang также имеет функцию описания структуры таблицы.
Один из примеров:
-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")]).
Вывод программы будет следующим:
{ok,1}