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

القواعد البيانية في 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,它创建了到数据库的ODBC连接

建立连接

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

Example

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

上面程序的输出如下-

الإخراج

<0.33.0>

关于上述程序,需要注意以下几点。

  • odbc库的启动方法用于指示数据库操作的开始。

  • 连接方法需要DSN,用户名和密码才能连接。

创建数据库表

连接到数据库后的下一步是在我们的数据库中创建表。下面的示例演示如何使用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)

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

将记录插入数据库

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

下面的示例将在employee表中插入一条记录。如果表已成功更新,则记录和语句将返回已更新记录的قيمات والعدد من السجلات المعدلة。

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

الخروج من البرنامج أعلاه سيكون

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

الخروج من البرنامج أعلاه سيكون

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

الخروج من البرنامج أعلاه سيكون

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

خروج البرنامج أعلاه سيكون كما يلي:

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

عدد السجلات

يملك Erlang أيضًا وظيفة للحصول على عدد السجلات في الجدول.

تم عرض نفس المثال في برنامج أدناه.

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

الخروج من البرنامج أعلاه سيكون

{ok,1}