Erlang - Bancos de dados
Erlang tem a capacidade de se conectar a bancos de dados tradicionais, como SQL Server e Oracle. Erlang tem uminbuilt odbc library que pode ser usado para trabalhar com bancos de dados.
Conexão de banco de dados
Em nosso exemplo, vamos usar o Microsoft SQL Server. Antes de conectar-se a um banco de dados Microsoft SQL Server, certifique-se de que os seguintes indicadores estejam marcados.
Você criou um banco de dados TESTDB.
Você criou uma tabela EMPLOYEE em TESTDB.
Esta tabela contém os campos FIRST_NAME, LAST_NAME, AGE, SEX e INCOME.
O ID do usuário "testuser" e a senha "test123" são definidos para acessar o TESTDB.
Certifique-se de ter criado um ODBC DSN chamado usersqlserver que cria uma conexão ODBC com o banco de dados
Estabelecendo uma conexão
Para estabelecer uma conexão com o banco de dados, o seguinte exemplo de código pode ser usado.
Example
-module(helloworld).
-export([start/0]).
start() ->
odbc:start(),
{ok, Ref} = odbc:connect("DSN = usersqlserver;UID = testuser;PWD = test123", []),
io:fwrite("~p",[Ref]).
O resultado do programa acima é o seguinte -
Output
<0.33.0>
As seguintes coisas precisam ser observadas sobre o programa acima.
O método inicial da biblioteca odbc é usado para indicar o início da operação do banco de dados.
O método de conexão requer um DSN, nome de usuário e senha para se conectar.
Criando uma tabela de banco de dados
A próxima etapa após conectar-se ao banco de dados é criar as tabelas em nosso banco de dados. O exemplo a seguir mostra como criar uma tabela no banco de dados usando 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 você verificar o banco de dados, verá que uma tabela chamada EMPLOYEE Será criado.
Inserindo um Registro no Banco de Dados
É necessário quando você deseja criar seus registros em uma tabela de banco de dados.
O exemplo a seguir irá inserir um registro na tabela de funcionários. Se a tabela for atualizada com sucesso, o registro e a instrução retornarão o valor do registro atualizado e o número de registros que foram atualizados.
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)")]).
O resultado do programa acima será -
Output
{updated,1}
Buscando registros do banco de dados
Erlang também tem a capacidade de buscar registros do banco de dados. Isso é feito por meio dosql_query method.
Um exemplo é mostrado no programa a seguir -
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") ]).
O resultado do programa acima será o seguinte -
Output
{selected,["FIRSTNAME","LASTNAME","AGE","SEX","INCOME"],
[{"Mac","Mohan",20,"M",2000}]}
Portanto, você pode ver que o comando insert na última seção funcionou e o comando select retornou os dados corretos.
Buscando registros do banco de dados com base em parâmetros
Erlang também tem a capacidade de buscar registros do banco de dados com base em certos critérios de filtro.
Um exemplo é o seguinte -
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"]}])]).
O resultado do programa acima será -
Output
{selected,["FIRSTNAME","LASTNAME","AGE","SEX","INCOME"],
[{"Mac","Mohan",20,"M",2000}]}
Atualizando Registros do Banco de Dados
Erlang também tem a capacidade de atualizar registros do banco de dados.
Um exemplo para o mesmo é o seguinte -
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")]).
O resultado do programa acima será -
Output
{updated,1}
Excluindo Registros do Banco de Dados
Erlang também pode excluir registros do banco de dados.
Um exemplo para o mesmo é o seguinte -
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")]).
O resultado do programa acima será o seguinte -
Output
{updated,1}
Estrutura da Tabela
Erlang também tem a capacidade de descrever a estrutura de uma tabela.
Um exemplo é o seguinte -
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")]).
O resultado do programa acima será o seguinte -
Output
{ok,[{"FIRSTNAME",{sql_varchar,20}},
{"LASTNAME",{sql_varchar,20}},
{"AGE",sql_integer},
{"SEX",{sql_char,1}},
{"INCOME",sql_integer}]}
Contagem de registros
Erlang também tem a capacidade de buscar a contagem total dos registros em uma tabela.
Um exemplo do mesmo é mostrado no programa a seguir.
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")]).
O resultado do programa acima será -
{ok,1}