การเชื่อมต่อฐานข้อมูล JSP

⚡ สรุปอย่างชาญฉลาด

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

  • 🗄️ วัตถุประสงค์: ฐานข้อมูลจัดเก็บข้อมูลขนาดหลายกิกะไบต์ ซึ่ง JSP สามารถสร้าง อ่าน และจัดการได้
  • 🧱 สร้างตาราง: สร้างตาราง guru_test ที่มี emp_id และ emp_name โดยใช้ MySQL ลูกค้าหรือข้อความแจ้งเตือน
  • 🔌 การเชื่อมต่อ: แท็ก sql:setDataSource จะระบุไดรเวอร์ JDBC URLชื่อผู้ใช้ และรหัสผ่าน
  • 🔁 ครึด Operaชั่น: คำสั่ง Select, Insert, Update และ Delete จะทำงานผ่านแท็ก SQL ของ JSTL
  • 🔑 พารามิเตอร์: ใช้ sql:param และคีย์หลัก เช่น emp_id เพื่อกำหนดเป้าหมายไปยังระเบียนเฉพาะ

การเชื่อมต่อฐานข้อมูล JSP

การเชื่อมต่อกับฐานข้อมูลใน JSP

ฐานข้อมูลใช้สำหรับจัดเก็บข้อมูลประเภทต่างๆ ซึ่งมีขนาดใหญ่และมีความจุระดับกิกะไบต์ JSP สามารถเชื่อมต่อกับฐานข้อมูลดังกล่าวเพื่อสร้างและจัดการระเบียนได้

ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับวิธีการสร้างตารางในฐานข้อมูล และวิธีการสร้างเรคคอร์ดในตารางเหล่านี้ผ่าน JSP

สร้างตาราง

In ฐานข้อมูล MySQLเราสามารถสร้างตารางในฐานข้อมูลโดยใช้ไคลเอ็นต์ MYSQL ใดก็ได้ ในที่นี้เราใช้ไคลเอ็นต์ PHPMyAdmin และในนั้นเรามีตัวเลือก "ใหม่" เพื่อสร้างตารางใหม่โดยใช้ภาพหน้าจอด้านล่าง

สร้างตารางในฐานข้อมูล JSP

ในส่วนนี้ เราต้องกำหนดชื่อตารางเป็น guru_test และสร้างฟิลด์สองฟิลด์ คือ emp_id และ emp_name

  • Emp_id มีชนิดข้อมูลเป็น int
  • ตัวแปร Emp_name มีชนิดข้อมูลเป็น varchar

สร้างตารางในฐานข้อมูล JSP

อีกทางเลือกหนึ่งคือการใช้พรอมต์คำสั่งและเปลี่ยนไปยังไดเร็กทอรี 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”

คำถามที่พบบ่อย

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

ใช่แล้ว เครื่องมือ AI สามารถตรวจสอบคำสั่ง SQL ที่ต่อกันเป็นสตริง และแนะนำคำสั่งแบบมีพารามิเตอร์หรือคำสั่งเตรียมการ (prepared statements) ซึ่งจะช่วยลดความเสี่ยงจากการโจมตีด้วย SQL injection ได้ แต่ยังคงแนะนำให้ตรวจสอบความปลอดภัยของข้อมูลทั้งหมดที่ป้อนเข้าฐานข้อมูลด้วยตนเองอยู่ดี

เจดีบีซี (Java การเชื่อมต่อฐานข้อมูล (Database Connectivity) คือ API ที่ช่วยให้ Java และแอปพลิเคชัน JSP จะเชื่อมต่อกับฐานข้อมูล โดยจะโหลดไดรเวอร์ เช่น com.mysql.jdbc.Driver และรันคำสั่ง SQL ผ่านการเชื่อมต่อ

ไม่ครับ แท็ก JSTL sql เหมาะสำหรับการเรียนรู้และการสร้างต้นแบบเท่านั้น สำหรับการใช้งานจริง ตรรกะของฐานข้อมูลควรอยู่ในเซิร์ฟเล็ต DAO หรือเฟรมเวิร์กครับping JSP เน้นที่การนำเสนอมากกว่าการสอบถามโดยตรง

สรุปโพสต์นี้ด้วย: