การเชื่อมต่อฐานข้อมูล JSP
⚡ สรุปอย่างชาญฉลาด
การเชื่อมต่อฐานข้อมูล JSP ช่วยให้เว็บแอปพลิเคชันสามารถจัดเก็บและจัดการข้อมูลจำนวนมากได้โดยการเชื่อมโยงหน้า JSP กับฐานข้อมูลเชิงสัมพันธ์ เอกสารนี้จะอธิบายวิธีการสร้างการเชื่อมต่อฐานข้อมูล JSP กับฐานข้อมูลเชิงสัมพันธ์ MySQL สร้างตาราง แทรกข้อมูล และดำเนินการเลือก แทรก อัปเดต และลบข้อมูลโดยใช้แท็ก SQL ของ JSTL

การเชื่อมต่อกับฐานข้อมูลใน JSP
ฐานข้อมูลใช้สำหรับจัดเก็บข้อมูลประเภทต่างๆ ซึ่งมีขนาดใหญ่และมีความจุระดับกิกะไบต์ JSP สามารถเชื่อมต่อกับฐานข้อมูลดังกล่าวเพื่อสร้างและจัดการระเบียนได้
ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับวิธีการสร้างตารางในฐานข้อมูล และวิธีการสร้างเรคคอร์ดในตารางเหล่านี้ผ่าน JSP
สร้างตาราง
In ฐานข้อมูล MySQLเราสามารถสร้างตารางในฐานข้อมูลโดยใช้ไคลเอ็นต์ MYSQL ใดก็ได้ ในที่นี้เราใช้ไคลเอ็นต์ PHPMyAdmin และในนั้นเรามีตัวเลือก "ใหม่" เพื่อสร้างตารางใหม่โดยใช้ภาพหน้าจอด้านล่าง
ในส่วนนี้ เราต้องกำหนดชื่อตารางเป็น guru_test และสร้างฟิลด์สองฟิลด์ คือ emp_id และ emp_name
- Emp_id มีชนิดข้อมูลเป็น int
- ตัวแปร Emp_name มีชนิดข้อมูลเป็น varchar
อีกทางเลือกหนึ่งคือการใช้พรอมต์คำสั่งและเปลี่ยนไปยังไดเร็กทอรี MYSQL:
C:\> C:\>cd Program Files\MY SQL\bin C:\>Program Files\MySql\bin>
เราสามารถเข้าสู่ระบบฐานข้อมูลได้ดังนี้:
C:\Program Files\MYSQL\bin>mysql –u gururoot –p Enter Password: ******* Mysql>
สร้างตาราง guru_test ในฐานข้อมูลชื่อ... Guruทดสอบตามขั้นตอนต่อไปนี้ในพรอมต์ MYSQL:
Mysql> use GuruTest; MySql> create table guru_test( Emp_id int NOT NULL, Emp_name varchar(11), ); Once you execute this you get the following: Query OK, 0 rows affected(0.10 sec) MySQl> select * from guru_test; Query OK, 0 rows affected(0.10 sec)
ขั้นแรก ระบบจะแทรกข้อมูลโดยใช้ INSERT สอบถาม และจากนั้นเราสามารถใช้ SELECT แบบสอบถามเพื่อตรวจสอบว่าตารางถูกสร้างขึ้นหรือไม่
สร้างบันทึก
หลังจากสร้างตารางแล้ว เราจำเป็นต้องสร้างเรคอร์ดลงในตาราง guru_test โดยใช้คำสั่ง INSERT ดังที่แสดงด้านล่าง:
บันทึกที่ป้อนที่นี่คือ:
- 1 และกูรู emp1
- 2 และกูรู emp2
MySql>INSERT INTO `couch_tomato_db`.`guru_test` (`emp_id`, `emp_name`) VALUES ('1', 'guru emp1'); Query OK, 1 row affected (0.05 sec) MySQL>INSERT INTO `couch_tomato_db`.`guru_test` (`emp_id`, `emp_name`) VALUES ('2', 'guru emp2'); Query OK, 1 row affected (0.05 sec)
JSP Operations: แทรก, อัพเดต, ลบ, เลือก
การใช้ JSP ช่วยให้เราสามารถดำเนินการต่างๆ กับฐานข้อมูลได้มากมาย เราสามารถแทรกข้อมูลและลบข้อมูลที่ไม่ต้องการได้ หากต้องการแก้ไขข้อมูลใดๆ ก็สามารถทำได้โดยใช้คำสั่งอัปเดต ส่วนคำสั่ง SELECT จะช่วยในการดึงข้อมูลที่ต้องการ
เลือก
การดำเนินการเลือกใช้เพื่อเลือกระเบียนจากตาราง
ตัวอย่าง:
ในตัวอย่างนี้ เราจะเรียนรู้เกี่ยวกับการดำเนินการเลือก (select) เพื่อดึงข้อมูลจากตาราง guru_test ซึ่งสร้างขึ้นในส่วนด้านบน
<%@ page import="java.io.*,java.util.*,java.sql.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Database JSP1</title> </head> <body> <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/GuruTest" user="gururoot" password="guru"/> <sql:query dataSource="${snapshot}" var="result"> SELECT * from guru_test; </sql:query> <table> <tr> <th>Guru ID</th> <th>Name</th> </tr> <c:forEach var="row" items="${result.rows}"> <tr> <td><c:out value="${row.emp_id}"/></td> <td><c:out value="${row.emp_name}"/></td> </tr> </c:forEach> </table> </body> </html>
คำอธิบายของรหัส:
Code 1 แนว: ในที่นี้เรากำลังนำเข้า io, util และ SQL ไลบรารี่ของจาวา
Code 3 แนว: ในที่นี้เรากำลังนำเข้าไลบรารีหลักของ JSTL และกำหนดคำนำหน้าเป็น c ซึ่งจะช่วยให้ได้ผลลัพธ์ออกมา
Code 4 แนว: ในที่นี้เราได้นำเข้าไลบรารี SQL ของ JSTL และกำหนดคำนำหน้าเป็น sql ซึ่งจะช่วยในการดำเนินการทาง SQL
Code บรรทัดที่ 15-17: ในที่นี้ เราใช้ SQL ในการเชื่อมต่อแหล่งข้อมูล โดยตั้งชื่อตัวแปรว่า “snapshot” และใช้ไดรเวอร์ JDBC นอกจากนี้ยังเพิ่มชื่อผู้ใช้และรหัสผ่านเป็น “gururoot” และ “guru” ด้วย
Code บรรทัดที่ 19-21: ในที่นี้เราใช้คำสั่ง SQL ในส่วนของคำสั่งเลือก (select query)
Code บรรทัดที่ 31-32: เรากำลังพิมพ์ผลลัพธ์สำหรับรหัสพนักงานและชื่อพนักงาน ซึ่งดึงมาจากผลลัพธ์ของคำสั่งค้นหา โดยใช้ลูป foreach ในการพิมพ์ผลลัพธ์
เมื่อคุณรันโค้ดข้างต้น คุณจะได้รับผลลัพธ์ดังต่อไปนี้:
Output:
ในส่วนนี้ ข้อมูลทั้งสองจะถูกดึงมาจากฐานข้อมูล:
- 1 กูรู em1
- 2 กูรู em2
สิ่งที่ใส่เข้าไป
ตัวดำเนินการ Insert ใช้สำหรับแทรกข้อมูลลงในตาราง ฐานข้อมูล.
ตัวอย่าง:
ในตัวอย่างนี้ เราจะเรียนรู้วิธีการแทรกข้อมูลลงในตาราง guru_test
<%@ page import="java.io.*,java.util.*,java.sql.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="gurucore"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="gurusql"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Database JSP1</title> </head> <body> <gurusql:setDataSource var="guru" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/GuruTest" user="gururoot" password="guru"/> <gurusql:update dataSource="${guru}" var="guruvar"> INSERT INTO guru_test VALUES (3, 'emp emp3'); </gurusql:update> </body> </html>
คำอธิบายของรหัส:
Code บรรทัดที่ 19-20: ตรงนี้เรากำลังแทรกข้อมูลลงในตาราง guru_test ของ Guruฐานข้อมูลทดสอบ ข้อมูลที่แทรกเข้าไปคือ: empID – 3 และ empname – emp emp3ข้อมูลเหล่านี้จะถูกแทรกเข้าไปในตาราง เมื่อคุณรันโค้ด ข้อมูลจะถูกแทรกเข้าไปในตาราง guru_test โดยมีค่าเป็น 3 และ emp emp3.
หมายเหตุ ในที่นี้เราไม่ได้แสดงผลลัพธ์เนื่องจากเราเพียงแค่แทรกข้อมูลลงในตารางเท่านั้น เราสามารถดึงข้อมูลได้โดยใช้คำสั่ง `select * from guru_test` หากแทรกข้อมูลสำเร็จ เราจะได้ค่าเป็น 3 และ emp3หากไม่ได้แทรกข้อมูลลงไป ตัวเลข 3 จะไม่ปรากฏในระเบียนในตาราง
ลบ
นี่คือคำสั่งลบข้อมูล ซึ่งเราจะลบข้อมูลออกจากตาราง guru_test
ตัวอย่าง:
ในที่นี้เราจะใช้คำสั่งลบเพื่อลบเรคอร์ดออกจากตาราง guru_test เรคอร์ดที่จะถูกลบจะต้องถูกกำหนดไว้ในตัวแปร “guruid” และเรคอร์ดที่เกี่ยวข้องจะถูกลบออกจากฐานข้อมูล
<%@ page import="java.io.*,java.util.*,java.sql.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="gurucore"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="gurusql"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Database JSP1</title> </head> <body> <gurusql:setDataSource var="guru" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/GuruTest" user="gururoot" password="guru"/> <gurucore:set var="guruid" value="3"/> <gurusql:update dataSource="${guru}" var="guruvar"> DELETE FROM guru_test WHERE emp_id = ? <gurusql:param value="${guruid}" /> </gurusql:update> </body> </html>
คำอธิบายของรหัส:
Code 18 แนว: เรากำลังตั้งค่าตัวแปร guruid ซึ่งมีค่าเป็น 3 ซึ่งจะต้องลบออกจากฐานข้อมูล นี่เป็นคีย์หลักของตารางเสมอ ในกรณีนี้ คีย์หลักคือ emp_id
Code บรรทัดที่ 19-22: ในที่นี้เราใช้คำสั่งลบข้อมูลซึ่งมีการกำหนดค่าพารามิเตอร์ในส่วน WHERE โดยพารามิเตอร์ดังกล่าวคือ guruid ซึ่งกำหนดค่าไว้ในบรรทัดที่ 18 จากนั้นข้อมูลที่เกี่ยวข้องจะถูกลบออก
Output:
เมื่อคุณรันโค้ดด้านบน บันทึกที่มี emp_id เป็น 3 จะถูกลบ
หมายเหตุ ในตัวอย่างนี้ เราไม่สามารถแสดงผลลัพธ์ได้เนื่องจากเรากำลังลบเรคอร์ดออกจากตาราง ในการตรวจสอบว่าเรคอร์ดนั้นถูกลบไปแล้วหรือไม่ เราต้องใช้คำสั่ง select “select * from guru_test” ในกรณีนั้น ถ้าเราได้ค่า 3 เป็น emp id แสดงว่าคำสั่งลบไม่สำเร็จ มิฉะนั้น แสดงว่าเรคอร์ดนั้นถูกลบสำเร็จแล้ว
บันทึก
การอัปเดตใช้เพื่อแก้ไขเรกคอร์ดในตาราง
ตัวอย่าง:
<%@ page import="java.io.*,java.util.*,java.sql.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="gurucore"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="gurusql"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Database JSP1</title> </head> <body> <gurusql:setDataSource var="guru" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/GuruTest" user="gururoot" password="guru"/> <gurucore:set var="guruid" value="2"/> <gurusql:update dataSource="${guru}" var="guruvar"> UPDATE guru_test SET emp_name='emp guru99' <gurusql:param value="${guruid}" /> </gurusql:update> </body> </html>
คำอธิบายของรหัส:
Code 18 แนว: ที่นี่เรากำลังตั้งค่าตัวแปร guruid เป็น 2 นี่คือ ID ที่เราต้องการอัปเดตบันทึก
Code บรรทัดที่ 19-22: ในที่นี้เราใช้คำสั่งอัปเดตเพื่ออัปเดตข้อมูลในตาราง guru_test ตามที่กำหนดไว้ในข้อ 18 โดยแทนที่พนักงาน guru2 ด้วยพนักงาน guru99
Output:
เมื่อคุณรันโค้ดข้างต้น ข้อมูลที่มี emp_id เป็น 2 จะถูกเปลี่ยนเป็น 99 ดังนั้น ผลลัพธ์ที่ได้จะแสดง emp “guru99” แทนที่จะเป็น emp “guru2”


