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

Erlang-Datenbank

Erlang kann sich mit traditionellen Datenbanken wie SQL Server und Oracle verbinden. Erlang hat eineintegrierte odbc-BibliothekWerkzeuge, die zur Verarbeitung von Datenbanken verwendet werden können.

Datenbankverbindung

In unserem Beispiel verwenden wir Microsoft SQL Server. Stellen Sie sicher, dass Sie die folgenden Punkte überprüft haben, bevor Sie sich mit der Datenbank Microsoft SQL Server verbinden.

  • Sie haben die Datenbank TESTDB erstellt.

  • Sie haben eine Tabelle EMPLOYEE in TESTDB erstellt.

  • Diese Tabelle enthält die Felder FIRST_NAME, LAST_NAME, AGE, SEX und INCOME.

  • Benutzer-ID "testuser" und Passwort "test123”auf TESTDB zugreifen.

  • Stellen Sie sicher, dass Sie eine als usersqlserver bezeichnete ODBC DSN erstellt haben, die eine ODBC-Verbindung zum Datenbankserver herstellt

Verbindung herstellen

Um eine Verbindung zur Datenbank herzustellen, kann der folgende Codebeispiel verwendet werden.

Beispiel

-module(helloworld). 
-export([start/0]). 
start() ->
   odbc:start(), 
   {ok, Ref} = odbc:connect("DSN = usersqlserver;UID = testuser;PWD = test123", []), 
   io:fwrite("~p",[Ref]).

Die Ausgabe des obigen Programms ist wie folgt-

Output

<0.33.0>

Zu beachten ist bei dem obigen Programm folgendes.

  • Der Startmethoden der odbc-Bibliothek wird verwendet, um den Beginn der Datenbankoperationen anzuzeigen.

  • Die Verbindungsmethode erfordert DSN, Benutzername und Passwort, um eine Verbindung herzustellen.

Erstellen eines Datenbanktables

Das nächste Schritt nach der Verbindung zur Datenbank ist die Erstellung eines Tables in unserer Datenbank. Der folgende Beispiel zeigt, wie man mit Erlang einen Table in der Datenbank erstellt.

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

Wenn Sie jetzt die Datenbank überprüfen, werden Sie sehen, dass eine alsEMPLOYEEder Tabelle.

Eintrag in die Datenbank einzufügen

wird es benötigt, um ein Record in einer Datenbanktabelle zu erstellen.

Der folgende Beispiel zeigt, wie ein Eintrag in die Tabelle employee eingefügt wird. Wenn die Tabelle erfolgreich aktualisiert wurde, werden der Eintrag und der Befehl die Werte des aktualisierten Eintrags und die Anzahl der aktualisierten Einträge zurückgeben.

Beispiel

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

Die Ausgabe des obigen Programms wird sein

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

Die Ausgabe des obigen Programms ist wie folgt:

Output

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

Die Ausgabe des obigen Programms wird sein

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

Die Ausgabe des obigen Programms wird sein

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

Die Ausgabe des obigen Programms ist wie folgt:

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

Die Ausgabe des obigen Programms ist wie folgt:

{ok,[{"FIRSTNAME",{sql_varchar,20}},
   {"LASTNAME",{sql_varchar,20}},
   {"AGE",sql_integer},
   {"SEX",{sql_char,1}},
   {"INCOME",sql_integer}]}

Anzahl der Einträge

Erlang hat auch die Funktion, die Gesamtzahl der Einträge in einer Tabelle zu ermitteln.

Im folgenden Programm wurde dasselbe Beispiel gezeigt.

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

Die Ausgabe des obigen Programms wird sein

{ok,1}