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}