Erlang - Database

Erlang ha la capacità di connettersi ai database tradizionali come SQL Server e Oracle. Erlang ha un fileinbuilt odbc library che può essere utilizzato per lavorare con i database.

Connessione al database

Nel nostro esempio, utilizzeremo Microsoft SQL Server. Prima di connettersi a un database Microsoft SQL Server, assicurarsi che i seguenti puntatori siano selezionati.

  • Hai creato un database TESTDB.

  • Hai creato una tabella EMPLOYEE in TESTDB.

  • Questa tabella ha i campi FIRST_NAME, LAST_NAME, AGE, SEX e INCOME.

  • L'ID utente "testuser" e la password "test123" sono impostati per accedere a TESTDB.

  • Assicurati di aver creato un DSN ODBC chiamato usersqlserver che crea una connessione ODBC al database

Stabilire una connessione

Per stabilire una connessione al database, è possibile utilizzare il seguente esempio di codice.

Example

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

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

L'output del programma di cui sopra è il seguente:

Output

<0.33.0>

Le seguenti cose devono essere annotate sul programma di cui sopra.

  • Il metodo di avvio della libreria odbc viene utilizzato per indicare l'inizio dell'operazione del database.

  • Il metodo di connessione richiede un DSN, un nome utente e una password per connettersi.

Creazione di una tabella di database

Il passaggio successivo dopo la connessione al database è creare le tabelle nel nostro database. L'esempio seguente mostra come creare una tabella nel database utilizzando 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)")

Se ora controlli il database, vedrai che una tabella chiamata EMPLOYEE sarà creato.

Inserimento di un record nel database

È necessario quando si desidera creare i record in una tabella di database.

Il seguente esempio inserirà un record nella tabella dei dipendenti. Se la tabella viene aggiornata correttamente, il record e l'istruzione restituiranno il valore del record aggiornato e il numero di record aggiornati.

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

L'output del programma di cui sopra sarà:

Output

{updated,1}

Recupero dei record dal database

Erlang ha anche la capacità di recuperare i record dal database. Questo viene fatto tramitesql_query method.

Un esempio è mostrato nel seguente programma:

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

L'output del programma di cui sopra sarà il seguente:

Output

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

Quindi puoi vedere che il comando di inserimento nell'ultima sezione ha funzionato e il comando di selezione ha restituito i dati corretti.

Recupero dei record dal database in base ai parametri

Erlang ha anche la capacità di recuperare i record dal database in base a determinati criteri di filtro.

Un esempio è il seguente:

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

L'output del programma di cui sopra sarà:

Output

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

Aggiornamento dei record dal database

Erlang ha anche la capacità di aggiornare i record dal database.

Un esempio per lo stesso è il seguente:

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

L'output del programma di cui sopra sarà:

Output

{updated,1}

Eliminazione dei record dal database

Erlang ha anche la capacità di eliminare i record dal database.

Un esempio per lo stesso è il seguente:

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

L'output del programma di cui sopra sarà il seguente:

Output

{updated,1}

Struttura del tavolo

Erlang ha anche la capacità di descrivere la struttura di una tabella.

Un esempio è il seguente:

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

L'output del programma di cui sopra sarà il seguente:

Output

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

Conteggio record

Erlang ha anche la capacità di recuperare il conteggio totale dei record in una tabella.

Un esempio per lo stesso è mostrato nel seguente programma.

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

L'output del programma di cui sopra sarà:

{ok,1}