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