English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang 데이터베이스

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}