ทำความรู้จักกับ JDBC


อัปเดท : 4 มีนาคม พ.ศ.2547 , แสดง : 32,268 , ความคิดเห็น : 7

JDBC เป็น JAVA API สำหรับการประมวลผลคำสั่ง SQL ซึ่งเป็น Class และ Interface ที่เป็นภาษา JAVA, JDBC ได้จัดเตรียม API มาตรฐานสำหรับเป็นเครื่องมือในการพัฒนา Database Application ในการเขียน Code โปรแกรมภาษา Java ซึ่ง JDBC สามารถติดต่อกับ Database ได้เกือบทุกประเภท เช่น [sys]base ,Oracle, MS SQL ,Informix,Access,MySQL ที่สำคัญการพัฒนา Application ด้าน Database โดยใช้ Java สามารถนำไป Run ได้หลาย Platform ซึ่ง JDBC จะเข้ามาช่วยจัดการในด้านนี้ จะทำให้ทำการพัฒนา Application ได้ใช้คุณสมบัติของภาษา JAVA ได้อย่างเต็มที่ JDBC ถูกประยุกต์ใช้งานในหลายด้าน เช่น ใน webpage ที่มี Applet ในการ Run Application แบบ Remote Database หรือมีการใช้ JDBC ในการติดต่อกับฐานข้อมูลซึ่ง JDBC เป็น Class Class หนึ่ง ฉะนั้นจึงสามารถใช้งานได้หลาย Platform เช่น Windows ,Linux, Unix, Solaris, MAC
 

ข้อดีของ JDBC

1. ใช้งานง่าย การตั้งค่าไม่ยุ่งยาก
2. สามารถทำงานร่วมกับภาษา Java ได้เป็นอย่างดี เพราะ Driver ที่เขียนขึ้นนั้นส่วนมากจะพัฒนาจากภาษา Java และมีการ compile เป็น class file ทำให้ใช้งานง่าย
3. สามารถติดต่อฐานข้อมูลได้เกือบทุกประเภท ซึ่งส่วนใหญ่จะเป็นฐานข้อมูลแบบเชิงสัมพันธ์
4. ไฟล์ Driver มีขนาดเล็กกะทัดรัด
5. สามารถใช้งานได้ทั้ง สถาปัตยกรรม แบบ Two-Tier และ Three-Tier
6. สามารถใช้งานได้หลายระบบปฏิบัติการ
7. เป็น low-level InterFace และสามารถใช้ High-level interface ด้วยถ้าต้องการ 8.
การใช้งานจะเป็นเชิง Object-Oriented
9. Driver แต่ละตัวมีมาตรฐานใกล้เคียงกัน
 

การทำงานที่สำคัญของ JDBC

1. ทำการติดต่อกับ Data Base
2. สั่งคำสั่ง SQL ไปยัง Data Base
3. การับผลลัพธ์จากการใช้คำสั่ง SQL แล้วทำการประมวลผล

ลักษณะที่สำคัญของ JDBC

JDBC เป็น low-level Interface ซึ่งสามารถเรียกใช้คำสั่ง SQL ได้โดยตรงซึ่งสามารถใช้งานได้อย่างมีประสิทธิภาพ,มีขนาดเล็กและง่ายต่อการใช้กว่าตัวติดต่อ Data Base ชนิดอื่น ๆ แต่ก็ได้มีออกแบบสำหรับใช้งานแบบ High-Level Interface ด้วย ซึ่ง High Level Interface คือ User Friendly ซึ่ง High-level API ของ JDBC ที่ถูกพัฒนาซึ่งมีดังนี้1. JDBC ต้องการคำสั่ง SQL ที่จะทำการส่งเป็น String ไปยัง Method ของภาษา Java ทำให้ Programmer สามารถใช้ตัวแปรในการรับส่งคำสั่ง SQL ได้2. มีการแปลง relation DataBase Table ไปเป็น Java Class ซึ่งเรียกว่า Object/Relational ซึ่งแต่ละแถวของ Table จะถูกแปลงไปเป็น Instant ของ Class และแต่ละ Column จะเป็นเหมือน attribute ของ Class ซึ่ง Programmer สามารถดำเนินการต่าง ๆ คล้ายด้วยว่า Table เป็น Class Class หนึ่ง ใน Java
 

การเปรียบเทียบระหว่าง JDBC และ ODBC

Microsoft ODBC API สามารถใช้ Application ในการติดต่อกับ DataBase ได้เกือบทุกประเภทเช่นกัน มีคำถามว่าทำไมไม่ใช้ ODBC ในการติดต่อฐานข้อมูลในภาษา Java ซึ่งคำตอบก็คือ สามารถใช้ ODBC ในการติดต่อฐานข้อมูลกับ Java ได้ แต่จะเป็นการดีถ้ามีการใช้ JDBC-ODBC Bridge ซึ่งเป็นรูปแบบหนึ่งของ JDBC ซึ่งสามารถสรุปคำตอบคำถามนี้ได้ว่า
 

  
 

1. ODBC ไม่มีความสะดวกในการใช้งานได้โดยตรงจาก Java เพราะมีการใช้ C Interface ในการเรียกคำสั่งจาก Java แล้วแปลงเป็น code ภาษา C มีผลกระทบหลายเรื่อง เช่น Security implement,robustness ของ Application

2. ตัวแปรที่มีการแปลงจาก ODBC (API ไปเป็น Java API จะทำให้เกิดปัญหาขึ้น เช่น Java ไม่มี Pointer ในขณะที่ C มีการใช้งาน Pointer

3. ODBC ยากต่อการเรียนรู้ เพราะมีการผสมผสานคุณสมบัติง่าย ๆ และยาก ๆ เข้าไว้ด้วยกัน และมีการนำเอา option ต่าง ๆ มารวบรวมกันไว้โดยที่เราต้องศึกษา object ทั้งหมด ของ ODBC เพื่อที่ใช้คุณสมบัติแยกย่อยต่าง ๆ ไป แต่ JDBC มีการออกแบบมาทเพื่อการใช้งานให้ได้ง่าย จะมี option ต่างหากเพื่อใช้ในงานที่ยากต่างหาก ซึ่งอยู่ในส่วนของ Advanced Programmer จะต้องศึกษาต่อไปไป

4. Java และ JDBC จะมีการใช้งานร่วมกันได้เพราะต่างก็เขียนขึ้นมาด้วย Code ภาษา Java ซึ่งต่างจาก ODBC การจัดการ ODBC Driver ต้องมีการ ติดตั้งลงในทุก ๆ เครื่องที่มีการใช้งาน ในขณะที่ JDBC Driver มีการเขียนขึ้น ใน code ภาษา Java JDBC code จะถูกรวมอยู่ใน Application โดยอัตโนมัติ ซึ่งจะมีความปลอดภัยกับข้อมูลในการใช้งานในระบบ Network
 

สถาปัตยกรรมแบบ Two-Tier และ Three-Tier

JDBC สามารถเข้าถึงฐานข้อมูลทั้งแบบ Two - Tier และ Three - Tier ได้ถึงแม้จะใช้ระบบปฏิบัติการที่แตกต่างกันในการทำงานร่วมกัน

- Two Tier ModelJava applet หรือ Application สามารถติดต่อฐานข้อมูลได้โดยตรง ซึ่งมีความต้องการที่จะใช้ JDBC Driver ที่จะสามารถติดต่อกับระบบ DBMS ได้ ซึ่ง User สามารถสั่งคำสั่ง SQL ไปยัง Database และผลลัพธ์ที่ได้ก็จะถูกส่งกลับมายัง user ได้ซึ่ง Database และผลลัพธ์ผลลัพธ์ที่ได้ก็จะถูกส่งกลับมายัง user ได้ซึ่งฐานข้อมูล อาจจะอยู่คนละเครื่องกันกับ Application ซึ่งจะคล้ายการทำงานตามหลักของ Client/Server ซึ่งในขณะเครื่องที่ Application ทำงานอยู่เรียกว่า Client เครื่องที่เป็น DataBase จะเป็น Server,Network จะเป็น Internet ก็ได้

- Three Tier Modelคำสั่งจะถูกส่งไปยัง Middle-Tier ซึ่ง Middle-Tier จะส่งคำสั่ง SQL ไปยัง Data Base อีกครั้งหนึ่ง เมื่อมีการประมวลคำสั่ง SQL แล้วจะมีการสั่งผลลัพธ์กลับมายัง Middle-Tier จาก Middle-Tier จึงสั่งผลลัพธ์มายัง user อีกครั้งหนึ่ง ซึ่ง Middle Tier นี้สามารถจัดการคำสั่งควบคุมในการไป ประมวลผลข้อมูลมาเก็บไว้และแจกจ่ายไปยัง User ต่างๆ เมื่อมีการร้องขอใช้งาน อีกอย่างที่สำคัญคือ การทำงานที่ Middle-Tier นี้จะช่วยให้ง่ายต่อการใช้งานแบบ user-friendly มากที่สุด

ประเภทของ JDBC Driver

1. JDBC - ODBC Bridge
2. Native API partly-Java Driver
3. JDBC-Net Java Driver
4. Native-protocal pure Java Driver

1. JDBC-ODBC Bridge plus ODBC Driver เป็น Driver ของ JDBC ที่ใช้ในการติดต่อการทำงานผ่าน ODBC ซึ่งจะมีการใช้ ODBC ในการติดต่อกับฐานข้อมูลก่อนไม่ว่าจะเป็นในเครื่องเดียวกันหรือติดต่อผ่าน Server แล้วจึงใช้ JDBC ไปติดต่อกับ ODBC อีกครั้งหนึ่ง

2. Native-API partly-Java Driver สำหรับ Driver ประเภทนี้จะเปลี่ยน JDBC calls ไปเรียก Client API ของ Oracle ,[sys]base หรือ DBMS ตัวอื่น ๆ ซึ่งจะคล้ายสะพานเชื่อมต่อไปยัง ฐานข้อมูลอีก

3. JDBC-Net pure Java Driver: Driver ประเภทนี้จะเปลี่ยน JDBC calls ไปยัง DBMS - independent net protocal ซึ่งหลังจากการเปลี่ยนไปเป็น DBMS Protocal โดย Server ซึ่ง Server ตัวนี้สามารถติดต่อเข้ากับ Java Client ไปยัง Database หลายประเภทได้ซึ่งจะสามารถใช้งานผ่านทาง Internet และ Intranet

4. Native-protocal pure Java Driver : Driver ประเภทนี้จะเปลี่ยน JDBC call ไปเป็น network protocal ซึ่งจะถูกใช้โดย DBMS ซึ่งจะมีการใช้งานโดยมีการเรียกใช้งานโดยตรงจาก client ไปยัง DBMS Server
JavaSoft FrameWorkบริษัท JavaSoft ได้กำหนดคุณลักษณะของผลิตภัณฑ์ของ JDBC component ไว้ดังนี้

1. การจัดการ JDBC Driver เป็นหัวใจหลักของสถาปัตยกรรมของ JDBC ซึ่งต้องมีขนาดเล็กและง่าย ซึ่งต้องมี function พื้นฐานในการติดต่อไปยัง Java Application
2. การทดสอบ JDBC Driver จะเป็นตัวตัดสินใจว่า JDBC นี้สามารถ ใช้งานร่วมกับ Application และมีการทำงานได้หรือไม่3. JDBC-ODBC Bridge สามารถใช้ ODBC Driver คล้ายกับ JDBC Driver


ผู้เขียน/อ้างอิง : จักรกฤษณ์ แร่ทอง

เทคโนโลยีฐานข้อมูล

ความคิดเห็น/แนะนำ/ติชม/อื่นๆ

  • ภาสกร บิลชัย [02 ก.ย. 2549 , 12:48 PM]

    อยากได้หลักการเขียนโปรแกรมภาษาจาวา เพราะว่าผมเรียน จาวา ไม่เข้าใจครับ

  • jomera [10 ก.ค. 2551 , 10:43 AM]

    น่าจะมีรุปมาแสดงให้ดูวิธีการทำงานด้วย

  • kanatsanan [02 ก.ย. 2551 , 09:55 AM]

    อยากทราบหลักการเขียน JDBC คะ

  • sneakerlao [25 พ.ย. 2551 , 02:48 PM]

    อยากทราบการเขียน JDBC เพื่อใช้งานข้อมูนใน MySQL ครับ

  • Sodakine [04 มี.ค. 2552 , 05:11 AM]

    หลักการเขียน JDBC ไม่อยากนะคับอาทิเช่น ต้องมี่คำสั่ง connect เป็นอันดับแรก public class Connector { private String server = "ADMIN-PC", db_name = "MoviesStore", db_user = "AdminMovie", db_pass = "1234"; private Connection Link; static Statement SQL; Connector(){ connectToServer(); } ต่อมาเป็นส่วนของการ connect เข้าฐานข้อมูล ในที่นี้ผมใช้โปรแกรม SQL Server Management Studio 2005 นะคับ boolean connectToServer(){ try{ String driver = "net.sourceforge.jtds.jdbc.Driver"; String url = "jdbc:jtds:sqlserver://"+server+":1433//"+db_name; Class.forName(driver); Link = DriverManager.getConnection(url,db_user,db_pass); if (Link!=null){ SQL = Link.createStatement(); // JOptionPane.showMessageDialog(null, "สามารถเชื่อมต่อเซิร์ฟเวอร์ได้ค่ะ"); return true; } else{ // JOptionPane.showMessageDialog(null, "ไม่สามารถเชื่อมต่อเซิร์ฟเวอร์ได้ค่ะ"); } }catch(ClassNotFoundException ex){ JOptionPane.showMessageDialog(null, ex.getMessage()); } catch(SQLException ex){ JOptionPane.showMessageDialog(null, ex.getMessage()); } return false; } ประมาณนี้นะคับแต่ยังไม่หมดแค่นี้นะคับคำสั่งยังเหลืออีก แต่คำสั่งนี้จะได้ไปสร้างเหนือคอนตั๊กเตอร์ สร้างในส่วนของแอ็ดธิบิ้ว นะคับ ส่วนที่เหลือถ้ามีใครสนใจอยากได้โค้ดก็โพลดไว้แล้วกันนะคับ

  • ping [19 พ.ย. 2552 , 06:10 PM]

    อยากรู้รายละเอียดเกี่ยวกับการเขียนโปรแกรมของระบบการจัดการของฝ่ายบุคคลค่ะและอยากทราบว่าจะเลือกใช้โปรแกรมอะไรใจการเขียนโปรแกรมดีค่ะ ขอบคุณค่ะ

  • ket [15 ก.ย. 2554 , 08:59 PM]

    ผมอยากทราบโค้ดที่เหลือครับ ช่วยโพสต์ด้วยครับ ผมหาวิธี connect java applet กับ MySql มาอาทิตย์กว่าแล้วครับ