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

Base de données Erlang

Erlang peut se connecter à des bases de données traditionnelles, telles que SQL Server et Oracle. Erlang a unbibliothèque odbc intégréeOutils disponibles pour traiter la base de données.

Connexion de base de données

Dans notre exemple, nous utiliserons Microsoft SQL Server. Assurez-vous d'avoir vérifié les points suivants avant de vous connecter à la base de données Microsoft SQL Server.

  • Vous avez créé la base de données TESTDB.

  • Vous avez créé une table EMPLOYEE dans TESTDB.

  • La table contient les champs FIRST_NAME, LAST_NAME, AGE, SEX et INCOME.

  • L'ID utilisateur "testuser" et le mot de passe "test123»est configuré pour accéder à TESTDB.

  • Assurez-vous que vous avez créé un DSN ODBC nommé usersqlserver qui crée une connexion ODBC vers la base de données

Établir une connexion

Pour établir une connexion avec la base de données, vous pouvez utiliser l'exemple de code suivant.

Exemple

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

Les sorties du programme ci-dessus sont les suivantes-

Output

<0.33.0>

Pour le programme ci-dessus, il faut noter les points suivants.

  • La méthode de lancement de la bibliothèque odbc est utilisée pour indiquer le début de l'opération de base de données.

  • La méthode de connexion nécessite DSN, nom d'utilisateur et mot de passe pour se connecter.

Créer une table de base de données

L'étape suivante après la connexion à la base de données est de créer une table dans notre base de données. L'exemple suivant montre comment créer une table dans une base de données en utilisant 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)")

Si vous vérifiez maintenant la base de données, vous verrez qu'un enregistrement nomméEMPLOYEEde la table.

Insérer un enregistrement dans la base de données

c'est nécessaire lors de la création d'un enregistrement dans une table de base de données.

Le exemple suivant insère un enregistrement dans la table employee. Si la table est mise à jour avec succès, l'enregistrement et l'expression retournent les valeurs de l'enregistrement mis à jour et le nombre d'enregistrements mis à jour.

Exemple

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

La sortie du programme suivant sera

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

Output

{selected,["FIRSTNAME","LASTNAME","AGE","SEX","INCOME"],
[{"Mac","Mohan",20,"M",2000}]}

因此,您可以看到上一节中的insert命令起作用,并且select命令返回了正确的数据。

根据参数从数据库中获取记录

Erlang还具有根据某些过滤条件从数据库中获取记录的功能。

一个实例如下

-module(helloworld). 
-export([start/0]). 
start() -> 
   odbc:start(), 
   123", [],) 
   io:fwrite("~p",[odbc:param_query(Ref, "SELECT")), * FROM EMPLOYEE WHERE SEX=?", 
   [{{sql_char, 1}, ["M"]}]).

La sortie du programme suivant sera

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

La sortie du programme suivant sera

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

20}},
   {"LASTNAME",{sql_varchar,20}},
   
   {"SEX",{sql_char,1}},
   {"INCOME",sql_integer}]}

Nombre d'enregistrements

Erlang a également la fonction de récupérer le nombre total d'enregistrements dans la table.

L'exemple suivant montre la même chose dans le programme.

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

La sortie du programme suivant sera

{ok,1}