Erlang - Veritabanları

Erlang, SQL Server ve Oracle gibi geleneksel veritabanlarına bağlanma yeteneğine sahiptir. Erlang'da birinbuilt odbc library veritabanları ile çalışmak için kullanılabilir.

Veritabanı Bağlantısı

Örneğimizde, Microsoft SQL Sunucusunu kullanacağız. Bir Microsoft SQL Server veritabanına bağlanmadan önce, aşağıdaki işaretçilerin kontrol edildiğinden emin olun.

  • Bir TESTDB veritabanı oluşturdunuz.

  • TESTDB'de EMPLOYEE tablosu oluşturdunuz.

  • Bu tabloda FIRST_NAME, LAST_NAME, AGE, SEX ve INCOME alanları var.

  • "Testuser" kullanıcı kimliği ve "test123" şifresi TESTDB'ye erişmek için ayarlanmıştır.

  • Adlı bir ODBC DSN oluşturduğunuzdan emin olun. usersqlserver veritabanına bir ODBC bağlantısı oluşturan

Bir Bağlantı Kurmak

Veritabanına bağlantı kurmak için aşağıdaki kod örneği kullanılabilir.

Example

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

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

Yukarıdaki programın çıktısı aşağıdaki gibidir -

Output

<0.33.0>

Yukarıdaki programla ilgili olarak aşağıdaki noktalara dikkat edilmelidir.

  • Odbc kütüphanesinin başlangıç ​​yöntemi, veritabanı işleminin başlangıcını belirtmek için kullanılır.

  • Bağlanma yöntemi, bağlanmak için bir DSN, kullanıcı adı ve şifre gerektirir.

Veritabanı Tablosu Oluşturma

Veritabanına bağlandıktan sonraki adım, veritabanımızda tabloları oluşturmaktır. Aşağıdaki örnek, Erlang kullanarak veritabanında bir tablonun nasıl oluşturulacağını gösterir.

Example

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

Şimdi veritabanını kontrol ederseniz, bir tablonun EMPLOYEE yaratılacak.

Veritabanına Kayıt Ekleme

Kayıtlarınızı bir veritabanı tablosunda oluşturmak istediğinizde gereklidir.

Aşağıdaki örnek, çalışan tablosuna bir kayıt ekleyecektir. Tablo başarıyla güncellenirse, kayıt ve ifade, güncellenen kaydın değerini ve güncellenen kayıtların sayısını döndürür.

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

Yukarıdaki programın çıktısı -

Output

{updated,1}

Veritabanından Kayıt Alma

Erlang ayrıca veri tabanından kayıt alma yeteneğine de sahiptir. Bu, aracılığıyla yapılırsql_query method.

Aşağıdaki programda bir örnek gösterilmiştir -

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, "SELECT * FROM EMPLOYEE") ]).

Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -

Output

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

Böylece, son bölümdeki insert komutunun çalıştığını ve select komutunun doğru verileri döndürdüğünü görebilirsiniz.

Parametrelere Dayalı Veritabanından Kayıt Alma

Erlang ayrıca belirli filtre kriterlerine göre veri tabanından kayıtları getirme yeteneğine de sahiptir.

Bir örnek aşağıdaki gibidir -

Example

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

Yukarıdaki programın çıktısı -

Output

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

Veritabanından Kayıtları Güncelleme

Erlang ayrıca veri tabanından kayıtları güncelleme yeteneğine de sahiptir.

Aynısı için bir örnek aşağıdaki gibidir -

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, "
      UPDATE EMPLOYEE SET AGE = 5 WHERE INCOME= 2000")]).

Yukarıdaki programın çıktısı -

Output

{updated,1}

Veritabanından Kayıt Silme

Erlang ayrıca veri tabanından kayıtları silme özelliğine de sahiptir.

Aynısı için bir örnek aşağıdaki gibidir -

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, "DELETE EMPLOYEE WHERE INCOME= 2000")]).

Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -

Output

{updated,1}

Masa Yapısı

Erlang ayrıca bir tablo yapısını tanımlama yeteneğine de sahiptir.

Bir örnek aşağıdaki gibidir -

Example

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

Yukarıdaki programın çıktısı aşağıdaki gibi olacaktır -

Output

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

Kayıt sayısı

Erlang ayrıca bir tablodaki kayıtların toplam sayısını alma yeteneğine de sahiptir.

Aşağıdaki programda bunun bir örneği gösterilmektedir.

Example

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

Yukarıdaki programın çıktısı -

{ok,1}