ไม่ได้ยุ่งเกี่ยวกับ ODBC มาก็หลายปีแล้ว ล่าสุดจำได้ตั้งแต่ใช้ Delphi ตอนฝึกงาน หลังจากนั้นก็ทำให้ผมพบว่า ไอ้อาชีพโปรแกรมไม่เหมาะกับผมเลยเสียจริงๆ แต่จนแล้วจนรอดก็หนีไม่พ้น ยังไงๆ ก็ต้องเขียน วันนี้กับมาเจออีกครั้งในภาค C Programming ให้ทำงานติดต่อกับฐานข้อมูล MySQL ก็เลยต้องกลับมารื้อฟื้นวิทยายุทธกันนิดหน่อย
เกริ่นที่ปัญหาก่อน ปัญหาคือไอ้โปรเจคฝึกงานผมเนี้ย มันเขียนด้วย C แล้วก็ติดต่อด้วยฐานข้อมูล Btrieve (ตอนนี้ถูก Move ไปเป็น Pervasive PSQL) จุดประสงค์คือ อยากย้ายจาก Btrieve ไปเป็น MySQL ก่อนจะมุทะลุ เดินแบบไร้ทิศทาง..ตั้งหลัก..แล้วมองกลับมาที่ตัวเอง “กูจักพวกมึงมั่งมั๊ยเนี้ย”
[ad#ad-post-1]
ODBC (Open DataBase Connectivity) ก็เป็น API (Application Programming Interface) ที่ช่วยให้คนเขียนโปรแกรมนั้น มีอิสระในการเขียนโปรแกรมด้วยภาษาต่างๆ, บนระบบปฏิบัติการอะไรก็ได้ และที่สุดคัญ ได้ทุกฐานข้อมูล องค์ประกอบที่สำคัญของ ODBC มีอยู่ด้วยกัน 5 ส่วนดังรูป

- Application ก็คือโปรแกรมที่เราเขียน จะด้วยภาษาอะไรก็ช่าง ข้อมูลที่เก็บยังไงไม่สน จะเก็บที่ไหนก็ไม่สนใจ สนใจแค่ว่า DSN (Data Source Name) คืออะไรเป็นพอ หน้าที่หลักๆ ก็คือ
- เลือกฐานข้อมูล แล้วก็ทำการติดต่อมันซ๋ะ
- ส่ง SQL Command
- รับข้อมูล
- Commit data หรือ บางครั้งจำเป็นต้อง Rollback ข้อมูลผ่าน SQL Command
- ยกเลิกการติดต่อกับฐานข้อมูล
- Driver Manager เขาว่าเป็น library ที่ช่วยในการติดต่อระหว่าง Application กับ Driver มีหน้าทที่หลักๆ ดังนี้
- แยกแยะข้อมูลที่มีอยู่ใน DSN (คือว่าเราจะต้องเป็นคน Config เองว่า ไอ้ DSN เนี้ยมันมีอะไรบ้าง..แล้วไอ้ Driver manager มันก็เอาไอ้ที่เรากรอกไปทำงานต่อ) คือ Database driver, Database, Database host และ Authentication information (พวก Username/Password)
- Loading /Un-loading driver เช่นใน MySQL ไอ้เจ้า Driver Manager มันก็จะสั่ง Load Connector/ODBC เพื่อให้ไปสั่งให้ ODBC API นั่นเริ่มทำการติดต่อกับ MySQL Host
- Connector/ODBC Driver มันคือ Library (ขอย้ำว่าคือ Library) ที่ Implement function เพื่อให้ ODBC API มาเรียกใช้ พูดง่ายๆ คือ ODBC จะทำงานกับ MySQL ได้ต้องมี Driver ตัวนี้เป็นคนพูดหรือติดต่อให้
- DNS Configuration เมื่อเราต้องติดต่อกับฐานข้อมูล เราก็ต้องบอกกับ ODBC ว่าจะใช้ Driver อันไหน, Database อะไร, Username/Password ที่สามารถเข้าใช้งานฐานข้อมูลดังกล่าว
- MySQL Server แน่นอนอันนี้ขาดไม่ได้เอาไว้เก็บข้อมูล
โดยไอ้ตัว ODBC Driver Manager นั้นก็ทั้งใน Windows (odbc32.dll), Mac OS x, UNIX (libodbc.so)
[ad#post-image]
ที่มา : www.mysql.com, wikipedia.org