Erlang - ฐานข้อมูล
Erlang มีความสามารถในการเชื่อมต่อกับฐานข้อมูลดั้งเดิมเช่น SQL Server และ Oracle Erlang มีinbuilt odbc library ที่สามารถใช้เพื่อทำงานกับฐานข้อมูล
การเชื่อมต่อฐานข้อมูล
ในตัวอย่างของเราเราจะใช้ประโยชน์จาก Microsoft SQL Server ก่อนเชื่อมต่อกับฐานข้อมูล Microsoft SQL Server ตรวจสอบให้แน่ใจว่าได้เลือกตัวชี้ต่อไปนี้แล้ว
คุณได้สร้างฐานข้อมูล TESTDB
คุณได้สร้างตาราง EMPLOYEE ใน TESTDB
ตารางนี้มีฟิลด์ FIRST_NAME, LAST_NAME, AGE, SEX และ INCOME
ID ผู้ใช้ "testuser" และรหัสผ่าน "test123" ถูกตั้งค่าให้เข้าถึง TESTDB
ตรวจสอบให้แน่ใจว่าคุณได้สร้าง ODBC DSN ที่เรียกว่า usersqlserver ซึ่งสร้างการเชื่อมต่อ ODBC กับฐานข้อมูล
การสร้างการเชื่อมต่อ
ในการสร้างการเชื่อมต่อกับฐานข้อมูลสามารถใช้ตัวอย่างโค้ดต่อไปนี้
Example
-module(helloworld).
-export([start/0]).
start() ->
odbc:start(),
{ok, Ref} = odbc:connect("DSN = usersqlserver;UID = testuser;PWD = test123", []),
io:fwrite("~p",[Ref]).
ผลลัพธ์ของโปรแกรมข้างต้นมีดังนี้ -
Output
<0.33.0>
สิ่งต่อไปนี้ต้องสังเกตเกี่ยวกับโปรแกรมข้างต้น
วิธีการเริ่มต้นของไลบรารี odbc ใช้เพื่อระบุจุดเริ่มต้นของการดำเนินการฐานข้อมูล
วิธีการเชื่อมต่อต้องใช้ DSN ชื่อผู้ใช้และรหัสผ่านเพื่อเชื่อมต่อ
การสร้างตารางฐานข้อมูล
ขั้นตอนต่อไปหลังจากเชื่อมต่อกับฐานข้อมูลคือการสร้างตารางในฐานข้อมูลของเรา ตัวอย่างต่อไปนี้แสดงวิธีสร้างตารางในฐานข้อมูลโดยใช้ Erlang
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)")
หากคุณตรวจสอบฐานข้อมูลตอนนี้คุณจะเห็นว่ามีตารางที่เรียกว่า 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)")]).
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น -
Output
{updated,1}
การดึงข้อมูลจากฐานข้อมูล
Erlang ยังมีความสามารถในการดึงข้อมูลจากฐานข้อมูล สิ่งนี้ทำได้ผ่านไฟล์sql_query method.
ตัวอย่างจะแสดงในโปรแกรมต่อไปนี้ -
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") ]).
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็นดังนี้ -
Output
{selected,["FIRSTNAME","LASTNAME","AGE","SEX","INCOME"],
[{"Mac","Mohan",20,"M",2000}]}
ดังนั้นคุณจะเห็นว่าคำสั่งแทรกในส่วนสุดท้ายใช้งานได้และคำสั่ง select ส่งคืนข้อมูลที่ถูกต้อง
การดึงข้อมูลจากฐานข้อมูลตามพารามิเตอร์
Erlang ยังมีความสามารถในการดึงข้อมูลจากฐานข้อมูลตามเกณฑ์การกรองบางอย่าง
ตัวอย่างมีดังนี้ -
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"]}])]).
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น -
Output
{selected,["FIRSTNAME","LASTNAME","AGE","SEX","INCOME"],
[{"Mac","Mohan",20,"M",2000}]}
การอัปเดตบันทึกจากฐานข้อมูล
Erlang ยังมีความสามารถในการอัปเดตบันทึกจากฐานข้อมูล
ตัวอย่างเช่นเดียวกันมีดังนี้ -
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")]).
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น -
Output
{updated,1}
การลบบันทึกจากฐานข้อมูล
Erlang ยังมีความสามารถในการลบบันทึกจากฐานข้อมูล
ตัวอย่างเช่นเดียวกันมีดังนี้ -
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")]).
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็นดังนี้ -
Output
{updated,1}
โครงสร้างตาราง
Erlang ยังมีความสามารถในการอธิบายโครงสร้างตาราง
ตัวอย่างมีดังนี้ -
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")]).
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็นดังนี้ -
Output
{ok,[{"FIRSTNAME",{sql_varchar,20}},
{"LASTNAME",{sql_varchar,20}},
{"AGE",sql_integer},
{"SEX",{sql_char,1}},
{"INCOME",sql_integer}]}
จำนวนบันทึก
Erlang ยังมีความสามารถในการดึงจำนวนระเบียนทั้งหมดในตาราง
ตัวอย่างเช่นเดียวกันจะแสดงในโปรแกรมต่อไปนี้
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")]).
ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น -
{ok,1}