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

Banco de Dados do Erlang

O Erlang pode se conectar a bancos de dados tradicionais, como SQL Server e Oracle. O Erlang tem umbiblioteca odbc internaFerramentas disponíveis para o processamento de banco de dados.

Conexão de banco de dados

Em nosso exemplo, usaremos o Microsoft SQL Server. Antes de conectar ao banco de dados Microsoft SQL Server, certifique-se de que os seguintes ponteiros foram verificados.

  • Você já criou o banco de dados TESTDB.

  • Você já criou uma tabela EMPLOYEE no TESTDB.

  • A tabela contém os campos FIRST_NAME, LAST_NAME, AGE, SEX e INCOME.

  • ID de usuário " testuser" e senha " test123" definido para acessar TESTDB.

  • Certifique-se de que você já criou um DSN ODBC chamado usersqlserver que criou uma conexão ODBC para o banco de dados.

Estabelecer conexão

Para estabelecer uma conexão com o banco de dados, você pode usar o seguinte exemplo de código.

Exemplo

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

A saída do programa acima é como follows-

输出

<0.33.0>

Quanto ao programa acima, algumas coisas devem ser notadas.

  • O método de inicialização da biblioteca odbc é usado para indicar o início da operação de banco de dados.

  • O método de conexão requer DSN, nome de usuário e senha para conectar.

Criar tabela de banco de dados

O próximo passo após conectar ao banco de dados é criar uma tabela em nosso banco de dados. O exemplo a seguir demonstra como criar uma tabela no banco de dados usando 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 (NOME_PRIMARIO char varying(20), 
   SOBRENOME char varying(20), IDADE inteiro, SEXO char(1), INCOME inteiro)")

Se você verificar o banco de dados agora, verá que será criado um nomeEMPLOYEEda tabela.

Inserir um registro no banco de dados

é necessário para criar um registro na tabela de banco de dados.

O exemplo a seguir inserirá um registro na tabela employee. Se a tabela for atualizada com sucesso, o registro e a consulta retornarão os valores do registro atualizado e o número de registros atualizados.

Exemplo

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

A saída do programa acima será

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

输出

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

A saída do programa acima será

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

A saída do programa acima será

{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}}}

Número de Registros

O Erlang também possui a função de obter o número total de registros na tabela.

O exemplo idêntico está mostrado na seguinte programação.

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

A saída do programa acima será

{ok,1}