Contenu connexe
Similaire à lesson4 JSP (20)
Plus de Kukik Kanoknuan (6)
lesson4 JSP
- 2. 2
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
DAO (Data Access Objects)
เป็น application program interface (API)กับ Visual Basic ของ Microsoft ที่ให้ผู้เขียนโปรแกรมขอ
เข้าถึงฐานข้อมูล Microsoft Access ได้ DAO เป็นอินเตอร์เฟซแรกแบบ object-oriented กับฐานข้อมูลของ
เพื่อให้ programmer สามารถเข้าใช้งาน database ประเภทต่างๆ ได้โดยง่าย
JavaBean
ในการเขียน JSP สําหรับระบบใหญ่ๆ ส่วนใหญ่จะไม่นิยมใส่ java code ลงไปในไฟล์ JSP สิ่งที่ อยู่
ในไฟล์มักจะเป็นเพียง HTML code และค่าของ variables(data) ต่างๆ ที่ได้มาจาก JavaBeans เท่านั้น
ข้อดีของ การใช้ JavaBean
- สามารถทํางานได้บนทุกๆ ระบบปฏิบัติการ โดยที่ไม่ต้องทําการ Compile ใหม่ทุกครั้ง
- มีการ load ลงหน่วยความจําเพียงครั้งเดียวจนกว่าจะมีการเลิกใช้งานโปรแกรม
- สามารถนํา Component ที่เขียนมาแล้ว กลับมาใช้ใหม่ได้อีก
- สามารถนําความรู้ที่ใช้ในภาษา Java มาใช้ในการเขียนโปรแกรมร่วมด้วยได้
- 3. 3
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
JSP & Servlet
JavaServer Pages (JSP) เป็นเทคโนโลยีการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์ที่ช่วยให้การสร้างหน้าเว็บ
แบบไดนามิกและการประยุกต์ใช้ซึ่งทําได้โดยการฝังรหัส Java เป็น HTML, XML, DHTML, หรือประเภท
เอกสารอื่น ๆ เมื่อเว็บเบราว์เซอร์ทําให้คําขอไปยังที่เก็บโปรแกรม Java ซึ่งตามปกติจะเป็นเว็บเซิร์ฟเวอร์,
หน้าคงถูกแปลงอยู่เบื้องหลังและ แสดงเป็นเนื้อหาแบบไดนามิกกับตัว JSP
Servlets เป็น Componetด้านเซิร์ฟเวอร์ที่มีประสิทธิภาพ ในการพัฒนาโปรแกรมฝั่งเซิร์ฟเวอร์ ทํา
หน้าที่ จัดการกับ request และ response ต่างๆ และส่งค่าไปแสดงผลใน JSP
ภาพที่อธิบายถึงการทํางานของ Servlet และ JSP เมื่อมีผู้ใช้มาใช้งานหน้าเว็ปผ่าน เว็ปBrowserซึ่ง
การทํางานคือ เราจะมี Web server application ตัวนึงเช่น Apache Tomcat ไว้รองรับ request ต่างๆๆ แล้วก็
จะส่งต่อให้ container ไปเรียก servlet ให้ทํางานตามที่ request มาเช่น request ไปเพื่อขอข้อมูลลูกค้า servlet
ก็จะไปทําการดึงข้อมูลลูกค้าออกมา แล้วก็ส่งค่าต่างๆๆไปที่ JSP
- 4. 4
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
เอสคิวแอล (SQL)
SQL ย่อมาจาก structured query language คือภาษาที่ใช้ในการเขียนโปรแกรม เพื่อจัดการกับ
ฐานข้อมูลโดยเฉพาะ เป็นภาษามาตราฐานบนระบบฐานข้อมูลเชิงสัมพันธ์และเป็นระบบเปิด (open system)
หมายถึงเราสามารถใช้คําสั่ง sql กับฐานข้อมูลชนิดใดก็ได้ และ คําสั่งงานเดียวกันเมื่อสั่งงานผ่าน ระบบ
ฐานข้อมูลที่แตกต่างกันจะได้ ผลลัพธ์เหมือนกัน ทําให้เราสามารถเลือกใช้ฐานข้อมูล ชนิดใดก็ได้โดยไม่ติด
ยึดกับฐานข้อมูลใดฐานข้อมูลหนึ่ง นอกจากนี้แล้ว SQL ยังเป็นชื่อโปรแกรมฐานข้อมูล ซึ่งโปรแกรม SQL
เป็นโปรแกรมฐานข้อมูลที่มีโครงสร้างของภาษาที่เข้าใจง่าย ไม่ซับซ้อน มีประสิทธิภาพการทํางานสูง
สามารถทํางานที่ซับซ้อนได้โดยใช้คําสั่งเพียงไม่กี่คําสั่ง โปรแกรม SQL จึงเหมาะที่จะใช้กับระบบ
ฐานข้อมูลเชิงสัมพันธ์ และเป็นภาษาหนึ่ง
ปัจจุบันมีซอฟต์แวร์ระบบจัดการฐานข้อมูล (DBMS ) ที่สนับสนุนการใช้คําสั่ง SQL เช่น Oracle ,
DB2, MS-SQL, MS-Access นอกจากนี้ภาษา SQL ถูกนํามาใช้เขียนร่วมกับโปรแกรมภาษาต่างๆ เช่น ภาษา
c/C++ , VisualBasicและ Java
ประเภทของคาสั่งภาษา SQL
1. ภาษานิยามข้อมูล(Data Definition Language : DDL)เป็นคําสั่งที่ใช้ในการสร้างฐานข้อมูล
กําหนดโครงสร้างข้อมูลว่ามี Attribute ใด ชนิดของข้อมูล รวมทั้งการเปลี่ยนแปลงตาราง และการสร้างดัชนี
คําสั่ง : CREATE,DROP,ALTER
ภาษา DDLประกอบด้วย 3 คําสั่งคือ
• คาสั่งการสร้าง (Create) ได้แก่ การสร้างตารางและอินเด็กซ์
CREATE TABLE <Table name>
( Attribute 1 Type 1,Attribute 2 Type 2 ,)
CREATE Unique Index on X<Table name>
เช่น
CREATE TABLE S11
(SNO CHAR(5) Not NULL,SNAME CHAR(10) ,STATUS integer)
CREATE Unique Index XS11 on S11(SNO)
- 5. 5
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
• คาสั่งเปลี่ยนแปลงโครงสร้าง
ALTER TABLE <ชื่อตารางที่ตั้งขึ้น >
<คําสั่งการเปลี่ยนแปลง> (<ชื่อคอลัมน์ประเภทข้อมูล>);
ตัวอย่างเช่น
ALTER TABLE SUPPLIER
ADD (LAST_SNAME Char(10));
• คาสั่งยกเลิก (Drop) ต่างๆ
การลบโครงสร้างตาราง
DROP TABLE <ชื่อตารางที่ตั้งขึ้น >
2. ภาษาจัดการข้อมูล (Data Manipulation Language :DML)หลังจากที่เราสร้าง
โครงสร้างฐานข้อมูลขึ้นแล้ว คําสั่งต่อไปในการป้ อนข้อมูลลงในฐานข้อมูลและเปลี่ยนแปลงข้อมูลู ในฐาน
ขอม้ลู โดยการใชภาษาสําหรับการจัดการข้อมูล (Data ManipulationLanguage-DML) ใชจัดการข้อมูล
ภายในตารางภายในฐานข้อมูล และภาษาแก้ไขเปลี่ยนแปลงตาราง
แบ่งออกเป็น 4 Statement คือ
• Select Statement :การเรียกหา (Retrieve) ข้อมูลจาก ฐานข้อมูล
• Insert Statement :การเพิ่มเติมข้อมูลลงใน ตาราง (Table) จาก ฐานข้อมูล
• Delete Statement: การลบข้อมูลลงออกจาก ตาราง (Table) จาก ฐานข้อมูล
• Update Statement: การเปลี่ยนแปลงข้อมูลลงใน ตาราง (Table) จาก ฐานข้อมูล
- 6. 6
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
3. ภาษาควบคุมข้อมูล (Data Control Language : DCL)ใช้เป็นภาษาที่ใช้ควบคุมระบบ
รักษาความปลอดภัย ของฐานข้อมูล ประกอบด้วยคําสั่ง 2 คําสั่งคือ
• คําสั่งGRANT เป็นคําสั่งที่ใช้กําหนดสิทธิให้กับผู้ใช้แต่ละคนให้มีสิทธกระทําการใดกับข้อมูลเช่น
การเพิ่มข้อมูล การแก้ไข หรือ การลบข้อมูลในตารางใดบ้าง
• คําสั่งREVOKE เป็นคําสั่งให้มีการยกเลิกสิทธนั้นหลังจากที่ได้GRANT แล้ว
ประโยชน์ของภาษา SQL
1. สร้างฐานข้อมูลและ ตาราง
2. สนับสนุนการจัดการฐานข้อมูล ซึ่งประกอบด้วย การเพิ่ม การปรับปรุง และการลบข้อมูล
3. สนับสนุนการเรียกใช้หรือ ค้นหาข้อมูล
คาสั่งเพิ่มข้อมูล (Insert Statement)
Insert Structure :: การเพิ่มข้อมูลทุกคอลัมน์ ที่ได้สร้างไว้
Subject : การเพิ่มข้อมูลทุกคอลัมน์ ที่ได้สร้างไว้
syntax : INSERT INTO table_name
VALUES ( 'value_1', 'value_2', ..., 'value_n' );
comment : INSERT INTO person
VALUES ( 1, 'bamboo', 'labcode' );
Insert Structure :: การเพิ่มข้อมูลเฉพาะคอลัมน์ ที่กาหนด
Subject : การเพิ่มข้อมูลเฉพาะคอลัมน์ ที่กําหนด
syntax : INSERT INTO table_name ( column_name_1, column_name_2, ...,
column_name_n )
VALUES ( 'value_1', 'value_2', ..., 'value_n' );
comment : INSERT INTO person ( first_name, last_name )
VALUES ( 'bamboo', 'labcode' );
- 7. 7
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
Insert Structure :: การเพิ่มข้อมูลครั้งละหลาย record
Subject : การเพิ่มข้อมูลครั้งละหลาย record
Syntax : INSERT INTO table_name ( column_name_1, column_name_2, ...,
column_name_n )
VALUES ( 'value_1', 'value_2', ..., 'value_n' ),
( 'value_1', 'value_2', ..., 'value_n' ),
( 'value_1', 'value_2', ..., 'valuhttp://www.bamboolabcode.com/article/savee_n' );
comment : INSERT INTO person ( first_name, last_name )
VALUES ( 'bamboo', 'labcode' ),
( 'david', 'beckhame' ),
( 'micheal', 'owen' );
Insert Structure :: การเพิ่มข้อมูลครั้งละหลาย record
Subject : การเพิ่มข้อมูลครั้งละหลาย record
syntax : INSERT INTO table_name ( column_name_1, column_name_2, ...,
column_name_n )
VALUES ( 'value_1', 'value_2', ..., 'value_n' ),
( 'value_1', 'value_2', ..., 'value_n' ),
( 'value_1', 'value_2', ..., 'valuhttp://www.bamboolabcode.com/article/savee_n' );
comment : INSERT INTO person ( first_name, last_name )
VALUES ( 'bamboo', 'labcode' ),
( 'david', 'beckhame' ),
( 'micheal', 'owen' );
- 8. 8
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
Insert Structure :: การเพิ่มข้อมูล โดยข้อมูลได้จากการคัดลอกมาจากตารางอื่น
subject : การเพิ่มข้อมูล โดยข้อมูลได้จากการคัดลอกมาจากตารางอื่น
syntax : INSERT INTO table_name ( column_name_1, column_name_2, ...,
column_name_n )
SELECT column_name_1, column_name_2, ..., column_name_n
FROM table_name
WHERE condition;
comment : INSERT INTO customer ( id, customer_name, customer_sex )
select person_id, person_name, person_sex
FROM person
WHERE person_sex = 'man';
คําสั่งการเพิ่มข้อมูลในตารางจะใช้คําสั่ง INSERT จะมีอยู่ 2 รูปแบบคือ การเพิ่มข้อมูล
เข้าไปทีละแถว และ การเพิ่มข้อมูลโดยการดึงกลุ่มข้อมูลด้วยคําสั่งค้นหาข้อมูล
คําสั่งการเพิ่มข้อมูลทีละแถวโดยระบุข้อมูลที่จะ INSERTเข้าไปโดยตรง รูปแบบของคําสั่งเป็น
ดังนี้
INSERT INTO Tablename (column 1, column 2,…)
VALUES ( 'Value1', 'Value2', 'Value..n' )"
INSERT INTO เป็นคําสั่งที่ต้องมีทุกครั้งที่ต้องการเพิ่มข้อมูล
tablename หมายถึงชื่อของตารางที่จะทําการเพิ่มข้อมูล
column 1 หมายถึงคอลัมน์ที่ต้องการเพิ่มข้อมูล
Value1 หมายถึงค่าต่างๆที่จะเพิ่มให้กับฟิลด์นั้นๆ
- 9. 9
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
พารามิเตอร์ค่าข้อมูลนั้น คือ ค่าของข้อมูลที่เราจะกําหนด ให้แต่ละคอลัมน์ โดยเรียง
ตามลําดับที่ปรากฏในตาราง ซึ่งต้องเป็นไปตามเงื่อนไขดังนี้
ค่าของข้อมูลแต่ละคอลัมน์ต้องคั่นด้วยเครื่องหมาย ,ค่าของข้อมูลนั้นต้องมีชนิดที่ตรงกัน
กับชนิดของข้อมูลของคอลัมน์
ตัวอย่าง ถ้าต้องการจะใส่ข้อมูลทุกคอลัมน์ลงในตารางลูกค้า
INSERT INTO SALESTAB
VALUES( 1001, “Chaiwat”, “Bangkok”,0.12);
ผลของคําสั่งนี้ จะมีข้อมูลปรากฏในทุกคอลัมน์ในตารางพนักงานขายดังนี้
SALENO SALENAME ADDRESS SALECOM
1001 Chaiwat Bangkok 0.12
ตัวอย่าง ถ้าต้องการจะใส่ข้อมูลบางคอลัมน์ เช่น ชื่อเมือง Bangkok ชื่อลูกค้า Arlee และ
หมายเลขลูกค้า 2001 ลงในตารางลูกค้า ใช้คําสั่งดังนี้
INSERT INTO CUSTOMERSTAB(ADDRESS,CUSNAME,CUSNO)
VALUES( 'Bangkok','Arlee', 2001);
ผลของคําสั่งในตารางลูกค้า จะทําให้คอลัมน์ ADDRESS มีค่าเป็น Bangkok คอลัมน์
CUSNAME จะมีค่าเป็น Arlee คอลัมน์ CUSNO จะมีค่าเป็น 2001ดังนี้
CUSNO CUSNAME ADDRESS RATING SALENO
2001 Arlee Bangkok
จะเห็นว่าไม่ได้ใส่ค่าในคอลัมน์ RATING และ SALENO ไว้ดังนั้นทั้งสองคอลัมน์นี้จะ
มีค่าเป็น NULL โดยอัตโนมัติ
- 10. 10
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
คําสั่งการเพิ่มข้อมูลโดยการดึงกลุ่มข้อมูลด้วยคําสั่งค้นหาข้อมูล ในภาษา SQL สามารถ
ใช้คําสั่ง INSERT ในการนําค่าหรือหาค่าจากตารางหนึ่งแล้วไปใส่ไว้ในอีกตาราหนึ่งได้โดยได้
ค่านั้นมาจากการสอบถามข้อมูล รูปแบบเป็นดังนี้
INSERT INTO Tablename (column 1, column 2,…)
SELECT statement;
INSERT INTO <table name>[(column 1, column 2,…)]
SELECT statement;
INSERT INTO เป็นคําสั่งที่ต้องมีทุกครั้งที่ต้องการเพิ่มข้อมูล
tablename หมายถึงชื่อของตารางที่จะทําการเพิ่มข้อมูล
column 1 หมายถึงคอลัมน์ที่ต้องการเพิ่มข้อมูล
SELECT statement ประโยคคําสั่ง SELECTที่ต้องการข้อมูลอีกตารางหนึ่ง
ตัวอย่าง ถ้าต้องการใส่ข้อมูลพนักงานลงในตาราง BANGKOKSTAFF โดยข้อมูลที่จะ
ใส่ลงไปนั้นได้มาจากตารางพนักงานขายที่อาศัยอยู่ใน “Bangkok“
INSERT INTO BANGKOKSTAFF
SELECT *
FROM SALESTAB
WHERE ADDRESS = ‘Bangkok’;
- 14. 14
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
5.สร้าง Fields ชื่อ member_id เพื่ออ้างอิงข้อมูล และกําหนดค่าต่างๆดังนี้
Type กําหนดชนิดฟิลด์เป็น int
Length กําหนดขนาดฟิลด์ตามความต้องการ
Decimals กําหนดจํานวนหลักตัวเลข หลังจุดทศนิยม (กรณีที่เลือกฟิลด์เป็นชนิดตัวเลขทศนิยมเท่านั้น
Allow Null ติ๊กถูกคือ อนุญาตให้ฟิลด์นี้เป็นค่าว่างได้แต่ถ้าไม่ติ๊กก็เท่ากับห้ามมีค่าว่าง
ช่องว่าง กาหนดฟิลด์เป็น ไพรมารีคีย์
6.สร้าง Fields ต่างๆ ตามข้อมูลที่ต้องการจัดเก็บลงบนฐานข้อมูล
- 25. 25
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
Code Class MembersBean
packagecom.model;
publicclassMembersBean {
privateintmember_id ;
private String member_username;
private String member_password ;
private String member_firstname ;
private String member_lastname ;
private String member_sex ;
private String member_cartoon[] ;
private String member_address ;
private String member_county ;
private String member_phone ;
private String member_email ;
private String member_image ;
publicintgetMember_id() {
returnmember_id;
}
publicvoidsetMember_id(intmember_id) {
this.member_id = member_id;
}
public String getMember_username() {
returnmember_username;
}
publicvoidsetMember_username(String member_username) {
this.member_username = member_username;
}
public String getMember_password() {
returnmember_password;
}
publicvoidsetMember_password(String member_password) {
this.member_password = member_password;
}
public String getMember_firstname() {
returnmember_firstname;
}
publicvoidsetMember_firstname(String member_firstname) {
this.member_firstname = member_firstname;
}
public String getMember_lastname() {
returnmember_lastname;
}
publicvoidsetMember_lastname(String member_lastname) {
this.member_lastname = member_lastname;
}
public String getMember_sex() {
- 26. 26
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
returnmember_sex;
}
publicvoidsetMember_sex(String member_sex) {
this.member_sex = member_sex;
}
public String[] getMember_cartoon() {
returnmember_cartoon;
}
publicvoidsetMember_cartoon(String[] member_cartoon) {
this.member_cartoon = member_cartoon;
}
public String getMember_address() {
returnmember_address;
}
publicvoidsetMember_address(String member_address) {
this.member_address = member_address;
}
public String getMember_county() {
returnmember_county;
}
publicvoidsetMember_county(String member_county) {
this.member_county = member_county;
}
public String getMember_phone() {
returnmember_phone;
}
publicvoidsetMember_phone(String member_phone) {
this.member_phone = member_phone;
}
public String getMember_email() {
returnmember_email;
}
publicvoidsetMember_email(String member_email) {
this.member_email = member_email;
}
public String getMember_image() {
returnmember_image;
}
publicvoidsetMember_image(String member_image) {
this.member_image = member_image;
}
}
- 27. 27
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
Code Class MemberDAO
packagecom.manager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importcom.controller.DBConnect;
importcom.model.MembersBean;
public class MemberDAO {
staticDBConnectdbc = new DBConnect();
static Statement stmt;
public static booleanaddMembers(MembersBeanmem){
String sql = "INSERT INTO
membersbook(member_username,member_password,member_firstname," +
"member_lastname,member_sex,member_address,member_county," +
"member_phone,member_email,member_image) " +
"VALUES('"+mem.getMember_username()+"','"+mem.getMember_passwo
rd()+"'" +",'"+mem.getMember_firstname()+
"','"+mem.getMember_lastname()+"'"
+",'"+mem.getMember_sex()+"','"+mem.getMember_address()+
"','"+mem.getMember_county()+"'"
+",'"+mem.getMember_phone()+"','"+mem.getMember_email()+
"','"+mem.getMember_image()+"')";
try{
dbc.createConnection();
stmt = dbc.getStatement();
stmt.executeUpdate(sql);
}catch (SQLException ex){
ex.printStackTrace();
return false;
}
return true;
}
}
- 28. 28
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
Code Class CartoonBookServlet
packagecom.controller;
importjava.io.IOException;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.manager.MemberDAO;
importcom.model.MembersBean;
/**
* Servlet implementation class CartoonBookServlet
*/
@WebServlet("/CartoonBookServlet")
public class CartoonBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
publicCartoonBookServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
- 29. 29
การเพิ่มข้อมูลลงฐานข้อมูลด้วยภาษา JSP&SQL
/**
* @see HttpServlet#doPost(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
String firstname = request.getParameter("firstname");
String lastname = request.getParameter("lastname");
String sex = request.getParameter("sex");
String cartoon[] = request.getParameterValues("cartoon");
String address = request.getParameter("address");
String county = request.getParameter("county");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String image = request.getParameter("image");
String page = "ProfileCartoonBook.jsp";
System.out.println("username"+username);
System.out.println("password"+password);
System.out.println("firstname"+firstname);
System.out.println("lastname"+lastname);
System.out.println("sex"+sex);
System.out.println("cartoon"+cartoon);
System.out.println("address"+address);
System.out.println("county"+county);
System.out.println("phone"+phone);
System.out.println("email"+email);
System.out.println("image"+image);
MembersBeanmem = new MembersBean();
mem.setMember_username(username);
mem.setMember_password(password);
mem.setMember_firstname(firstname);
mem.setMember_lastname(lastname);
mem.setMember_sex(sex);
mem.setMember_cartoon(cartoon);
mem.setMember_address(address);
mem.setMember_county(county);
mem.setMember_phone(phone);