English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlang은 SQL Server와 Oracle와 같은 전통적인 데이터베이스에 연결할 수 있습니다. Erlang에는내장된 odbc 라이브러리데이터베이스 처리를 위한 도구.
우리의 예제에서는 Microsoft SQL Server를 사용할 것입니다. Microsoft SQL Server 데이터베이스에 연결하기 전에 다음 포인터를 확인해야 합니다.
TESTDB 데이터베이스를 생성했습니다.
TESTDB에서 EMPLOYEE 테이블을 생성했습니다.
이 테이블은 FIRST_NAME, LAST_NAME, AGE, SEX, INCOME 필드를 포함하고 있습니다.
사용자 ID“ testuser”와 비밀번호“ test123”를 TESTDB에 접근하기 위해 설정
usersqlserver라는 이름의 ODBC DSN을 생성하여 데이터베이스에 ODBC 연결을 설정했는지 확인해야 합니다.
데이터베이스와의 연결을 수립하려면 다음 코드 예제를 사용할 수 있습니다.
예제
-module(helloworld). -export([start/ 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/ 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/ 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/ 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/ 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/ 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/ 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/ start() -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver; UID = testuser;PWD = test123", [],) io:fwrite("~p",[odbc:describe_table(Ref, "EMPLOYEE")]).
20}}, {"LASTNAME",{sql_varchar,20}}, {"SEX",{sql_char,1}}, {"INCOME",sql_integer}}}
Erlang은 테이블의 레코드 수를 얻을 수 있는 기능도 갖추고 있습니다.
아래 프로그램에서 동일한 예제를 보여줍니다.
-module(helloworld). -export([start/ start() -> odbc:start(), 123", [],) io:fwrite("~p",[odbc:select_count(Ref, "SELECT * FROM EMPLOYEE)
위 프로그램의 출력은 다음과 같습니다:
{ok,1}