Erlang - 数据库

Erlang - 数据库 首页 / Erlang入门教程 / Erlang - 数据库

Erlang能够连接到SQL Server和Oracle等传统数据库, Erlang有一个内置的odbc库,可用于处理数据库。

数据库连接

在我们的示例中,我们将使用Microsoft SQL Server。连接到Microsoft SQL Server数据库之前,请确保已检查以下指针。

  • 您已经创建了数据库TESTDB。

  • 您已在TESTDB中创建了表EMPLOYEE。

  • 该表包含字段FIRST_NAME,LAST_NAME,AGE,SEX和INCOME。

  • 用户ID" testuser"和密码" test123"被设置为访问TESTDB。

  • 确保您已创建名为 usersqlserver 的ODBC DSN,该DSN创建了与数据库的ODBC连接

创建连接

要创建与数据库的连接,可以使用以下代码示例。

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

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

上面程序的输出如下-

<0.33.0>

创建数据库表

连接到数据库后的下一步是在我们的数据库中创建表,下面的示例演示如何使用Erlang在数据库中创建表。

-module(helloLearnfk). 
-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)")

如果现在检查数据库,将会看到将创建一个名为 EMPLOYEE 的表。

写入数据

要在数据库表中创建记录时需要它。

无涯教程网

以下示例将在employee表中插入一条记录,如果表已成功更新,则记录和语句将返回已更新记录的值和已更新的记录数。

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

上面程序的输出将是-

{updated,1}

读取数据

Erlang还具有从数据库中获取记录的功能,这是通过 sql_query方法完成的。下面的程序中显示了一个示例-

链接:https://www.learnfk.comhttps://www.learnfk.com/erlang/erlang-databases.html

来源:LearnFk无涯教程网

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

上面程序的输出将是-

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

更新数据

Erlang还具有从数据库更新记录的功能。

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

上面程序的输出将是-

{updated,1}

删除数据

Erlang还具有从数据库中删除记录的功能。

-module(helloLearnfk). 
-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(helloLearnfk). 
-export([start/0]). 

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

上面程序的输出如下:

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

记录数

Erlang还具有获取表中记录总数的功能。

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

上面程序的输出将是-

{ok,1}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

MySQL实战45讲 -〔林晓斌〕

从0开始做增长 -〔刘津〕

网络编程实战 -〔盛延敏〕

浏览器工作原理与实践 -〔李兵〕

如何看懂一幅画 -〔罗桂霞〕

Go 并发编程实战课 -〔晁岳攀(鸟窝)〕

HarmonyOS快速入门与实战 -〔QCon+案例研习社〕

说透低代码 -〔陈旭〕

人人都用得上的数字化思维课 -〔付晓岩〕

好记忆不如烂笔头。留下您的足迹吧 :)