Java เชื่อมต่อ MySQL ตอนที่ 4

        การเขียนโปรแกรมเชิงออบเจ็กต์ (OOP) เป็นเรื่องที่ต้องเข้าใจในกระบวนการทำงานต่าง ๆ ตั้งแต่ต้นจนจบก่อนที่จะเริ่มต้นเขียนโปรแกรม และเป็นเรื่องจำเป็นอย่างมากที่เราจะต้องเข้าใจโค้ดที่เราเขียนออกมาว่าหน้าที่มันคืออะไร เมื่อถูกเขียนขึ้นมามันต้องมีเหตุผลเสมอ อะไรที่เราไม่รู้ความหมาย หรือไม่รู้ว่าเขียนไปแล้วจะเกิดประโยชน์อะไร เราก็ไม่ควรเขียนมันออกมา

        ถ้าคิดว่าการเขียนโปรแกรมคือการคัดลอก (Copy) แล้ววาง (Paste) เราคิดว่านั้นคงเป็นการเข้าใจผิด และมันจะส่งผลต่ออนาคตในอาชีพการงานของเราด้วย จริง ๆ แล้วการรู้อะไรไม่จริงมันก็ก่อให้เกิดปัญหาในทุก ๆ สาขาอาชีพนั้นแหละ แต่เรามักจะไม่มองจุดนั้น เอาแต่โทษนั่นโทษนี่ (แต่ไม่เคยโทษตัวเอง) นั่นเป็นต้นเหตุทำให้สังคมไทยเรามองว่าอาชีพโปรแกรมเมอร์งานหนัก เหนื่อย เงินเดือนน้อย ฯลฯ ไปทำอย่างอื่นดีคงกว่า

ทั้ง ๆ คนที่เค้าเก่งจริง ๆ ค่าตัวแพงมาก และหลาย ๆ บริษัทก็แย่งตัวกัน (มองอีกมุมหนึ่งก็คงจะเป็นเรื่องดี ที่ยิ่งมีคนสนใจอาชีพนี้น้อยเท่าไหร่ คู่แข่งของเราก็จะลดน้อยลงเท่านั้น) และสำหรับคนที่เก่งจริง ๆ เค้าจะมองเห็นโอกาสในการต่อยอดทางธุรกิจ เช่น จะไปเปิดกิจการของตัวเองก็ได้ สร้างซอฟต์แวร์ขายเองก็ได้ ฯลฯ คนที่เค้าร่ำรวยติดอันดับโลกด้วยการเป็นนักพัฒนาโปรแกรมก็มีให้เห็นมากมาย เพราะฉะนั้นจงพัฒนาตัวเองอยู่เสมอนะคะ มันอาจจะเป็นเรื่องยาก แต่ก็ยากเฉพาะช่วงเริ่มต้นเท่านั้น ขอเป็นกำลังใจให้ค่ะ 🙂

เข้าเรื่องกันเลยดีกว่า ในตอนที่ผ่านมา เราได้ลงมือเขียนโปรแกรมกันไปแล้ว คราวนี้เรามาดูกันดีค่ะว่า โค้ดที่เราเขียนออกไปนั้น แต่ละขั้นตอนมันคืออะไรและทำหน้าที่อะไรกันบ้างเรียงตามลำดับ 6 ขั้นตอน ดังต่อไปนี้


อธิบายโค้ด 6 ขั้นตอนการเชื่อมต่อฐานข้อมูล
1. โหลดไดร์เวอร์ (Driver)
2. สร้างการเชื่อมต่อ (Create Connection)
3. สร้างออบเจ็กต์ Statement และเตรียมคำสั่ง SQL
4. ส่งคำสั่งไปประมวลผล
5. การแสดงผล
6. ปิดการเชื่อมต่อ


 

1.โหลดไดร์เวอร์ (Driver)

Driver เป็นตัวที่ทำหน้าที่ แปลงคำสั่งที่เขียนขึ้นจากภาษาจาวาให้ไปอยู่ในรูปแบบที่ Database Server ต้องการ เป็นส่วนที่ผู้ผลิตซอฟต์แวร์ฐานข้อมูลสร้างขึ้น เราทำเพียงแค่ไปดาวน์โหลดมาติดตั้งและเรียกใช้งานตามโค้ดด้านล่างค่ะ

ในการโหลดไดร์เวอร์ เราใช้เมธอด   forName(“ชื่อไดร์เวอร์”);  จากคลาสชื่อ Class  ในแพ็คเกจ java.land  พร้อมกับส่งชื่อไดร์เวอร์ของฐานข้อมูลที่เราต้องการเชื่อมต่อไป ในที่นี้เราใช้ฐานข้อมูล MySQL ก็ต้องใช้ไดร์เวอร์ของฐานของมูลนี้ หากเราจะเชื่อมต่อฐานข้อมูลอื่น ๆ เราก็ใช้ไดร์เวอร์อื่นตามที่ฐานข้อมูลอื่น ๆ ใช้ เช่น

ฐานข้อมูล

ไดร์เวอร์ภายใต้แพ็กแกจ

MySQL com.mysql.jdbc.Driver   (เราใช้ตัวนี้)
Microsoft Access Sun.jdbc.odbc.JdbcOdbcDriver
Microsoft SQL Server com.microsoft.sqlserver.jdc.SQLServerDriver
Oracle Oracle.jdbc.OracleDriver

ยังจำตอนที่เราเพิ่ม Driver ของ MySQL เข้ามาในโปรเจคได้มั้ยค่ะ ลองตามไปดูค่ะว่าคลาสนี้อยู่ที่ไหน ?

java-connect-mysql-step-4-1

ภาพที่ 1 ไดร์เวอร์ MySQL

 

2. สร้างการเชื่อมต่อ

ในส่วนของการเชื่อมต่อจะเกิดขึ้นหลังจากที่เราโหลดไดร์เวอร์แล้ว เราใช้เมธอด   getConnection(URL ของฐานข้อมูล”);  หรือ getConnection(URL ของฐานข้อมูล”, “ชื่อผู้ใช้”, “รหัสผ่าน”); ที่อยู่ในคลาส DriverManager อยู่ภายใต้แพ็คเกจ java.sql ที่เราทำการ import เข้าไว้แล้ว รูปแบบของ URL ของฐานข้อมูลต่าง ๆ เป็นดังนี้

ฐานข้อมูล รูปแบบของ URL
MySQL jdbc:mysql://ชื่อเซอร์เวอร์[หมายเลขพอร์ท]/ชื่อฐานข้อมูล   (เราใช้ตัวนี้)
Microsoft Access jdoc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=ชื่อฐานข้อมูล.mdb
Microsoft SQL Server jdbc:sqlserver://ชื่อเซอร์เวอร์[:หมายเลขพอร์ท];database=ชื่อฐานข้อมูล
Oracle jdbc:oracle:thin:@ชื่อเซอร์เวอร์:หมายเลขพอร์ท:ชื่อฐานข้อมูล

(หมายเหตุ: สามารถตรวจสอบข้อมูลได้ตามเว็บไซต์ของผู้ผลิตฐานข้อมูลนั้น ๆ)

ในการเชื่อมต่อเราจะได้ค่าประเภท Connection กลับมา ด้านล่างเป็นภาพอธิบายเพิ่มเติมค่ะ

java-connect-mysql-step-4-2

ภาพที่ 2 การเชื่อมต่อ MySQL

 

3. สร้างออบเจ็กต์ Statement พร้อมกับเตรียมส่งคำสั่ง SQL

ในการสร้างออบเจ็กต์ Statement ที่ใช้ส่งคำสั่ง SQL ไปประมวลผลนั้นมี 3 คำสั่งคือ Statement, PreparedStatement และ CallableStatement ซึ่งมีความสัมพันธ์กันดังภาพที่ 3

java-connect-mysql-step-4-3

ภาพที่ 3 Interface

จากภาพที่ 3 จะเห็นว่า interface <<Statement>> ให้ <<PreparedStatement>> สืบทอดไปใช้งาน และ <<CallableStatement>> ก็สืบทอดมาจาก <<PreparedStatement>>

Statement ใช้สำหรับส่งคำสั่ง SQL ไปฐานข้อมูล

PreparedStatement  ก็ใช้ส่งคำสั่ง SQL เช่นกัน แต่นิยมใช้สำหรับคำสั่ง SQL ที่มีรูปแบบเดิม เปลี่ยนเฉพาะค่าพารามิเตอร์ (parameter) ที่ส่งไป ในกระบวนการทำงาน มันจะแปลงคำสั่งรอไว้ แล้วเราจะ Set ค่า พารามิเตอร์ให้ทีหลังแทนที่ตำแหน่งเครื่องหมาย “ ?” ที่เราใส่ไว้ในคำสั่ง SQL (จะได้เขียนในต่อต่อ ๆ ไป)

และ CallableStatement  เราใช้เรียก stored procedure

 

java-connect-mysql-step-4-4

ภาพที่ 4 สร้าง Statement พร้อมกับส่งคำสั่ง SQL

 

4. ส่งคำสั่งไปประมวลผล

คำสั่งในการประมวลผล ก็คือเมธอดต่าง ๆ ที่อยู่ใน interface ทั้ง 3 ตัว ตามภาพที่ 3 เรามาทำความรู้จักกับเมธอด 2 ตัวแรกกันก่อนค่ะ

