English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlang puede conectarse a bases de datos tradicionales, como SQL Server y Oracle. Erlang tiene unabiblioteca odbc integradaHerramientas disponibles para manejar bases de datos.
En nuestro ejemplo, utilizaremos Microsoft SQL Server. Antes de conectarse a la base de datos Microsoft SQL Server, asegúrese de que ya ha revisado los siguientes punteros.
Ya ha creado la base de datos TESTDB.
Ya ha creado una tabla EMPLOYEE en TESTDB.
La tabla contiene los campos FIRST_NAME, LAST_NAME, AGE, SEX e INCOME.
El ID de usuario "testuser" y la contraseña "test123”se establece para acceder a TESTDB.
Asegúrese de que ya ha creado un DSN ODBC llamado usersqlserver que crea una conexión ODBC a la base de datos
Para establecer una conexión con la base de datos, se puede usar el siguiente ejemplo de código.
Ejemplo
-module(helloworld). -export([start/0]). start(), -> odbc:start(), {ok, Ref} = odbc:connect("DSN = usersqlserver;UID = testuser;PWD = test123 io:fwrite("~p",[Ref]).
La salida del programa anterior es como sigue-
Output
<0.33.0>
Sobre el programa anterior, hay algunos puntos que需要注意.
El método de inicio de la biblioteca odbc se utiliza para indicar el inicio de la operación de base de datos.
El método de conexión requiere DSN, nombre de usuario y contraseña para conectarse.
El siguiente paso después de conectarse a la base de datos es crear una tabla en nuestra base de datos. El siguiente ejemplo muestra cómo crear una tabla en la base de datos utilizando 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 (FIRSTNAME char varying(20), LASTNAME char varying(20), AGE integer, SEX char(1), INCOME integer)")
Si verifica la base de datos ahora, verá que se creará un nombreEMPLOYEEde la tabla.
Se necesita para crear un registro en una tabla de base de datos.
El siguiente ejemplo insertará un registro en la tabla employee. Si la tabla se actualiza con éxito, se devolverán los valores del registro actualizado y el número de registros actualizados.
Ejemplo
-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 salida del programa 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")).
Output
{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"]}])
La salida del programa 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")).
La salida del programa 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}}}
Erlang también tiene la función de obtener el número total de registros en la tabla.
El siguiente programa muestra el mismo ejemplo.
-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 salida del programa será
{ok,1}