Erlang - Bases de données

Erlang a la capacité de se connecter aux bases de données traditionnelles telles que SQL Server et Oracle. Erlang a uninbuilt odbc library qui peut être utilisé pour travailler avec des bases de données.

Connexion à la base de données

Dans notre exemple, nous allons utiliser Microsoft SQL Server. Avant de vous connecter à une base de données Microsoft SQL Server, assurez-vous que les pointeurs suivants sont cochés.

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

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

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

  • L'ID utilisateur "testuser" et le mot de passe "test123" sont définis pour accéder à TESTDB.

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

Établir une connexion

Pour établir une connexion à la base de données, l'exemple de code suivant peut être utilisé.

Example

-module(helloworld). 
-export([start/0]). 

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

La sortie du programme ci-dessus est la suivante -

Output

<0.33.0>

Les choses suivantes doivent être notées à propos du programme ci-dessus.

  • La méthode de démarrage 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 un DSN, un nom d'utilisateur et un mot de passe pour se connecter.

Créer une table de base de données

La prochaine étape après la connexion à la base de données est de créer les tables dans notre base de données. L'exemple suivant montre comment créer une table dans la base de données à l'aide d'Erlang.

Example

-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'une table appelée EMPLOYEE sera créé.

Insertion d'un enregistrement dans la base de données

Il est nécessaire lorsque vous souhaitez créer vos enregistrements dans une table de base de données.

L'exemple suivant insérera un enregistrement dans la table des employés. Si la table est correctement mise à jour, l'enregistrement et l'instruction renverront la valeur de l'enregistrement mis à jour et le nombre d'enregistrements mis à jour.

Example

-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 ci-dessus sera -

Output

{updated,1}

Récupération des enregistrements de la base de données

Erlang a également la capacité d'extraire des enregistrements de la base de données. Cela se fait via lesql_query method.

Un exemple est montré dans le programme suivant -

Example

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

La sortie du programme ci-dessus sera la suivante -

Output

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

Ainsi, vous pouvez voir que la commande d'insertion dans la dernière section a fonctionné et que la commande de sélection a renvoyé les bonnes données.

Récupération des enregistrements de la base de données en fonction des paramètres

Erlang a également la capacité d'extraire des enregistrements de la base de données en fonction de certains critères de filtrage.

Un exemple est le suivant -

Example

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

La sortie du programme ci-dessus sera -

Output

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

Mise à jour des enregistrements à partir de la base de données

Erlang a également la capacité de mettre à jour les enregistrements de la base de données.

Un exemple pour le même est le suivant -

Example

-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 ci-dessus sera -

Output

{updated,1}

Suppression d'enregistrements de la base de données

Erlang a également la capacité de supprimer des enregistrements de la base de données.

Un exemple pour le même est le suivant -

Example

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

La sortie du programme ci-dessus sera la suivante -

Output

{updated,1}

Structure de la table

Erlang a également la capacité de décrire une structure de table.

Un exemple est le suivant -

Example

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

La sortie du programme ci-dessus sera la suivante -

Output

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

Nombre d'enregistrements

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

Un exemple pour la même chose est montré dans le programme suivant.

Example

-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 ci-dessus sera -

{ok,1}