4.1 executeQuery();  เราใช้กับคำสั่ง SQL ในการดึงข้อมูลขึ้นมาแสดง ซึ่งก็คือคำสั่ง SELECT เมธอดนี้จะคืนค่า (return) ข้อมูลกลับมาในรูปแบบคล้าย ๆ กับตาราง มีประเภทข้อมูลเป็น  ResultSet  การจะนำข้อมูลภายในออกมาเราจะใช้ร่วมกับคำสั่ง while loop และเมธอด next()  เพื่อวนนำค่าที่มีออกมาแสดง โดยใช้เมธอดในการดึงค่าคือ  getXxx(“ชื่อฟิลด์”)  หรือ  getXxx(“ตัวเลขตำแหน่งฟิลด์”)  โดยที่ Xxx คือชนิดข้อมูลที่ดึงออกมา

4.2  executeUpdate();  เราใช้กับคำสั่งที่สั่งไปแล้วมีการเปลี่ยนแปลงของข้อมูลเกิดขึ้น เช่น การเพิ่มข้อมูล (INSERT) เมื่อเพิ่มเข้าไปแล้วข้อมูลก็เปลี่ยนแปลงคือเพิ่มขึ้นมา การลบข้อมูล(DELETE) เมื่อสั่งลบข้อมูล ข้อมูลก็เปลี่ยนแปลงคือถูกลบออกไป การแก้ไขปรับปรุงข้อมูล (UPDATE) ข้อมูลที่ถูกแก้ไขก็เปลี่ยนแปลงไป เหล่านี้เป็นต้น ดังนั้นค่าได้ได้กลับมาจึงเป็นประเภท int คือค่าของแถวที่มีการเปลี่ยนแปลงไป

 

5. การแสดงผล

ในการแสดงผลเราใช้ while loop และดึงค่าออกมาแสดงด้วยเมธอด getXXX() ตามประเภทของข้อมูล โดยสามารถส่งพารามิเตอร์ไปได้ 2 ลักษณะตามโค้ดด้านล่าง

java-connect-mysql-step-4-5

ภาพที่ 5 ผลลัพธ์

 

6. ปิดการเชื่อมต่อ

สำหรับการปิดการเชื่อมต่อก็ทำเพียงแค่การไป . (เครื่องหมายจุด .) เมธอด close( )  เท่านั้น หากเราต้องการปิดการเชื่อมต่อของ ResultSet ด้วย ก็สามารถทำได้โดยการ เขียนแบบนี้ result.close();

จบไปแล้วนะคะสำหรับการอธิบายโค้ด สิ่งหนึ่งที่เราทำเป็นประจำก็คือ เมื่อเจอคำศัพท์ที่ไม่รู้ความหมาย เราก็จะค้นหาคำตอบอยู่เสมอว่ามันคืออะไร แล้วผู้อ่านเจอคำศัพท์ที่ไม่ทราบความหมายบ้างหรือเปล่าคะ ? ค่อย ๆ สะสมความรู้ ตั้งคำถาม และค้นคว้าหาคำตอบอยู่เสมอ แล้วเราก็จะเก่งขึ้นเรื่อย ๆ ค่ะ

ในตอนต่อไปเราจะเริ่มปรับโค้ดกันแล้วนะคะ อย่าลืมทบทวน ฝึกเขียนโปรแกรม ครั้งแรกเขียนตาม ครั้งที่สองเขียนเอง ลืมอะไรไปก็กลับมาดูได้ เขียนไปจนกว่าจะจำได้ขึ้นใจค่ะ โค้ดไม่กี่บรรทัด สู้ ๆ นะคะ 🙂


เรื่องที่เกี่ยวข้อง
– Java Basic


 

ธมนวรรณ มณีจันทร์

ธมนวรรณ มณีจันทร์

|:- เราเชื่อมั่นว่าการเสียสละและการแบ่งปันจะทำให้โลกใบนี้สวยงามมากขึ้น ทุกๆ จุดเริ่มต้นของการเรียนรู้ นำไปสู่การเรียนรู้ถัดไป เว็บไซต์แห่งนี้ขอเป็นส่วนหนึ่งของการแบ่งปันความรู้ที่ไม่มีที่สิ้นสุด มาร่วมกันผลักดันโลกของเราให้หมุนไปพร้อมกับพลังแห่งความรักด้วยกันนะคะ :) >>> |:- About Me! -:|    

1 thought to “Java เชื่อมต่อ MySQL ตอนที่ 4”

  1. ขอบคุณคะสำหรับความรู้ ช่วยได้มากเลย

Comments are closed.