ความหมายของข้อมูล (data) สารสนเทศ (Information) และเทคโนโลยีสารสนเทศ (Information Technology)
กล่าวกันว่าในปัจจุบันนี้โลกเข้าสู่ยุคของข้อมูลข่าวสาร สารสนเทศ (Information) มีความจำเป็นทั้งภาครัฐและเอกชน จะต้องอาศัยสารสนเทศเข้ามาช่วยในการตัดสินใจ (Make decision) การตัดสินใจเป็นกิจกรรมที่สำคัญจะต้องตัดสินใจให้ถูกต้องและรวดเร็ว การตัดสินใจที่ล่าช้าจะก่อให้เกิดผลเสียตามมามากมาย อาจทำให้เกิดการสูญเสียโอกาสในการแข่งขันหรือการแก้ปัญหาในระดับชาติ (ประสงค์ ปราณีตาพลกลังและคณะ : 2541 : 1) จากคำกล่าวข้างต้นจะเห็นได้ว่าสารสนเทศ (Information) เป็นสิ่งที่มีความสำคัญยิ่งในยุคของสังคมโลกปัจจุบัน ดังนั้นจึงจำเป็นยิ่ง ที่นักการศึกษาในฐานะที่จะต้องเป็นผู้เกี่ยวข้องกับการให้ความรู้แก่ผู้อื่น จะต้องมีความเข้าใจในเรื่องของสารสนเทศ เมื่อกล่าวถึงสารสนเทศ (Information) สิ่งแรกที่ควรจะต้องกล่าวถึงก็คือ ข้อมูล (Data) ซึ่งเป็นพื้นฐานของสารสนเทศ
ข้อมูล (Data) พจนานุกรมฉบับราชบัณฑิตยสถาน พ.ศ.2525 ได้ให้คำจำกัดความไว้ว่า ข้อมูล หมายถึง ข้อเท็จจริงหรือสิ่งที่ถือหรือยอมรับว่าเป็นข้อเท็จจริงสำหรับใช้เป็นหลักในการอนุมานหาความจริงหรือการคำนวณ ข้อมูลจึงมีความหมายในลักษณะที่เป็นข้อมูลดิบ (Raw data) เรียกได้ว่าเป็นสิ่งที่ได้จากการสังเกตปรากฎการณ์การกระทำหรือลักษณะต่าง ๆ ของวัตถุ สิ่งของ คน สัตว์ หรือพืช แล้วบันทึกไว้เป็นตัวเลข สัญลักษณ์ ภาพหรือเสียง (อ้างใน วิเศษศักดิ์ โคตรอาษา : 2542 : 1)
สารสนเทศ (Information) คือ ข้อมูลที่นำมาสรุปประมวลผล ดำเนินการทางสถิติ เปรียบเทียบหรือดำเนินการโดยวิธีการต่าง ๆ เพื่อให้ผู้รับได้เข้าใจความเป็นไปหรือสถานการณ์ของสิ่งที่มีสารสนเทศนั้นเป็นตัวแทน (ครรชิต มาลัยวงศ์ : 1998 : 20) วาสนา สุขกระสานติ ใน (2541 : 6-1) ได้ให้ความหมายของคำว่า สารสารเทศ (Information) ว่าหมายถึง "ข่าวสารที่ได้จากการนำข้อมูลดิบ (Raw data) มาคำนวณทางสถิติหรือประมวลผลอย่างใดอย่างหนึ่ง ซึ่งข่าวสารที่ได้ออกมานั้นอยู่ในรูปที่สามารถนำไปใช้งานได้ทันที" ครรชิต มาลัยวงศ์ (1998:20) ได้กล่าวถึง เทคโนโลยีสารสนเทศ (Information Technology) ว่าเทคโนโลยีสารสนเทศ หมายถึง เทคโนโลยีกลุ่มหนึ่งที่มีประโยชน์ในการจัดทำสารสนเทศและส่งสารสนเทศนั้นให้ถึงมือผู้รับ วศิน ธูปประยูร (อ้างในสานิตย์ กายาผาด : 2542 : 2) กล่าวว่า "เทคโนโลยีสารสนเทศเป็นเทคโนโลยีใหม่ที่ใช้ในการประมวลผลสารสนเทศได้แก่ ไมโครคอมพิวเตอร์ เครื่องประมวลผลคำ และเครื่องที่สามารถประมวลผลได้โดยอัตโนมัติอื่น ๆ เครื่องสมองกลเหล่านี้เป็นนวัตกรรมของมนุษย์ที่สร้างสรรขึ้นมา เพื่อรวบรวมผลิตสื่อสาร บันทึก เรียบเรียงใหม่แสดงผลประโยชน์จากสารสนเทศ" มหาวิทยาลัยสุโขทัยธรรมาธิราช (อ้างในสานิตย์ กายาผาด : 2542 : 3) กล่าวถึง เทคโนโลยีสารสนเทศว่าหมายถึง "เทคโนโลยีทุกอย่างที่เกี่ยวข้องกับสารสนเทศ เริ่มจากเทคโนโลยีที่ใช้ในการจัดเก็บ ประมวลผล แสดงผลและเผยแพร่สารสนเทศในรูปของข้อมูล ข้อความหมายและเรื่องโดยใช้เทคโนโลยีคอมพิวเตอร์และเทคโนโลยีโทรคมนาคม" วาสนา สุขกระสานติ (2541:6-1) ได้กล่าวถึงเทคโนโลยีสารสนเทศว่า หมายถึง "กระบวนการต่าง ๆ และระบบงานที่ช่วยให้ได้สารสนเทศที่ต้องการโดยจะรวมถึง 1) เครื่องมือและอุปกรณ์ต่าง ๆ ซึ่งส่วนมากแล้วจะหมายถึงเครื่องคอมพิวเตอร์ เครื่องใช้สำนักงาน อุปกรณ์โทรคมนาคมต่าง ๆ รวมทั้งซอฟแวร์ทั้งแบบสำเร็จรูป และแบบพัฒนาขึ้นเพื่อใช้ในงานเฉพาะด้าน ซึ่งเครื่องมือเหล่านี้จัดเป็นเครื่องมือสมัยใหม่และใช้เทคโนโลยีระดับสูง (High Technology) 2) กระบวนการในการนำเอาเครื่องมือต่าง ๆ มาใช้งาน เพื่อรวบรวมจัดเก็บ ประมวลผลและแสดงผลลัพธ์ เป็นสารสนเทศในรูปแบบต่าง ๆ ที่สามารถนำไปใช้ประโยชน์ได้ต่อไป พิจารณาจากคำจำกัดความดังกล่าวข้างต้น เมื่อมองสภาพวิวัฒนาการของเทคโนโลยีในปัจจุบันจะเห็นได้ว่า เทคโนโลยีคอมพิวเตอร์ และเทคโนโลยีสื่อสารโทรคมนาคม มีบทบาทเป็นอย่างมากสำหรับโลกแห่งข้อมูลสารสนเทศในปัจจุบัน ครรชิต มาลัยวงศ์ (1998:20) กล่าวถึงยุคก่อนคอมพิวเตอร์ว่า "ไอ ที หมายถึง เทคโนโลยีการพิมพ์ กล้องถ่ายรูป เครื่องพิมพ์ดีด โทรเลขและโทรศัพท์ พอมาถึงยุคนี้ นักวิชาการหลายคนพอใจที่จะให้คำนิยามไอที ให้เหลือเพียงเป็นการผสมผสานกัน ระหว่างเทคโนโลยีคอมพิวเตอร์กับเทคโนโลยีสื่อสารโทรคมนาคม และบางคนไปไกลถึงกับขอเปลี่ยนชื่อเทคโนโลยีสารสนเทศใหม่ว่าเป็น เทคโนโลยีสารสนเทศ และการสื่อสาร (Information and Communication Technology) เรียกย่อ ๆ ว่า ICT" นอกจากนี้แล้ว ครรชิต มาลัยวงศ์ ยังวิเคราะห์ต่อไปว่าหากจะแยกย่อยเทคโนโลยีสารสนเทศออกเป็นส่วน ๆ แล้ว จะเห็นว่า คอมพิวเตอร์เป็นอุปกรณ์หรือเครื่องมือสำหรับจัดเก็บบันทึกและประมวลผลข้อมูลให้เป็นสารสนเทศ หรือจัดทำเป็นรายงานต่าง ๆ ได้อย่างรวดเร็วและถูกต้องแม่นยำ แต่เมื่อจัดทำแล้วไม่สามารถส่งไปยังผู้ต้องการใช้อย่างรวดเร็ว รายงานเหล่านี้ก็ไม่เกิดประโยชน์ ดังนั้นจึงจำเป็นจะต้องอาศัยเทคโนโลยีการสื่อสารโทรคมนาคมเข้ามาช่วยให้สามารถส่งสารสนเทศ หรือรายงานที่จัดทำขึ้นนั้นไปยังผู้รับได้โดยตรงและทันที จากคำจำกัดความดังกล่าวของข้อมูล (Data) สารสนเทศ (Information) และเทคโนโลยีสารสนเทศ (Information Technology) แล้ว พอจะจัดความสัมพันธ์ของทั้ง 3 ส่วน ได้ดังนี้
แผนภาพที่ 30 ระบบเทคโนโลยีสารสนเทศ
ระบบเทคโนโลยีสารสนเทศกับการใช้งาน ซึ่งในส่วนของเทคโนโลยีคอมพิวเตอร์ เช่น การนำข้อมูลเข้าคอมพิวเตอร์เพื่อการนำเข้าสู่การประมวลผลข้อมูล ไปสู่ผู้ใช้ในรูปแบบต่าง ๆ เช่น การตัดสินใจ การเรียนรู้ ธุรกิจ หรือเพื่อความบันเทิง
ระบบเทคโนโลยีสารสนเทศกับการใช้งาน
ระบบเทคโนโลยีสารสนเทศกับการใช้งาน
ระบบสารสนเทศ (Information System) ชมรมพัฒนาความรู้ด้านระเบียบกฎหมาย (2540:65) ได้ให้ความหมายของคำว่าระบบสารสนเทศ (Information System) ว่า หมายถึง "ระบบที่จัดตั้งขึ้นเพื่อรวบรวม จัดเก็บและใช้สารสนเทศสนองความต้องการของหน่วยงาน ทั้งนี้โดยมีภารกิจของการจัดอย่างเป็นระบบ" โดยได้แสดงแผนภาพระบบสารสนเทศ ดังนี้
จากแผนภาพแสดงให้เห็นว่าข้อมูลซึ่งเป็นปัจจัยนำเข้า
(1) เมื่อผ่านกระบวนการประมวลผลหรือการวิเคราะห์แล้ว
(2) ก็จะเป็นสารสนเทศหรือผลลัพธ์
(3) ซึ่งผู้ใช้สารสนเทศหรือผู้บริหาร
(4) จะนำไปประกอบในการตัดสินใจ
(5) และผลลัพธ์จากการตัดสินใจ
(6) ก็ยังสามารถเป็นข้อมูล ที่จะนำไปใช้ในการตัดสินใจในครั้งต่อไป
การสืบค้นข้อมูล โดยใช้ซีดี-รอม
การสืบค้นข้อมูล โดยใช้ซีดี-รอม
ซีดี-รอม (CD-ROM = Coppact Disc-Read Only Memory) เป็นแผ่นโลหะวงกลมเคลือบเงาขนาดเล็กทำมาจากโลหะผสมรุ่นใหม่ที่เรียกว่าอะมอฟัสอัลลอย ซึ่งเป็นส่วนผสมของโคบอลท์เหล็กและนิเกิ้ล มีคุณสมบัติแข็งแกร่ง ทนทานไวต่อสนามแม่เหล็กและมีกระแสไฟฟ้าบรรจุอยู่ แผ่นซีดีจะมีขนาดเส้นผ่าศูนย์กลาง 4.75 นิ้ว หรือ 12 เซนติเมตร จุข้อมูลได้ขนาด 250,000 หน้าหนังสือหรือ 600 ล้านตัวอักษร เทียบกับแผ่นจานแม่เหล็กชนิดอ่อน (Floppy disk) จำนวน 1,500 แผ่นหรือประมาณ 540-600 เมกกะไบท์ การอ่านแผ่นซีดี-รอม ทำด้วยแสงเลเซอร์ (Laser Beam) การใช้งานแผ่นซีดี-รอม จะต้องมีเครื่องคอมพิวเตอร์ที่มีตัวซีดี-รอม (CD-ROM Drive) ซึ่งมีหลายชนิดขึ้นอยู่กับความเร็วในการทำงาน ซีดี-รอมไดรฟ์รุ่นแรกสุดจะมีความเร็วในการอ่านข้อมูลที่ 150 กิโลไบท์ต่อวินาที เรียกว่ามีความเร็ว 1 เท่าหรือ 1X ซีดีรอมรุ่นหลัง ๆ จะอ้างอิงความเร็วในการอ่านข้อมูล จากรุ่นแรก เช่น ความเร็ว 2 เท่า (2X) หรือความเร็ว 4 เท่า (4X) เป็นต้น ข้อจำกัดของซีดีรอมคือสามารถบันทึกได้เพียงครั้งเดียวด้วยเครื่องมือเฉพาะเท่านั้น จากนั้นไม่สามารถเปลี่ยนแปลงข้อมูลเหล่านั้นได้ ซีดีรอมได้รับความนิยมเป็นอย่างมากในปัจจุบันสำหรับเก็บข้อมูลสำหรับการอ่านอย่างเดียวเป็นอย่างมาก เช่น ซอฟแวร์ เกมส์ ปทานุกรม แผนที่โลก หนังสือ เพลง ภาพยนตร์ ต้นทุนถูกกว่าดิสก์เกตต์มาก ปัจจุบันมีแผ่นซีดี-รอมที่สามารถบันทึกได้เรียกว่า ซีดี-อาร์ (CD-R = CD - Recordable) โดยแผ่นจะมีสีทองในขณะที่แผ่นซีดีธรรมดาจะมีสีเงินโดยบันทึกแผ่นด้วย ซีดี-อาร์ไดรฟ์ (CD-R Drive) ซึ่งอ่านแผ่นซีดีปกติได้ด้วย แต่มีราคาสูงกว่าซีดี-รอมไดรฟ์ปกติมาก
วอร์มซีดี (WORM CD หรือ Write Once Read Many CD) เป็นแผ่นซีดีที่สามารถบันทึกข้อมูลได้หนึ่งครั้ง สามารถใช้อ่านกี่ครั้งก็ได้ ไม่สามารถแก้ไขข้อมูลได้อีก จุข้อมูลได้ตั้งแต่ 600 เมกกะไบท์ จนถึงมากกว่า 3 จิกะไบท์ ต้องใช้เครื่องอ่านรุ่นเดียวกับที่บันทึก ทำให้การใช้งานแคบมักนิยมนำมาใช้ในการเก็บสำรองข้อมูลเท่านั้น
เอ็มโอดิสก์ (MO หรือ Megneto Optical Disk) เป็นระบบใช้หลักการของสื่อที่ใช้สารแม่เหล็กเช่น ฮาร์ดดิสก์กับออปติคัลดิสก์ เข้าด้วยกัน ใช้แสงเลเซอร์ช่วยในการบันทึกและอ่านข้อมูล ทำให้สามารถอ่านและบันทึกแผ่นกี่ครั้งก็ได้คล้ายฮาร์ดดิสก์ เคลื่อนย้ายแผ่นได้คล้ายฟลอปปี้ดิสก์ มีความจุมากคือตั้งแต่ 200 MB ขึ้นไป มีความเร็วสูงกว่าฟลอปปี้ดิสก์ และซีดีรอม
ดีวีดี (DVD หรือ Digital Versatile Disk) เป็นเทคโนโลยีล่าสุดโดยสามารถเก็บข้อมูลได้ต่ำสุดที่ 4.7 จิกะไบท์ทำให้สามารถพอเพียงที่จะบันทึกภาพยนตร์เต็มเรื่องได้ที่มีคุณภาพสูงสุดทั้งภาพและเสียง ในขณะที่ CD-ROM หรือ Laser Disk ในปัจจุบันต้องใช้หลายแผ่นในการเก็บบันทึกภาพยนตร์ 1 เรื่อง
ช่องทางการสื่อสารข้อมูล (Data Transmission Channels)
ช่องทางการสื่อสารข้อมูล (Data Transmission Channels)
ช่องทางการสื่อสารข้อมูล (Data Transmission Channels) ดังกล่าวในตอนต้นว่าสารสนเทศแม้มีระบบในการจัดเก็บที่ดีถูกต้องเพียงไร แต่ถ้าหากไม่สามารถที่จะนำมาใช้หรือส่งข้อมูลออกไป เพื่อการใช้งานได้สะดวกสารสนเทศดังกล่าวก็ไม่มีความหมาย ดังนั้น เทคโนโลยีสารสนเทศจึงจำเป็นต้องมีระบบโทรคมนาคมที่ดี ที่จะช่วยสนับสนุนประสิทธิภาพของการสื่อสารข้อมูล โดยที่เทคโนโลยีสารสนเทศในปัจจุบันอยู่ในรูปของเครือข่ายคอมพิวเตอร์ ที่นำคอมพิวเตอร์มาเชื่อมโยงเป็นเครือข่าย สิ่งที่สำคัญนอกจากตัวคอมพิวเตอร์แล้วก็คือช่องทางหรือสื่อกลาง (Media) ในการส่งผ่านข้อมูล ซึ่งปัจจุบันมีมากมายหลายแบบ และแต่ละแบบมีข้อดีและข้อเสียแตกต่างกันไป ในบางครั้งการใช้งานจริงสามารถใช้ช่องทางมากกว่าหนึ่งช่องทางพร้อม ๆ กัน ช่องทางในการสื่อสารข้อมูลอาจจะแบ่งออกได้เป็น 4 ระบบคือ
1. ระบบเดินสายเคเบิล (Wired System)
2. ระบบไมโครเวฟ (Microwave System)
3. ระบบดาวเทียม (Satellite System)
4. ระบบอื่น ๆ
13.4.1 ระบบเดินสายเคเบิล (Wired System) เป็นสื่อกลางที่เป็นสายทั้งหมด โดย แบ่งออกได้เป็น
1) สายคู่บิดเกลียวแบบมีชีลด์และไม่มีชีลด์ (Shielded and Unshielded Twisted-Pair Cable) ราคาถูกสุด ประกอบด้วยสายทองแดงที่มีฉนวนหุ้มจำนวน 2 เส้นมาพันเป็นเกลียว สามารถลดการรบกวนจากสนามแม่เหล็กไฟฟ้าได้ โดยปกติแล้วสายคู่บิดเกลียวจะหมายถึง สายคู่บิดเกลียวแบบไม่มีชีลด์ (UTP) ซึ่งใช้ในการเดินสายโทรศัพท์และใช้ในระบบเครือข่ายระยะใกล้มาก ในขณะที่สายคู่บิดเกลียวแบบมีชิลด์ (STP) จะมีฉนวนโลหะหุ้มอยู่ภายนอกอีกชั้นหนึ่ง ทำให้สามารถป้องกันสัญญาณรบกวนได้ดีขึ้น สายเกลียวคู่หนึ่งจะแทนช่องทางการสื่อสาร (Channel) ได้หนึ่งช่องทาง ซึ่งในการใช้งานจริงอาจรวมสาย จำนวนหลายร้อยคู่เข้าด้วยกันเป็นสายใหญ่ เพื่อสามารถใช้งานได้พร้อม ๆ กัน ตัวอย่างเช่น ระบบสายโทรศัพท์
2) สายโคแอกเชียล (Coaxial Cable) มักเรียกสั้น ๆ ว่า สายโคแอก จะเป็น สายสื่อสารที่สามารถส่งข้อมูลไกลว่าสายแบบคู่บิดเกลียว แต่ราคาแพงกว่า ลักษณะสายจะประกอบด้วยส่วนของสายส่งข้อมูล ที่เป็นลวดทองแดงหุ้มด้วยฉนวนตรงกลาง จากนั้นจะหุ้มด้วยตัวนำเพื่อเป็นสายกราวนด์ จากนี้จึงหุ้มด้วยฉนวนเป็นเปลือกนอกอีกชั้นหนึ่ง สายโคแอกจะสามารถส่งข้อมูลได้ทั้งแบบเบสแบนด์และบรอดแบนด์ ใช้งานมากในสายเคเบิลทีวี ปัจจุบันใช้น้อยลงกับระบบคอมพิวเตอร์ เพราะการพัฒนาของสายคู่บิดเกลียวสามารถส่งข้อมูลได้ด้วยความเร็วสูงขึ้น
3) สายใยแก้วนำแสง (Fiber Optic Cable) สายใยแก้วนำแสง ประกอบด้วย ใยแก้วหรือพลาสติกอยู่ตรงกลางของสาย และใช้ใยแก้วอีกชนิดหนึ่งเป็นตัวหุ้ม (Cladding) และหุ้มด้วยฉนวนในชั้นนอกสุด ซึ่งใยแก้วชั้นนอกจะทำหน้าที่เหมือนกระจกที่สะท้อนสัญญาณแสง ให้สะท้อนไปมาภายในใยแก้วที่เป็นแกนกลาง จากจุดเริ่มต้นจนถึงจุดปลายทาง สายใยแก้วจะมีแบนด์วิธที่กว้างมาก ทำให้สามารถส่งข้อมูลปริมาณมากได้ด้วยความเร็วสูง นอกจากนี้ยังส่งข้อมูลได้ในระยะทางที่ไกลกว่า และปลอดจากการรบกวนของคลื่นแม่เหล็กไฟฟ้า เนื่องจากใช้แสงเป็นตัวนำสัญญาณ แต่มีข้อเสียคือติดตั้งและบำรุงรักษายาก รวมทั้งมีราคาแพงที่สุดในสายทั้ง 3 ประเภท
13.4.2 ระบบไมโครเวฟ (Microwave System) ระบบไมโครเวฟใช้วิธีส่งสัญญาณที่มีความถี่สูงกว่าคลื่นวิทยุเป็นทอด ๆ จาก สถานีหนึ่งไปยังอีกสถานีหนึ่ง เนื่องจากสัญญาณเดินเป็นเส้นตรง ดังนั้นสถานีจะต้องอยู่ในที่ สูง ๆ เพื่อที่จะส่งสัญญาณให้ได้ไกล และลดจำนวนสถานีที่รับสัญญาณได้ประมาณ 30-50 กิโลเมตร ปัจจุบันมีการใช้ระบบไมโครเวฟกันทั่วไป โดยเฉพาะในพื้นที่ที่เดินสายไม่สะดวก นอกจากนี้ระบบไมโครเวฟยังมีราคาถูก ติดตั้งง่าย มีการส่งข้อมูลสูง แต่มีข้อเสียก็คือ สัญญาณอาจ ถูกรบกวนได้ง่ายจากอุณหภูมิ พายุหรือฝน
ทางเลือกของเครือข่ายคอมพิวเตอร์
13.4.3 ระบบดาวเทียม (Satellite System) ระบบดาวเทียมจะคล้ายกับระบบไมโครเวฟ ในแง่ของการยิงสัญญาณจากแต่ละสถานีไปยังจุดหมายที่ต้องการ แต่ในการนี้จะมีดาวเทียม (Satellite) เป็นสถานีรับสัญญาณที่ลอยอยู่เหนือพื้นโลก 36,000 กิโลเมตร แล้วจึงยิงสัญญาณย้อนกลับ จากดาวเทียมลงมายังสถานีบนพื้นโลก ซึ่งการที่ดาวเทียมลอยอยู่สูงมาก จากพื้นโลกทำให้สามารถใช้ดาวเทียมเพียง 3 ดวง ก็สามารถยิงสัญญาณมาครอบคลุมพื้นที่บนโลกได้ทั้งหมด โดยสถานีต้นทางจะส่งสัญญาณขึ้นไปยังดาวเทียม ที่ลอยอยู่เหนือพื้นที่ของตนเองเรียกว่า สัญญาณขึ้นไปยังดาวเทียมที่ลอยอยู่เหนือพื้นที่ของตนเองเรียกว่า สัญญาณเชื่อมต่อขาขึ้น (Up-link) และดาวเทียมจะทำการตรวจสอบตำแหน่งของสถานีปลายทาง หากอยู่ในขอบเขตพื้นที่ที่ครอบคลุมอยู่ก็จะทำการส่งสัญญาณไปยังสถานีปลายทางทันทีเรียกว่า สัญญาณเชื่อมต่อขาลง (Down link) หากสถานีปลายทางอยู่นอกขอบเขตสัญญาณ ดาวเทียมจะส่งต่อไปยังดาวเทียมดวงที่ครอบคลุมสถานีปลายทางนั้น เพื่อส่งสัญญาณ Down link ต่อไป ปัจจุบันมีการใช้สัญญาณดาวเทียมอย่างแพร่หลาย ทั้งการส่งสัญญาณข้อมูลคอมพิวเตอร์ สัญญาณโทรทัศน์ รวมทั้งด้านอื่น ๆ อีกมากมาย ข้อเสียที่สำคัญของระบบดาวเทียมคือถูกรบกวนได้ทั้งสภาพอากาศ ฝนหรือพายุ รวมทั้งตำแหน่งโคจรของดวงอาทิตย์ และข้อเสียอีกอย่างที่สำคัญคือ จะมีเวลาหน่วง (Delay Time) ในการส่งสัญญาณ ซึ่งทำให้ฝ่ายรับสัญญาณได้รับข้อมูลช้ากว่าเวลาจริง เนื่องจากสัญญาณต้องเดินทางไปกลับ จากสถานีภาคพื้นดินขึ้นไปยังดาวเทียมแล้วจึงส่งกลับมายังสถานีบนพื้นโลก
13.4.4 ระบบอื่น ๆ นอกจากระบบดังกล่าวแล้วยังมีระบบสื่อสารแบบไร้สายอื่น ๆ ที่นำมาใช้ใน การสื่อสารข้อมูล เช่น
1) ระบบอินฟราเรด (Infrared) เป็นระบบที่ใช้เทคโนโลยีเช่นเดียวกับรีโมท คอนโทรลเครื่องรับโทรทัศน์ แต่มีข้อจำกัดตรงจะต้องไม่มีอะไรบังระหว่างกลางทำให้มีระยะทางรับส่งได้ไม่ไกลนัก
2) ระบบวิทยุ (Radio) จะใช้คลื่นวิทยุในการส่งผ่านข้อมูลระหว่างคอมพิวเตอร์ในเครือข่าย ระบบนี้มีปัญหาในการขออนุญาตใช้คลื่นความถี่
3) ระบบสเปคตรัมแถบกว้าง (Spread Spectrum) เป็นระบบคลื่นวิทยุที่พัฒนา โดยกองทัพสหรัฐระหว่างสงครามโลกครั้งที่ 2 เพื่อป้องกันสัญญาณรบกวนและการดักสัญญาณ ในการส่งข้อมูลผ่านเครือข่ายคอมพิวเตอร์ผ่านทางเครือข่าย จำเป็นจะต้องเลือกรูปแบบของเครือข่ายที่จะมีประสิทธิภาพสูงสุด ในปัจจุบันเทคโนโลยีนี้ได้ถูกพัฒนา จนสามารถรับส่งได้ด้วยความเร็วสูงถึง 10 Mbps และมีการใช้งานในระบบเครือข่ายขนาดเล็กภายในอาคารเดียวกั
ทางเลือกของเครือข่ายคอมพิวเตอร์ (Networking alternatives)
อรัญ นำผลและประสงค์ ปราณีพลกรัง (2541:138-140) กล่าวว่าเครือข่ายโทรคมนาคมจะมีอุปกรณ์นำเข้า/ส่งออก และหน่วยเก็บข้อมูล ซึ่งล้วนประกอบเข้ากับคอมพิวเตอร์จากส่วนกลางเพื่อทำหน้าที่ประมวลผล โดยจะเรียกว่า คอมพิวเตอร์หลัก และแต่ละตำแหน่งจะเรียกว่า "จุด (Node)" เครือข่ายที่อยู่ภายในห้องเดียวกัน ตึกเดียวกัน เราจะเรียกว่า "เครือข่ายเฉพาะพื้นที่ (LAN)" แต่ถ้าเป็นเครือข่ายที่มีการเชื่อมโยงห่างกันเป็นพื้นที่กว้าง เช่น ระหว่างจังหวัด ระหว่างประเทศ ทั่วทุกมุมโลก เราเรียกว่า "เครือข่ายบริเวณกว้าง [Wide Area Networks (WAN)]" แต่ถ้าเป็นเครือข่ายครอบคลุมภายในเมือง เราเรียกว่า "เครือข่ายบริเวณตัวเมือง" [Metropolitan Area Network (MAN)] อัตราการส่งข้อมูลของเครือข่ายเฉพาะพื้นที่ (LAN) จะมีความเร็วกว่าของเครือข่ายบริเวณกว้าง (WAN) ซึ่ง LAN โดยทั่วไปจะมีอัตราความเร็วระหว่าง 1-10,000,000 bps ในบางครั้งอาจมีความเร็วมากกว่า 100,000,000 bps แต่ถ้าเป็นเครือข่ายบริเวณกว้าง (WAN) จะต้องใช้ร่วมกับสายโทรศัพท์โดยจะมีความเร็วไม่เกิน 960 bps
เครือข่ายระบบโทรคมนาคม จะประกอบด้วย เครื่องคอมพิวเตอร์ ตัวกลางการสื่อสาร ตลอดจนซอฟแวร์ที่เกี่ยวข้อง ซึ่งจำแนกออกได้หลายประเภทด้วยกันและขึ้นอยู่กับปัจจัยที่ใช้ในการแบ่งด้วย โดยทั่วไปแล้วปัจจัยที่นิยมใช้กันมี 2 อย่างคือ (1) รูปร่าง (Topolygy) ของเครือข่าย (2) พื้นที่ครอบคลุมของเครือข่าย (Geographic scop) แผนภาพที่ 34 แสดงประเภทของเครือข่ายซึ่งต้องขึ้นอยู่กับปัจจัยที่ใช้ในการแบ่ง
วันอาทิตย์ที่ 7 กุมภาพันธ์ พ.ศ. 2553
คำสั่งเอสคิวแอล (SQL Command)
คำสั่ง SQL (Structured Query Language) เป็นภาษามาตราฐานภาษาหนึ่ง ใช้ในโปรแกรม Oracle , FoxBASE, Forpro,Access,Sybase,Informix,DB2,SQL Server และโปรแกรมฐานข้อมูลอื่น ๆ เป็นภาษาที่มีรูปแบบคำสั่ง (Syntax) เป็นประโยคภาษาอังกฤษ ซึ่งทำให้ง่ายต่อการเข้าใจและง่ายต่อการเรียนรู้
ความสำคัญของ SQL
ปัจจุบันมีการพัฒนาซอฟต์แวร์ DBMS (Database management System) ซึ่งหมายถึง
ซอฟต์แวร์ที่เป็นสื่อกลางในการเชื่อมต่อการทำงานระหว่างโปรแกรมฐานข้อมูลกับ User ในปัจจุบันได้พัฒนา DBMS ขึ้นมาอย่างหลากหลาย Visual Basic , ASP, PHP, DB2,Java ซึ่งซอฟต์แวร์เหล่านี้เป็น DBMS ที่ใช้ภาษาการจัดการข้อมูลที่เรียกว่า SQL และ QBE ใช้กับฐานข้อมูลเชิงสัมพันธ์ (Ralational Database) เป็นส่วนใหญ่ ซึ่งภาษา SQL มีความสำคัญกับหลาย ๆ โปรแกรมที่ทำหน้าที่เป็น DBMS เนื่องจากการสอบถามหรือสืบค้นข้อมูลจากฐานข้อมูลนั้น ถือเป็นปัจจัยสำคัญกับการทำงานของระบบสารสนเทศ
ความสามารถของ SQL
ภาษา SQL ได้จำแนกกลุ่มคำสั่งสำหรับจัดการกับข้อมูล ออกเป็น 4 กลุ่มหลัก ดังนี้
1.กลุ่มคำสั่งในการ “ขอดูข้อมูล” (select )
2. กลุ่มคำสั่งในการ “เพิ่มข้อมูล” (insert)
3. กลุ่มคำสั่งในการ “แก้ไขข้อมูล” (update)
4. กลุ่มคำสั่งในการ “ลบข้อมูล” (delete)
ชนิดข้อมูลใน SQL
ชนิดข้อมูลของภาษา SQL ที่นำไปใช้กับซอฟต์แวร์ DBMS หรือใช้กับซอฟต์แวร์ฐานข้อมูลแต่ละตัวนั้นจะแตกต่างกันออกไป เช่น การใช้ SQL ร่วมกับฐานข้อมูล JDBC ใน Java กับ SQL ร่วมกับ Oracle จะทำให้ชนิดข้อมูลของทั้งสองนั้นมีความแตกต่างกัน ซึ่งขอยกตัวอย่างชนิดข้อมูลใน JDBC ของ Java ดังต่อไปนี้
ชนิดข้อมูล ความหมาย
BIT เก็บค่าตัวเลข (0/1)
TINYINT ข้อมูลตัวเลข
SMALLINT ข้อมูลตัวเลข ขนาดเล็กกว่า INTEGER
INTEGER ข้อมูลประเภทตัวเลข
REAL ข้อมูลเลขจำนวนจริง
FLOAT ข้อมูลเลขทศนิยม
DOUBLE ข้อมูลเลขทศนิยม ความแม่นยำสูง
DECIMAL ข้อมูลเลขทศนิยม
NUMERIC ข้อมูลตัวเลข
CHAR ข้อมูลที่เป็นอักขระ
VARCHAR ข้อมูลตัวอักษร
BINARY ข้อมูลค่าจริง/เท็จ (0/1)
DATE ข้อมูลประเภทวันที่ เช่น MM-DD-YY
TIME ข้อมูลเวลา
TIMESTAMP ข้อมูลเวลา
ตารางที่ 11.
คำสั่งในการจัดการกับฐานข้อมูล (Database)
ในภาษา SQL สามารถใช้ชุดคำสั่งเพื่อจัดการกับข้อมูลได้ ดังต่อไปนี้
1. การแสดงข้อมูลในตาราง
- การแสดงข้อมูลภายใน 1 ตาราง
การเรียกดูข้อมูลทั้งหมดในตาราง
Syntax:
SELECT * FROM ระบุชื่อตาราง;
ตัวอย่าง:
SELECT * FROM Personal;
การเรียกดูข้อมูลบาง Field
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ระบุชื่อตาราง;
ตัวอย่าง:
SELECT Pid, Pname, Paddress FROM Personal;
การเรียกดูข้อมูลแบบมีเงื่อนไข
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ระบุชื่อตาราง;
WHERE ระบุเงื่อนไข ;
ตัวอย่าง:
SELECT Pid, Pname, Paddress FROM Personal;
WHERE P_age >= 25;
การกำหนดเงื่อนไขในส่วนของ WHERE
- ใช้เครื่องหมายในการเปรียบเทียบค่า (Comparison Operator) ได้แก่
> >= < <=
LIKE
IN
เช่น WHERE P_age >= 25; หรือ
WHERE Pname LIKE ‘%นี%; ß เปรียบเทียบบางส่วนของข้อความ หรือ
WHERE P_age IN (25,30);
- การใช้ตัวเชื่อมเงื่อนไข AND และ OR เช่น
WHERE P_age = 25 OR P_age = 30; หรือ
WHERE P_age = 25 AND P_age = 30;
การเรียกดูข้อมูลโดยใช้เงื่อนไขในการจัดเรียงข้อมูล (Sort)
Syntax:
SELECT * FROM ระบุชื่อตาราง ORDER BY ระบุชื่อ Field;
ตัวอย่าง:
SELECT * FROM Personal ORDER BY Pid;
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ระบุชื่อตาราง;
ORDER BY ระบุชื่อ Field;
ตัวอย่าง:
SELECT Pid, Pname, Paddress FROM Personal ORDER BY Pid; หรือ
SELECT Pid, Pname, Paddress FROM Personal ORDER BY Pid DESC;
SELECT Pid, Pname, Paddress FROM Personal ORDER BY Pid ASC;
เมื่อ DESC ใช้เมื่อต้องการเรียงข้อมูลจากมากไปหาน้อย (Descending)
ASC ใช้เมื่อต้องการเรียงข้อมูลจากน้อยไปหามาก (Ascending)
- การแสดงข้อมูลจากหลายตาราง
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ชื่อตารางที่1,ชื่อตารางที่2 WHERE ระบุเงื่อนไขของทั้ง 2 ตาราง ORDER BY ระบุ Field และรูปแบบการจัดเรียง;
ตัวอย่าง:
SELECT Personal.Pid,Personal.Pname,Training.Tcourse FROM Personal,Training
WHERE Personal.Pid = Training.Pid ORDER BY Personal.Pid DESC;
2. การเพิ่มข้อมูล
- การเพิ่มข้อมูลภายใน 1 ตาราง
Syntax :
INSERT INTO ชื่อตาราง (ชื่อ field ที่1 , ชื่อ field ที่2…ชื่อ field ที่n) VALUES (‘ข้อมูลข้อความ’, ข้อมูลตัวเลข);
ตัวอย่าง:
INSERT INTO Sale (sid_produc , sunit) VALUES (‘001’, 1500);
- การเพิ่มข้อมูลลงในหลายตาราง
3. การแก้ไขหรือ update ข้อมูล
- การ update ข้อมูลภายในหนึ่งตาราง
Syntax:
UPDATE ชื่อตาราง SET ชื่อ Field = ค่าของข้อมูล WHERE ระบุเงื่อนไขของ record ทีต้องการ update;
ตัวอย่าง:
UPDATE Personal SET paddress = ‘บางเขน’ WHERE pname = ‘สุนีย์’;
- การ update ข้อมูลหลายตาราง
4. การลบข้อมูล
- การลบตาราง
Syntax
DELETE TABLE ชื่อตาราง;
ตัวอย่าง :
DELETE TABLE Personal;
- การลบข้อมูลเฉพาะ Record
Syntax :
DELETE FROM ชื่อตาราง WHERE ระบุเงื่อนไขในการลบ;
ตัวอย่าง :
DELETE FROM Personal WHERE pname = ‘สุนีย์’;
5. คำสั่งสร้างฐานข้อมูล
Syntax :
CREATE DATABASE ชื่อฐานข้อมูล;
ตัวอย่าง :
CREATE DATABASE MyDB;
6. การลบฐานมูล
Syntax:
DROP DATABASE ชื่อฐานข้อมูล;
ตัวอย่าง :
DROP DATABASE MyDB;
7. การสร้างตาราง
Syntax:
CREATE TABLE ระบุชื่อตาราง(ชื่อ Field ชนิดข้อมูล ประเภทของ Key ,…);
ตัวอย่าง :
CREATE TABLE Personal(Pid CHAR(4) PRIMARY KEY,
Pname VARCHAR(25) );
ความสำคัญของ SQL
ปัจจุบันมีการพัฒนาซอฟต์แวร์ DBMS (Database management System) ซึ่งหมายถึง
ซอฟต์แวร์ที่เป็นสื่อกลางในการเชื่อมต่อการทำงานระหว่างโปรแกรมฐานข้อมูลกับ User ในปัจจุบันได้พัฒนา DBMS ขึ้นมาอย่างหลากหลาย Visual Basic , ASP, PHP, DB2,Java ซึ่งซอฟต์แวร์เหล่านี้เป็น DBMS ที่ใช้ภาษาการจัดการข้อมูลที่เรียกว่า SQL และ QBE ใช้กับฐานข้อมูลเชิงสัมพันธ์ (Ralational Database) เป็นส่วนใหญ่ ซึ่งภาษา SQL มีความสำคัญกับหลาย ๆ โปรแกรมที่ทำหน้าที่เป็น DBMS เนื่องจากการสอบถามหรือสืบค้นข้อมูลจากฐานข้อมูลนั้น ถือเป็นปัจจัยสำคัญกับการทำงานของระบบสารสนเทศ
ความสามารถของ SQL
ภาษา SQL ได้จำแนกกลุ่มคำสั่งสำหรับจัดการกับข้อมูล ออกเป็น 4 กลุ่มหลัก ดังนี้
1.กลุ่มคำสั่งในการ “ขอดูข้อมูล” (select )
2. กลุ่มคำสั่งในการ “เพิ่มข้อมูล” (insert)
3. กลุ่มคำสั่งในการ “แก้ไขข้อมูล” (update)
4. กลุ่มคำสั่งในการ “ลบข้อมูล” (delete)
ชนิดข้อมูลใน SQL
ชนิดข้อมูลของภาษา SQL ที่นำไปใช้กับซอฟต์แวร์ DBMS หรือใช้กับซอฟต์แวร์ฐานข้อมูลแต่ละตัวนั้นจะแตกต่างกันออกไป เช่น การใช้ SQL ร่วมกับฐานข้อมูล JDBC ใน Java กับ SQL ร่วมกับ Oracle จะทำให้ชนิดข้อมูลของทั้งสองนั้นมีความแตกต่างกัน ซึ่งขอยกตัวอย่างชนิดข้อมูลใน JDBC ของ Java ดังต่อไปนี้
ชนิดข้อมูล ความหมาย
BIT เก็บค่าตัวเลข (0/1)
TINYINT ข้อมูลตัวเลข
SMALLINT ข้อมูลตัวเลข ขนาดเล็กกว่า INTEGER
INTEGER ข้อมูลประเภทตัวเลข
REAL ข้อมูลเลขจำนวนจริง
FLOAT ข้อมูลเลขทศนิยม
DOUBLE ข้อมูลเลขทศนิยม ความแม่นยำสูง
DECIMAL ข้อมูลเลขทศนิยม
NUMERIC ข้อมูลตัวเลข
CHAR ข้อมูลที่เป็นอักขระ
VARCHAR ข้อมูลตัวอักษร
BINARY ข้อมูลค่าจริง/เท็จ (0/1)
DATE ข้อมูลประเภทวันที่ เช่น MM-DD-YY
TIME ข้อมูลเวลา
TIMESTAMP ข้อมูลเวลา
ตารางที่ 11.
คำสั่งในการจัดการกับฐานข้อมูล (Database)
ในภาษา SQL สามารถใช้ชุดคำสั่งเพื่อจัดการกับข้อมูลได้ ดังต่อไปนี้
1. การแสดงข้อมูลในตาราง
- การแสดงข้อมูลภายใน 1 ตาราง
การเรียกดูข้อมูลทั้งหมดในตาราง
Syntax:
SELECT * FROM ระบุชื่อตาราง;
ตัวอย่าง:
SELECT * FROM Personal;
การเรียกดูข้อมูลบาง Field
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ระบุชื่อตาราง;
ตัวอย่าง:
SELECT Pid, Pname, Paddress FROM Personal;
การเรียกดูข้อมูลแบบมีเงื่อนไข
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ระบุชื่อตาราง;
WHERE ระบุเงื่อนไข ;
ตัวอย่าง:
SELECT Pid, Pname, Paddress FROM Personal;
WHERE P_age >= 25;
การกำหนดเงื่อนไขในส่วนของ WHERE
- ใช้เครื่องหมายในการเปรียบเทียบค่า (Comparison Operator) ได้แก่
> >= < <=
LIKE
IN
เช่น WHERE P_age >= 25; หรือ
WHERE Pname LIKE ‘%นี%; ß เปรียบเทียบบางส่วนของข้อความ หรือ
WHERE P_age IN (25,30);
- การใช้ตัวเชื่อมเงื่อนไข AND และ OR เช่น
WHERE P_age = 25 OR P_age = 30; หรือ
WHERE P_age = 25 AND P_age = 30;
การเรียกดูข้อมูลโดยใช้เงื่อนไขในการจัดเรียงข้อมูล (Sort)
Syntax:
SELECT * FROM ระบุชื่อตาราง ORDER BY ระบุชื่อ Field;
ตัวอย่าง:
SELECT * FROM Personal ORDER BY Pid;
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ระบุชื่อตาราง;
ORDER BY ระบุชื่อ Field;
ตัวอย่าง:
SELECT Pid, Pname, Paddress FROM Personal ORDER BY Pid; หรือ
SELECT Pid, Pname, Paddress FROM Personal ORDER BY Pid DESC;
SELECT Pid, Pname, Paddress FROM Personal ORDER BY Pid ASC;
เมื่อ DESC ใช้เมื่อต้องการเรียงข้อมูลจากมากไปหาน้อย (Descending)
ASC ใช้เมื่อต้องการเรียงข้อมูลจากน้อยไปหามาก (Ascending)
- การแสดงข้อมูลจากหลายตาราง
Syntax:
SELECT ชื่อ Field1,ชื่อ Field2,…,ชื่อ Fieldn FROM ชื่อตารางที่1,ชื่อตารางที่2 WHERE ระบุเงื่อนไขของทั้ง 2 ตาราง ORDER BY ระบุ Field และรูปแบบการจัดเรียง;
ตัวอย่าง:
SELECT Personal.Pid,Personal.Pname,Training.Tcourse FROM Personal,Training
WHERE Personal.Pid = Training.Pid ORDER BY Personal.Pid DESC;
2. การเพิ่มข้อมูล
- การเพิ่มข้อมูลภายใน 1 ตาราง
Syntax :
INSERT INTO ชื่อตาราง (ชื่อ field ที่1 , ชื่อ field ที่2…ชื่อ field ที่n) VALUES (‘ข้อมูลข้อความ’, ข้อมูลตัวเลข);
ตัวอย่าง:
INSERT INTO Sale (sid_produc , sunit) VALUES (‘001’, 1500);
- การเพิ่มข้อมูลลงในหลายตาราง
3. การแก้ไขหรือ update ข้อมูล
- การ update ข้อมูลภายในหนึ่งตาราง
Syntax:
UPDATE ชื่อตาราง SET ชื่อ Field = ค่าของข้อมูล WHERE ระบุเงื่อนไขของ record ทีต้องการ update;
ตัวอย่าง:
UPDATE Personal SET paddress = ‘บางเขน’ WHERE pname = ‘สุนีย์’;
- การ update ข้อมูลหลายตาราง
4. การลบข้อมูล
- การลบตาราง
Syntax
DELETE TABLE ชื่อตาราง;
ตัวอย่าง :
DELETE TABLE Personal;
- การลบข้อมูลเฉพาะ Record
Syntax :
DELETE FROM ชื่อตาราง WHERE ระบุเงื่อนไขในการลบ;
ตัวอย่าง :
DELETE FROM Personal WHERE pname = ‘สุนีย์’;
5. คำสั่งสร้างฐานข้อมูล
Syntax :
CREATE DATABASE ชื่อฐานข้อมูล;
ตัวอย่าง :
CREATE DATABASE MyDB;
6. การลบฐานมูล
Syntax:
DROP DATABASE ชื่อฐานข้อมูล;
ตัวอย่าง :
DROP DATABASE MyDB;
7. การสร้างตาราง
Syntax:
CREATE TABLE ระบุชื่อตาราง(ชื่อ Field ชนิดข้อมูล ประเภทของ Key ,…);
ตัวอย่าง :
CREATE TABLE Personal(Pid CHAR(4) PRIMARY KEY,
Pname VARCHAR(25) );
การจัดการฐานข้อมูล (Managing to Database)
เมื่อเราสามารถเรียกข้อมูลจาก Database ออกมาแสดงได้แล้ว จากนี้เราสามารถเขียนปุ่มคำสั่งต่าง
ๆ เพื่อจัดการกับข้อมูลภายในฐานข้อมูลได้
การสร้างปุ่มคำสั่งเพื่อจัดการกับฐานข้อมูล (JFdbManage.java)
Output:
กำหนด Properties ให้กับแต่ละ Component ดังนี้
Component
Properties
JButton1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : l<
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdtop
JButton2
เปลี่ยนข้อความบนปุ่ม (Edit Text) : <
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdpre
JButton3
เปลี่ยนข้อความบนปุ่ม (Edit Text) : >
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdnext
JButton4
เปลี่ยนข้อความบนปุ่ม (Edit Text) : >l
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdlast
JButton5
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Add
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdadd
JButton6
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Save
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdsave
JButton7
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Delete
เปลี่ยนชื่อเป็น(Change Variable Name) : cmddel
JButton8
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Update
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdedit
JButton9
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Find
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdfind
JButton10
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Print
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdprint
JButton11
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Close
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdclose
JTextField1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : ค่าว่าง
JTextField2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JTextField3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JLabel1
เปลี่ยนข้อความบนปุ่ม (Edit Text) :รหัส
JLabel2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ชื่อ
JLabel3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :นามสกุล
JFrame
title : Manage DB
ตารางที่ 11.... กำหนดคุณสมบัติของ Component ในหน้าจอ Frame Design
Source Code:
package applicationann;
import java.sql.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.xml.transform.Result;
import javax.swing.JOptionPane;
public class JFdbManage extends javax.swing.JFrame {
Statement stmt1,stmt;
Connection con;
public int mem=0;
/** Creates new form JFdb */
public JFdbManage () {
initComponents();
}
private void formWindowClosed(java.awt.event.WindowEvent evt) {
try{
con.close();
}catch(SQLException e){
}
// TODO add your handling code here:
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
}
try{
String url = "jdbc:odbc:testjava";
con = DriverManager.getConnection(url,"per_dep.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
System.err.print(e.getMessage());
}
//--------------
try{
String SQL = "select * from personal order by id";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
mem = rs.getRow();
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
//**********************************************************************
private void cmdsaveMouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.absolute(mem);
rs.updateString("id",text1.getText());
rs.updateString("name",text2.getText());
rs.updateString("last_name",text3.getText());
rs.insertRow();
rs.refreshRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
private void cmdpreMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
mem--;
rs.absolute(mem);
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
if (mem==0)
{
System.out.println("First record");
cmdpre.setToolTipText("First Record");
cmdpre.setEnabled(false);
cmdtop.setEnabled(false);
cmdnext.setEnabled(true);
cmdlast.setEnabled(true); }
else{
cmdtop.setEnabled(false);
cmdnext.setEnabled(true);
cmdlast.setEnabled(true);
cmdtop.setEnabled(true);
}
}
private void cmdnextMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
mem++;
rs.absolute(mem);
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
if (mem==0)
{
System.out.println("Last record");
cmdnext.setToolTipText("Last Record");
cmdnext.setEnabled(false);
cmdlast.setEnabled(false);
cmdtop.setEnabled(true);
cmdpre.setEnabled(true); }
else {
cmdtop.setEnabled(true);
cmdpre.setEnabled(true);
cmdlast.setEnabled(true); }
}
private void cmdlastMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
rs.last();
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
cmdlast.setToolTipText("Last Record");
cmdlast.setEnabled(false);
cmdnext.setEnabled(false);
cmdtop.setEnabled(true);
cmdpre.setEnabled(true);
}
private void cmdtopMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
if (mem==1) {
cmdtop.setEnabled(false);
cmdtop.setToolTipText("First Record");
cmdpre.setEnabled(false);
cmdnext.setEnabled(true);
cmdlast.setEnabled(true);
}
}
private void text2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
text3.requestFocus();
}
private void text1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
text2.requestFocus();
}
private void cmdcloseMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
con.close();
dispose();
}catch(SQLException e){
}
}
private void cmdeditMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.absolute(mem);
System.out.println(mem);
rs.updateString("name",text2.getText());
rs.updateString("last_name",text3.getText());
rs.updateRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
}
private void cmddelMouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.absolute(mem);
mem = rs.getRow();
System.out.println("delete record : "+mem);
if (JOptionPane.showConfirmDialog(null,"Delete sure?",
"Confirm",JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
rs.deleteRow();
rs.absolute(--mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name")); }
}catch (SQLException e) {
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
private void cmdaddMouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.last();
mem = rs.getRow();
mem++;
rs.absolute(mem);
rs.moveToInsertRow();
System.out.println(mem);
text1.requestFocus();
text1.setText("");
text2.setText("");
text3.setText("");
}catch (SQLException e) {
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
ๆ เพื่อจัดการกับข้อมูลภายในฐานข้อมูลได้
การสร้างปุ่มคำสั่งเพื่อจัดการกับฐานข้อมูล (JFdbManage.java)
Output:
กำหนด Properties ให้กับแต่ละ Component ดังนี้
Component
Properties
JButton1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : l<
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdtop
JButton2
เปลี่ยนข้อความบนปุ่ม (Edit Text) : <
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdpre
JButton3
เปลี่ยนข้อความบนปุ่ม (Edit Text) : >
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdnext
JButton4
เปลี่ยนข้อความบนปุ่ม (Edit Text) : >l
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdlast
JButton5
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Add
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdadd
JButton6
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Save
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdsave
JButton7
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Delete
เปลี่ยนชื่อเป็น(Change Variable Name) : cmddel
JButton8
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Update
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdedit
JButton9
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Find
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdfind
JButton10
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Print
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdprint
JButton11
เปลี่ยนข้อความบนปุ่ม (Edit Text) : Close
เปลี่ยนชื่อเป็น(Change Variable Name) : cmdclose
JTextField1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : ค่าว่าง
JTextField2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JTextField3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JLabel1
เปลี่ยนข้อความบนปุ่ม (Edit Text) :รหัส
JLabel2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ชื่อ
JLabel3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :นามสกุล
JFrame
title : Manage DB
ตารางที่ 11.... กำหนดคุณสมบัติของ Component ในหน้าจอ Frame Design
Source Code:
package applicationann;
import java.sql.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.xml.transform.Result;
import javax.swing.JOptionPane;
public class JFdbManage extends javax.swing.JFrame {
Statement stmt1,stmt;
Connection con;
public int mem=0;
/** Creates new form JFdb */
public JFdbManage () {
initComponents();
}
private void formWindowClosed(java.awt.event.WindowEvent evt) {
try{
con.close();
}catch(SQLException e){
}
// TODO add your handling code here:
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
}
try{
String url = "jdbc:odbc:testjava";
con = DriverManager.getConnection(url,"per_dep.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
System.err.print(e.getMessage());
}
//--------------
try{
String SQL = "select * from personal order by id";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
mem = rs.getRow();
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
//**********************************************************************
private void cmdsaveMouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.absolute(mem);
rs.updateString("id",text1.getText());
rs.updateString("name",text2.getText());
rs.updateString("last_name",text3.getText());
rs.insertRow();
rs.refreshRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
private void cmdpreMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
mem--;
rs.absolute(mem);
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
if (mem==0)
{
System.out.println("First record");
cmdpre.setToolTipText("First Record");
cmdpre.setEnabled(false);
cmdtop.setEnabled(false);
cmdnext.setEnabled(true);
cmdlast.setEnabled(true); }
else{
cmdtop.setEnabled(false);
cmdnext.setEnabled(true);
cmdlast.setEnabled(true);
cmdtop.setEnabled(true);
}
}
private void cmdnextMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
mem++;
rs.absolute(mem);
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
if (mem==0)
{
System.out.println("Last record");
cmdnext.setToolTipText("Last Record");
cmdnext.setEnabled(false);
cmdlast.setEnabled(false);
cmdtop.setEnabled(true);
cmdpre.setEnabled(true); }
else {
cmdtop.setEnabled(true);
cmdpre.setEnabled(true);
cmdlast.setEnabled(true); }
}
private void cmdlastMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
rs.last();
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
cmdlast.setToolTipText("Last Record");
cmdlast.setEnabled(false);
cmdnext.setEnabled(false);
cmdtop.setEnabled(true);
cmdpre.setEnabled(true);
}
private void cmdtopMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
mem = rs.getRow();
System.out.println(mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
}catch(SQLException e){
System.err.print(e.getMessage());
}
if (mem==1) {
cmdtop.setEnabled(false);
cmdtop.setToolTipText("First Record");
cmdpre.setEnabled(false);
cmdnext.setEnabled(true);
cmdlast.setEnabled(true);
}
}
private void text2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
text3.requestFocus();
}
private void text1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
text2.requestFocus();
}
private void cmdcloseMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
con.close();
dispose();
}catch(SQLException e){
}
}
private void cmdeditMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.absolute(mem);
System.out.println(mem);
rs.updateString("name",text2.getText());
rs.updateString("last_name",text3.getText());
rs.updateRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
}
private void cmddelMouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.absolute(mem);
mem = rs.getRow();
System.out.println("delete record : "+mem);
if (JOptionPane.showConfirmDialog(null,"Delete sure?",
"Confirm",JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
rs.deleteRow();
rs.absolute(--mem);
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name")); }
}catch (SQLException e) {
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
private void cmdaddMouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal";
ResultSet rs = stmt.executeQuery(SQL);
rs.last();
mem = rs.getRow();
mem++;
rs.absolute(mem);
rs.moveToInsertRow();
System.out.println(mem);
text1.requestFocus();
text1.setText("");
text2.setText("");
text3.setText("");
}catch (SQLException e) {
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
การเข้าถึงฐานข้อมูล (Connecting to Databases)
เมื่อสร้าง Driver เสร็จเรียบร้อย คุณสามารถเข้าถึงฐานข้อมูลได้ โดยการสร้าง Form การเชื่อมต่อ ดังตัวอย่าง
- การเชื่อมต่อฐานข้อมูลและตรวจสอบข้อผิดพลาด (Jfconnectdb.java)
Output:
Component
Properties
JButton1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : show DB
JButton2
เปลี่ยนข้อความบนปุ่ม (Edit Text) : บันทึก
JTextField1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : ค่าว่าง
JTextField2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JTextField3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JLabel1
เปลี่ยนข้อความบนปุ่ม (Edit Text) :รหัส
JLabel2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ชื่อ
JLabel3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :นามสกุล
JTextArea1
text: Message
Frame
title : Connect DB
Source Code:
package applicationann;
import java.sql.*;
public class JFconnectdb extends javax.swing.JFrame {
Statement stmt1;
Connection con;
/** Creates new form JFconnectdb */
public JFconnectdb() {
initComponents();
}
private void formWindowClosed(java.awt.event.WindowEvent evt) {
try{
con.close();
}catch(SQLException e){
}
// TODO add your handling code here:
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
jTextArea1.setText(ex.getMessage());
}
try{
String url = "jdbc:odbc:testjava";
con = DriverManager.getConnection(url,"per_dep.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
jTextArea1.setText("ConnectionError : " + e.getMessage());
//System.err.print(e.getMessage());
}// TODO add your handling code here:
// TODO add your handling code here:
}
private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt1.executeUpdate("update table1 set test2 = 'personal'");
}catch(SQLException e){
jTextArea2.setText("error on update : " + e.getMessage());
}
}
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
jTextField1.setText(rs.getString("id"));
jTextField2.setText(rs.getString("name"));
jTextField3.setText(rs.getString("last_name"));
jTextArea2.setText("execute SQL : " + rs.getString(1));
rs.close();
}catch(SQLException e){
jTextArea1.setText("execute SQL : " + e.getMessage());
System.err.print(e.getMessage());
}// TODO add your handling code here:
}
- การเชื่อมต่อฐานข้อมูลและตรวจสอบข้อผิดพลาด (Jfconnectdb.java)
Output:
Component
Properties
JButton1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : show DB
JButton2
เปลี่ยนข้อความบนปุ่ม (Edit Text) : บันทึก
JTextField1
เปลี่ยนข้อความบนปุ่ม (Edit Text) : ค่าว่าง
JTextField2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JTextField3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ค่าว่าง
JLabel1
เปลี่ยนข้อความบนปุ่ม (Edit Text) :รหัส
JLabel2
เปลี่ยนข้อความบนปุ่ม (Edit Text) :ชื่อ
JLabel3
เปลี่ยนข้อความบนปุ่ม (Edit Text) :นามสกุล
JTextArea1
text: Message
Frame
title : Connect DB
Source Code:
package applicationann;
import java.sql.*;
public class JFconnectdb extends javax.swing.JFrame {
Statement stmt1;
Connection con;
/** Creates new form JFconnectdb */
public JFconnectdb() {
initComponents();
}
private void formWindowClosed(java.awt.event.WindowEvent evt) {
try{
con.close();
}catch(SQLException e){
}
// TODO add your handling code here:
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
jTextArea1.setText(ex.getMessage());
}
try{
String url = "jdbc:odbc:testjava";
con = DriverManager.getConnection(url,"per_dep.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
jTextArea1.setText("ConnectionError : " + e.getMessage());
//System.err.print(e.getMessage());
}// TODO add your handling code here:
// TODO add your handling code here:
}
private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt1.executeUpdate("update table1 set test2 = 'personal'");
}catch(SQLException e){
jTextArea2.setText("error on update : " + e.getMessage());
}
}
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
try{
String SQL = "select * from personal";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
jTextField1.setText(rs.getString("id"));
jTextField2.setText(rs.getString("name"));
jTextField3.setText(rs.getString("last_name"));
jTextArea2.setText("execute SQL : " + rs.getString(1));
rs.close();
}catch(SQLException e){
jTextArea1.setText("execute SQL : " + e.getMessage());
System.err.print(e.getMessage());
}// TODO add your handling code here:
}
การเชื่อมต่อฐานข้อมูล
การเชื่อมต่อฐานข้อมูลและจัดการกับฐานข้อมูล
หัวข้อ (Topic):
11.1 การสร้างฐานข้อมูลและกำหนดไดรเวอร์ (Setting Up Your Resources)
11.2 การเข้าถึงฐานข้อมูล (Connecting to Databases)
11.3 การจัดการฐานข้อมูล (Managing to Database)
11.4 คำสั่งเอสคิวแอล (SQL Command)
วัตถุประสงค์การเรียนรู้ (Learning Objective):
1. สามารถสร้างฐานข้อมูลและกำหนดไดรเวอร์เพื่อทำงานกับฐานข้อมูลได้
2. สามารถเชื่อมต่อการทำงานกับฐานข้อมูลได้
3. สามารถเขียนชุดคำสั่งในการจัดการกับฐานข้อมูลได้
4. อธิบายรูปแบบการใช้งานคำสั่ง SQL ได้
จากเนื้อหาในบทที่แล้ว เราได้ทราบถึงการใช้งาน Swing Package ซึ่งบรรจุคลาสของ Component ต่าง ๆ ที่หลากหลาย ที่ใช้ในการสร้างการเชื่อมต่อการทำงานกับ User แน่นอนว่าจุดประสงค์ของการทำงานกับโปรแกรมนั้นก็คือเรื่องของข้อมูล หากเราทำการสร้างแบบฟอร์มสำหรับรับค่าข้อมูลจากจาก User แล้วเก็บข้อมูลในตัวแปร ก็จะเป็นการเก็บข้อมูลเพียงชั่วขณะเท่านั้น ดังนั้นหากเราต้องการจัดเก็บข้อมูลอย่างมั่นคงและถาวร ก็ต้องมีการเก็บลงในฐานข้อมูล (Database) ซึ่งในบทนี้ จะขอแนะนำให้ทราบถึงวิธีการใช้ NetBeans ทำงานร่วมกับฐานมูล
11.1 การสร้างฐานข้อมูลและกำหนดไดรเวอร์ (Setting Up Your Resources)
แน่นอนประเภทของฐานข้อมูลนั้นมีหลายประเภท แต่ฐานข้อมูลประเภทที่ได้รับความนิยมในปัจจุบันก็คือฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ฐานข้อมูลประเภทนี้ทำให้คุณสามารถะเชื่อมโยง (Link) ข้อมูลแบบหลายต่อหลายได้ (Many-to-Many) แต่นับจากปัจจุบันถึงอนาคตฐานข้อมูลประเภทนี้จะถูกแทนที่ด้วยฐานข้อมูลเชิงวัตถุ (Object Database) ซึ่งเป็นฐานข้อมูลที่สามารถเก็บข้อมูลหลากประชนิด ทั้งข้อความ (Text) ภาพ(Image) เสียง (Voice) และมัลติมิเดีย (Multimedia) นอกจากนี้การทำงานกับฐานข้อมูล คุณจำเป็นต้องเลือกโปรแกรมฐานข้อมูลและโปรแกรมจัดการฐานข้อมูล (DBMS: Database Management System) ที่มีความเหมาะสมกับกับระบบ อีกทั้งคำนึงถึงค่าใช้จ่าย (Cost) ในการลงทุนเลือกซื้อ Software เหล่านี้อีกด้วย ว่าโปรแกรมฐานข้อมูลนั้น และสำหรับภาษา Java จัดเป็นโปรแกรม DBMS ที่ทำหน้าที่เป็นตัวกลางในการเชื่อมต่อกับฐานข้อมูล ทำให้เราสามารปรับปรุง (Update) ฐานข้อมูลได้ และ Java นั้นก็สามารถเชื่อมการทำงานกับฐานข้อมูลได้หลากหลายชนิด อาทิเช่นฐานข้อมูล Access, Oracle และ MySQL เป็นต้น และในที่นี้จะขอแนะนำวิธีการเชื่อม Java กับฐานข้อมูล Accesss เนื่องจากเป็นฐานข้อมูลขนาดเล็ก และคาดว่าเครื่องคอมพิวเตอร์ของท่านคงมีโปรแกรม MS-Access ติดตั้งพร้อมแล้ว ไม่ต้องค้นหาโปรแกรมอื่นเพิ่มเติม คงทำให้สะดวกและง่ายในการทำงานมากยิ่งขึ้น
การสร้างฐานข้อมูล
ให้เริ่มสร้างฐานข้อมูลใน Access ก่อนตามขั้นตอนดังต่อไปนี้
การเข้าใช้งานโปแกรม MS-Access และการสร้างฐานข้อมูล
1. Start > All Programs > Microsoft Access
2. เลือก Blank Database ที่แถบด้านขวามือ ดังรูป
การสร้างตาราง (Table)
ก่อนเริ่มสร้างตารางในการจัดเก็บข้อมูลมีความจำเป็นต้องออกแบบและกำหนดโครงสร้างของตาราง ซึ่งหลักการออกแบบ Table ภายใน database ต้องอาศัยการสร้างความสัมพันธ์ระหว่าง table และต้องทำการจัดบรรทัดฐานของ database (Normalization) เพื่อขจัดความซ้ำซ้อนของข้อมูลตามหลักวิชา ฐานข้อมูล ในที่นี้สมมติว่า เราจะสร้างฐานข้อมูลเพื่อเก็บบุคคล (Personal) จะขอยกตัวอย่างข้อมูลจำนวนไม่มากเพื่อให้ง่ายต่อการเข้าใจ
การกำหนดโครงสร้างของตาราง (Table Structure)
ทำการกำหนดโครงสร้างของตาราง ดังนี้
ชื่อตาราง (Table) : personal
ลำดับ
(Number) ชื่อ Field
(Field Name) ชนิดข้อมูล
(Data Type) ความกว้าง
(Field Size) อธิบาย
(Description)
1 id Text 4 รหัสพนักงาน
2 name Text 25 ชื่อพนักงาน
3 last_name Text 25 นามสกุล
เริ่มสร้างตาราง
1. เลือกป้าย Table ในแถบด้านซ้าย > เลือก Create table in Design view เพื่อกำหนดโครงสร้างตารางด้วยตัวคุณเอง
2. ทำการกำหนด Field ลงในตารางตามที่ได้ออกแบบไว้ ดังรูป
การกำหนด Primary Key
เมื่อกำหนดโครงสร้างของตารางเสร็จเรียบร้อยแล้ว ก่อนที่จะออกจากหน้าต่างนี้
เพื่อเข้าสู่การป้อนข้อมูล คุณจำเป็นต้องทำการกำหนดคีย์หลักของตาราง (Primary key) ซึ่งโดยปกติแล้วเราจะนิยมกำหนดให้ 1 Table ใช้ primary key 1 ตัวเท่านั้น แต่ก็ไม่จำเป็นเสมอไป สามารถมี primary key มากกว่า 1 ตัวได้ ขึ้นอยู่กับลักษณะข้อมูลในตาราง โดยคุณสมบัติหลัก ๆ ของ Field ที่เราจะเลือกใช้เป็น primary key นั้น จะเป็น Field ที่เก็บข้อมูลไม่ซ้ำกัน(unique) โดยมากนิยมใช้ข้อมูลรหัส เป็น primary key (ควรศึกษาเพิ่มในวิชาฐานข้อมูล) และการกำหนด primary key มีขั้นตอนดังนี้
1. Click ขวาที่หัวแถวของ Field “id” > เลือก Primary key > จะมีรูปกุญแจปรากฎขึ้น ให้ดูภาพตัวอย่างได้จากด้านบน
การป้อนข้อมูลในตาราง Data Sheet
สามารถป้อนข้อมูลในตารางได้ตามขั้นตอนต่อไปนี้
1. Click ปุ่ม Close ที่มุมขวามือที่ปิดหน้าต่างของตาราง > จะปรากฏ
dialog ถามว่าคุณต้องการ Save ตารางหรือไม่ ให้ตอบ Yes และระบุชื่อตารางที่ต้องการ Save
3. จากนั้นจะปรากฎชื่อตาราง “Personal” ที่หน้าต่างของ database > ให้
Double click ที่ชื่อตาราง “Personal” เพื่อเปิดตารางขึ้นมาสำหรับป้อนข้อมูล
คุณสามารถสลับการทำงานไปมาระหว่างหน้าต่างป้อนข้อมูล (Data Sheet) กับ
หน้าต่างโครงสร้างของตาราง (Table Structure) ได้ โดยใช้ปุ่ม View ที่มุมบนซ้ายมือ ดังรูป
ถ้าคุณอยู่ในหน้าต่างโครงสร้างของตาราง (Table Structure) แล้วต้องการสลับไป
ยังหน้าต่าง Data Sheet ปุ่ม View จะเปลี่ยนสถานะจากรูปดินสอ เป็นรูป
- การแก้ไขโครงสร้างของตาราง
1. เมื่ออยู่ในหน้าต่าง Database > Click ขวาที่ชื่อตาราง “Personal” > เลือก
Design View
กำหนดไดรเวอร์ (Driver)
คุณสามารถเข้ากำหนด Driver เพื่อทำงานร่วมกับฐานข้อมูล Access ได้ตามขั้นตอนดังต่อไปนี้
1. Start > Control Panel > Administrative Tools > Data Sources (ODBC)
2. เลือกป้าย System DSN > Add > Microsoft Access Driver (*.mdb) > Finish
3. จะปรากฏหน้าจอ dialog ให้กำหนดชื่อ Driver > พิมพ์ชื่อ Driver ที่ต้องการลงในช่อง Data Source Name ดังรูป (หมายเลข 2) ตั้งชื่อ Driver ชื่อ Testjava
4. จากนั้น click ปุ่ม Select เพื่อเข้าไปเลือกฐานข้อมูลที่ต้องการใช้ (ตามรูปหมายเลข 3) > ให้ค้นหาที่อยู่ของ Database โดยทำงานตามขั้นตอนหมายเลข 4-7
5. จะกลับเข้าสู่หน้าจอ ดังรูป > ให้ click ปุ่ม OK
6. จากนั้นจะกลับสู่การทำงานของป้าย System DSN และปรากฎชื่อ Driver “testjava” ตามที่ได้กำหนดไว้ > คุณสามารถ click ปุ่ม Configure เพื่อย้อนกลับไปแก้ไข หรือเปลี่ยนแปลงรายการฐานข้อมูลที่เลือก
7. เมื่อกำหนดข้อมูลเสร็จเรียบร้อย ต้องการจบการทำงานให้ click ปุ่ม Apply > OK
หัวข้อ (Topic):
11.1 การสร้างฐานข้อมูลและกำหนดไดรเวอร์ (Setting Up Your Resources)
11.2 การเข้าถึงฐานข้อมูล (Connecting to Databases)
11.3 การจัดการฐานข้อมูล (Managing to Database)
11.4 คำสั่งเอสคิวแอล (SQL Command)
วัตถุประสงค์การเรียนรู้ (Learning Objective):
1. สามารถสร้างฐานข้อมูลและกำหนดไดรเวอร์เพื่อทำงานกับฐานข้อมูลได้
2. สามารถเชื่อมต่อการทำงานกับฐานข้อมูลได้
3. สามารถเขียนชุดคำสั่งในการจัดการกับฐานข้อมูลได้
4. อธิบายรูปแบบการใช้งานคำสั่ง SQL ได้
จากเนื้อหาในบทที่แล้ว เราได้ทราบถึงการใช้งาน Swing Package ซึ่งบรรจุคลาสของ Component ต่าง ๆ ที่หลากหลาย ที่ใช้ในการสร้างการเชื่อมต่อการทำงานกับ User แน่นอนว่าจุดประสงค์ของการทำงานกับโปรแกรมนั้นก็คือเรื่องของข้อมูล หากเราทำการสร้างแบบฟอร์มสำหรับรับค่าข้อมูลจากจาก User แล้วเก็บข้อมูลในตัวแปร ก็จะเป็นการเก็บข้อมูลเพียงชั่วขณะเท่านั้น ดังนั้นหากเราต้องการจัดเก็บข้อมูลอย่างมั่นคงและถาวร ก็ต้องมีการเก็บลงในฐานข้อมูล (Database) ซึ่งในบทนี้ จะขอแนะนำให้ทราบถึงวิธีการใช้ NetBeans ทำงานร่วมกับฐานมูล
11.1 การสร้างฐานข้อมูลและกำหนดไดรเวอร์ (Setting Up Your Resources)
แน่นอนประเภทของฐานข้อมูลนั้นมีหลายประเภท แต่ฐานข้อมูลประเภทที่ได้รับความนิยมในปัจจุบันก็คือฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ฐานข้อมูลประเภทนี้ทำให้คุณสามารถะเชื่อมโยง (Link) ข้อมูลแบบหลายต่อหลายได้ (Many-to-Many) แต่นับจากปัจจุบันถึงอนาคตฐานข้อมูลประเภทนี้จะถูกแทนที่ด้วยฐานข้อมูลเชิงวัตถุ (Object Database) ซึ่งเป็นฐานข้อมูลที่สามารถเก็บข้อมูลหลากประชนิด ทั้งข้อความ (Text) ภาพ(Image) เสียง (Voice) และมัลติมิเดีย (Multimedia) นอกจากนี้การทำงานกับฐานข้อมูล คุณจำเป็นต้องเลือกโปรแกรมฐานข้อมูลและโปรแกรมจัดการฐานข้อมูล (DBMS: Database Management System) ที่มีความเหมาะสมกับกับระบบ อีกทั้งคำนึงถึงค่าใช้จ่าย (Cost) ในการลงทุนเลือกซื้อ Software เหล่านี้อีกด้วย ว่าโปรแกรมฐานข้อมูลนั้น และสำหรับภาษา Java จัดเป็นโปรแกรม DBMS ที่ทำหน้าที่เป็นตัวกลางในการเชื่อมต่อกับฐานข้อมูล ทำให้เราสามารปรับปรุง (Update) ฐานข้อมูลได้ และ Java นั้นก็สามารถเชื่อมการทำงานกับฐานข้อมูลได้หลากหลายชนิด อาทิเช่นฐานข้อมูล Access, Oracle และ MySQL เป็นต้น และในที่นี้จะขอแนะนำวิธีการเชื่อม Java กับฐานข้อมูล Accesss เนื่องจากเป็นฐานข้อมูลขนาดเล็ก และคาดว่าเครื่องคอมพิวเตอร์ของท่านคงมีโปรแกรม MS-Access ติดตั้งพร้อมแล้ว ไม่ต้องค้นหาโปรแกรมอื่นเพิ่มเติม คงทำให้สะดวกและง่ายในการทำงานมากยิ่งขึ้น
การสร้างฐานข้อมูล
ให้เริ่มสร้างฐานข้อมูลใน Access ก่อนตามขั้นตอนดังต่อไปนี้
การเข้าใช้งานโปแกรม MS-Access และการสร้างฐานข้อมูล
1. Start > All Programs > Microsoft Access
2. เลือก Blank Database ที่แถบด้านขวามือ ดังรูป
การสร้างตาราง (Table)
ก่อนเริ่มสร้างตารางในการจัดเก็บข้อมูลมีความจำเป็นต้องออกแบบและกำหนดโครงสร้างของตาราง ซึ่งหลักการออกแบบ Table ภายใน database ต้องอาศัยการสร้างความสัมพันธ์ระหว่าง table และต้องทำการจัดบรรทัดฐานของ database (Normalization) เพื่อขจัดความซ้ำซ้อนของข้อมูลตามหลักวิชา ฐานข้อมูล ในที่นี้สมมติว่า เราจะสร้างฐานข้อมูลเพื่อเก็บบุคคล (Personal) จะขอยกตัวอย่างข้อมูลจำนวนไม่มากเพื่อให้ง่ายต่อการเข้าใจ
การกำหนดโครงสร้างของตาราง (Table Structure)
ทำการกำหนดโครงสร้างของตาราง ดังนี้
ชื่อตาราง (Table) : personal
ลำดับ
(Number) ชื่อ Field
(Field Name) ชนิดข้อมูล
(Data Type) ความกว้าง
(Field Size) อธิบาย
(Description)
1 id Text 4 รหัสพนักงาน
2 name Text 25 ชื่อพนักงาน
3 last_name Text 25 นามสกุล
เริ่มสร้างตาราง
1. เลือกป้าย Table ในแถบด้านซ้าย > เลือก Create table in Design view เพื่อกำหนดโครงสร้างตารางด้วยตัวคุณเอง
2. ทำการกำหนด Field ลงในตารางตามที่ได้ออกแบบไว้ ดังรูป
การกำหนด Primary Key
เมื่อกำหนดโครงสร้างของตารางเสร็จเรียบร้อยแล้ว ก่อนที่จะออกจากหน้าต่างนี้
เพื่อเข้าสู่การป้อนข้อมูล คุณจำเป็นต้องทำการกำหนดคีย์หลักของตาราง (Primary key) ซึ่งโดยปกติแล้วเราจะนิยมกำหนดให้ 1 Table ใช้ primary key 1 ตัวเท่านั้น แต่ก็ไม่จำเป็นเสมอไป สามารถมี primary key มากกว่า 1 ตัวได้ ขึ้นอยู่กับลักษณะข้อมูลในตาราง โดยคุณสมบัติหลัก ๆ ของ Field ที่เราจะเลือกใช้เป็น primary key นั้น จะเป็น Field ที่เก็บข้อมูลไม่ซ้ำกัน(unique) โดยมากนิยมใช้ข้อมูลรหัส เป็น primary key (ควรศึกษาเพิ่มในวิชาฐานข้อมูล) และการกำหนด primary key มีขั้นตอนดังนี้
1. Click ขวาที่หัวแถวของ Field “id” > เลือก Primary key > จะมีรูปกุญแจปรากฎขึ้น ให้ดูภาพตัวอย่างได้จากด้านบน
การป้อนข้อมูลในตาราง Data Sheet
สามารถป้อนข้อมูลในตารางได้ตามขั้นตอนต่อไปนี้
1. Click ปุ่ม Close ที่มุมขวามือที่ปิดหน้าต่างของตาราง > จะปรากฏ
dialog ถามว่าคุณต้องการ Save ตารางหรือไม่ ให้ตอบ Yes และระบุชื่อตารางที่ต้องการ Save
3. จากนั้นจะปรากฎชื่อตาราง “Personal” ที่หน้าต่างของ database > ให้
Double click ที่ชื่อตาราง “Personal” เพื่อเปิดตารางขึ้นมาสำหรับป้อนข้อมูล
คุณสามารถสลับการทำงานไปมาระหว่างหน้าต่างป้อนข้อมูล (Data Sheet) กับ
หน้าต่างโครงสร้างของตาราง (Table Structure) ได้ โดยใช้ปุ่ม View ที่มุมบนซ้ายมือ ดังรูป
ถ้าคุณอยู่ในหน้าต่างโครงสร้างของตาราง (Table Structure) แล้วต้องการสลับไป
ยังหน้าต่าง Data Sheet ปุ่ม View จะเปลี่ยนสถานะจากรูปดินสอ เป็นรูป
- การแก้ไขโครงสร้างของตาราง
1. เมื่ออยู่ในหน้าต่าง Database > Click ขวาที่ชื่อตาราง “Personal” > เลือก
Design View
กำหนดไดรเวอร์ (Driver)
คุณสามารถเข้ากำหนด Driver เพื่อทำงานร่วมกับฐานข้อมูล Access ได้ตามขั้นตอนดังต่อไปนี้
1. Start > Control Panel > Administrative Tools > Data Sources (ODBC)
2. เลือกป้าย System DSN > Add > Microsoft Access Driver (*.mdb) > Finish
3. จะปรากฏหน้าจอ dialog ให้กำหนดชื่อ Driver > พิมพ์ชื่อ Driver ที่ต้องการลงในช่อง Data Source Name ดังรูป (หมายเลข 2) ตั้งชื่อ Driver ชื่อ Testjava
4. จากนั้น click ปุ่ม Select เพื่อเข้าไปเลือกฐานข้อมูลที่ต้องการใช้ (ตามรูปหมายเลข 3) > ให้ค้นหาที่อยู่ของ Database โดยทำงานตามขั้นตอนหมายเลข 4-7
5. จะกลับเข้าสู่หน้าจอ ดังรูป > ให้ click ปุ่ม OK
6. จากนั้นจะกลับสู่การทำงานของป้าย System DSN และปรากฎชื่อ Driver “testjava” ตามที่ได้กำหนดไว้ > คุณสามารถ click ปุ่ม Configure เพื่อย้อนกลับไปแก้ไข หรือเปลี่ยนแปลงรายการฐานข้อมูลที่เลือก
7. เมื่อกำหนดข้อมูลเสร็จเรียบร้อย ต้องการจบการทำงานให้ click ปุ่ม Apply > OK
การเชื่อมต่อฐานข้อมูล
ก่อนที่จะใช้งาน ADO เราจำเป็นต้องสร้าง Data Source Name (DSN) เสียก่อน โดย
เซ็ต Open Database Connectivity (ODBC) ให้เชื่อมไปยังฐานข้อมูลที่เราเตรียมไว้ ซึ่งขั้นตอนการเซ็ตมีดังนี้
1. เปิด Control Panel --- > 32 bit ODBC ของเครื่องที่ทำ Web Server
2. เลือกแท็บ System DSN แล้วคลิกปุ่ม Add
3. เลือกไดร์ฟเวอร์ของฐานข้อมูล ที่ต้องการเชื่อมต่อ ในที่นี้ เลือก Microsoft Access driver [*.mdb] แล้วคลิก Finish
4. กรอกรายละเอียดในช่อง Data Source Name ให้ตั้งชื่อของ DSN แล้วคลิกที่ปุ่ม Select เลือก MS Access 97 (*mdb) ตามต้องการ
การใช้งาน Connection Object
การที่จะติดต่อกับฐานข้อมูล เราต้องสร้างส่วนการเชื่อมต่อ หรือ Connection ก่อน โดยสร้างออบเจ็กต์สำหรับ การติดต่อ แล้วใช้เมธอด Open เปิดการเชื่อมต่อ เช่น
Set Conn=Server.CreateObject(“ADODB.Connection”)
Conn.Open “MYDSN”
บรรทัดแรก เป็นการสร้างอบบเจ็กต์สำหรับการติดต่อชื่อ Conn ไว้ก่อน จากนั้น ใช้เมธอด Open เปิดการเชื่อมต่อกับ Data Source Name ชื่อ MYDSN
การใช้งาน Recordset Object
เมื่อสร้างออบเจ็กต์การติดต่อแล้ว เราสามารถสร้าง Record Object เพื่อเอ็กซ์คิวต์ คำสั่งในการดึงข้อมูลจากฐานข้อมูลมาได้ เช่น
Set Rs=Server.Create(“ADODB.Recordset”)
Rs.Open “Select * From mytable Where id < 10”
เพื่อให้เกิดความเข้าใจ ถึงกระบวนการทำงาน ให้ศึกษาตามตัวอย่างด้านล่างนี้ ซึ่งแสดงการดึงข้อมูลจากฐานข้อมูล เพื่อแสดงออกยังตาราง
ตัวอย่าง 05_show.asp
<%@ LANGUAGE="VBSCRIPT" %>
แสดงการดึงข้อมูลจากฐานข้อมูล
<%
‘เชื่อมต่อฐานข้อมูล
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "DATASOURCE"
Set Rs=Server.CreateObject("ADODB.Recordset")
Rs.Open " Select * From info ",Conn
‘ ตรวจสอบ record
If Rs.EOF Then
Response.Write "ไม่พบข้อมูลเลยน่ะ"
Else
%>
"
‘ ปิดการเชื่อมต่อทั้งหมด
Rs.Close
Conn.Close
End If
%>
เมื่อเราทำการ Run โปรแกรม 05_show.asp แล้วจะปรากฎดังภาพด้านล่าง นี้ ซึ่งตัวอย่างของโปรแกรมตัวนี้ สามารถนำไปเปิดดูกับฐานข้อมูลอะไรก็ได้
ภาพแสดงตัวอย่าง 05_show.asp
If Rs.EOF Then เป็นการแสดงพรอพพอตี่ EOF ของ recordset Object ในการตรวจสอบเร็คคอร์ดเซ็ต ที่ได้ว่าพบหรือไม่ EOF หมายถึง เคอร์เซอร์ ของเร็คคอร์ดอยู่ตำแหน่งใต้สุดของเร็คคอร์ด ทั้งหมด
Do While Not Rs.EOF ให้ทำการตรวจสอบข้อมูลไปเรื่อย ๆ จนกว่าจะหมดเร็คคอร์ด
Rs.MoveNext เป็นการใช้เมธอด MoveNext ของ Recordset Object ในการเลื่อนเคอร์เซอร์ให้ไปอยู่ในเร็คคอร์ดถัดไปเรื่อย ๆ จนกระทั้งหมดทั้งเร็คคอร์ด
ปฎิบัติการรีเลชันแนลกับ SQL
แนวคิดของรีเลชันแนล คือ ความสัมพันธ์ของแนวคิดหลักและพื้นฐานจริง ๆ ของ รีเลชันแนล จึงมาอยู่ที่ความสัมพันธุ์ของข้อมูล ไม่ว่าเรากำลังระบบฐานข้อมูลจากโปรแกรมตัวใดก็ตาม ส่วนสำคัญที่เราจะสร้างและใช้งานระบบฐานข้อมูล คือ ภาษาที่สั่งการ เช่น SQL เป็นต้น ซึ่งมีโครงสร้างทางภาษาใกล้เคียงภาษามนุษย์ ซึ่งง่ายต่อการใช้งานมาก
ฐานข้อมูล คือ เอกสารที่เก็บรวบรวมข้อมูลต่าง ๆ ไว้ในลักษณะที่เป็นตาราง โดยข้อมูลจะถูกจัดเก็บเป็นรายการรวมเรียกว่าแถว (row) และในแต่ละแถวหรือแต่ละรายการ จะประกอบไปด้วยคอลัมน์ (column) เพื่อจำแนกประเภทของข้อมูล ตัวอย่างด้านล่างนี้ เป็นตัวอย่างฐานข้อมูลรายชื่อนักศึกษา ซึ่งประกอบด้วยรหัสประจำตัว ชื่อ สกุล และโปรแกรมวิชา
ตารางแสดงฐานข้อมูลรายชื่อนักศึกษา
รหัสประจำตัว
ชื่อ
นามสกุล
โปรแกรมวิชา
001
สมพงษ์
เลือดทหาร
สังคมศึกษา
002
สมบัติ
มักน้อย
สังคมศึกษา
003
พิบูลย์
สมประสงค์
ภาษาไทย
004
ณัฐนันท์
โสจิสกุล
นิเทศศาสตร์
005
วรรณวิสา
พาณิชเจริญ
อังกฤษศึกษา
006
กนกมาศ
สัมพันธ์
วิทยาศาสตร์
ในการสร้างฐานข้อมูลนั้น ที่นิยมใช้กัน คือ Microsoft Access ส่วนขั้นตอนในการสร้างนั้น ทุกคนสามารถสร้างกันได้อยู่แล้ว จะไม่ขอกล่าวรายละเอียดในที่นี่มากนัก
ฐานข้อมูลที่เราสร้างขึ้นมาใหม่นี้ ประกอบไปด้วยตารางชื่อ information เพียงตารางเดียวเท่านั้น เมื่อเราต้อการเพิ่มตาราง ข้อมูลเข้าไป เพื่อบันทึก ว่านักศึกษาคนนั้นอยู่ห้องไหน มีอาจารย์ที่ปรึกษาชื่ออะไร เราก็สร้างตารางขึ้นมาอีกหนึ่งตาราง แต่แทนที่เราจะต้องบันทึกชื่อ รามสกุลของนักศึกษาใหม่ เราก็บันทึกเพียงรหัสประจำตัวเทานั้น ซึ่งตารางทั้งสองนี้จะมีความสัมพันธ์กันอยู่ที่รหัสประจำตัว คือ เมื่อการเปลี่ยนแปลงข้อมูลนักศึกษา ตารางที่แสดงห้อง ก็จะแสดงข้อมูลที่มีการเปลี่ยนแปลงของนักศึกษาคนนั้นด้วย
เซ็ต Open Database Connectivity (ODBC) ให้เชื่อมไปยังฐานข้อมูลที่เราเตรียมไว้ ซึ่งขั้นตอนการเซ็ตมีดังนี้
1. เปิด Control Panel --- > 32 bit ODBC ของเครื่องที่ทำ Web Server
2. เลือกแท็บ System DSN แล้วคลิกปุ่ม Add
3. เลือกไดร์ฟเวอร์ของฐานข้อมูล ที่ต้องการเชื่อมต่อ ในที่นี้ เลือก Microsoft Access driver [*.mdb] แล้วคลิก Finish
4. กรอกรายละเอียดในช่อง Data Source Name ให้ตั้งชื่อของ DSN แล้วคลิกที่ปุ่ม Select เลือก MS Access 97 (*mdb) ตามต้องการ
การใช้งาน Connection Object
การที่จะติดต่อกับฐานข้อมูล เราต้องสร้างส่วนการเชื่อมต่อ หรือ Connection ก่อน โดยสร้างออบเจ็กต์สำหรับ การติดต่อ แล้วใช้เมธอด Open เปิดการเชื่อมต่อ เช่น
Set Conn=Server.CreateObject(“ADODB.Connection”)
Conn.Open “MYDSN”
บรรทัดแรก เป็นการสร้างอบบเจ็กต์สำหรับการติดต่อชื่อ Conn ไว้ก่อน จากนั้น ใช้เมธอด Open เปิดการเชื่อมต่อกับ Data Source Name ชื่อ MYDSN
การใช้งาน Recordset Object
เมื่อสร้างออบเจ็กต์การติดต่อแล้ว เราสามารถสร้าง Record Object เพื่อเอ็กซ์คิวต์ คำสั่งในการดึงข้อมูลจากฐานข้อมูลมาได้ เช่น
Set Rs=Server.Create(“ADODB.Recordset”)
Rs.Open “Select * From mytable Where id < 10”
เพื่อให้เกิดความเข้าใจ ถึงกระบวนการทำงาน ให้ศึกษาตามตัวอย่างด้านล่างนี้ ซึ่งแสดงการดึงข้อมูลจากฐานข้อมูล เพื่อแสดงออกยังตาราง
ตัวอย่าง 05_show.asp
<%@ LANGUAGE="VBSCRIPT" %>
แสดงการดึงข้อมูลจากฐานข้อมูล
<%
‘เชื่อมต่อฐานข้อมูล
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "DATASOURCE"
Set Rs=Server.CreateObject("ADODB.Recordset")
Rs.Open " Select * From info ",Conn
‘ ตรวจสอบ record
If Rs.EOF Then
Response.Write "ไม่พบข้อมูลเลยน่ะ"
Else
%>
| "&Rs(i).Name&" | "|||
|---|---|---|---|
| "&Rs("id")&" | ""&Rs("Fname")&" | ""&Rs("Lname")&" | ""&Rs("position")&" |
‘ ปิดการเชื่อมต่อทั้งหมด
Rs.Close
Conn.Close
End If
%>
เมื่อเราทำการ Run โปรแกรม 05_show.asp แล้วจะปรากฎดังภาพด้านล่าง นี้ ซึ่งตัวอย่างของโปรแกรมตัวนี้ สามารถนำไปเปิดดูกับฐานข้อมูลอะไรก็ได้
ภาพแสดงตัวอย่าง 05_show.asp
If Rs.EOF Then เป็นการแสดงพรอพพอตี่ EOF ของ recordset Object ในการตรวจสอบเร็คคอร์ดเซ็ต ที่ได้ว่าพบหรือไม่ EOF หมายถึง เคอร์เซอร์ ของเร็คคอร์ดอยู่ตำแหน่งใต้สุดของเร็คคอร์ด ทั้งหมด
Do While Not Rs.EOF ให้ทำการตรวจสอบข้อมูลไปเรื่อย ๆ จนกว่าจะหมดเร็คคอร์ด
Rs.MoveNext เป็นการใช้เมธอด MoveNext ของ Recordset Object ในการเลื่อนเคอร์เซอร์ให้ไปอยู่ในเร็คคอร์ดถัดไปเรื่อย ๆ จนกระทั้งหมดทั้งเร็คคอร์ด
ปฎิบัติการรีเลชันแนลกับ SQL
แนวคิดของรีเลชันแนล คือ ความสัมพันธ์ของแนวคิดหลักและพื้นฐานจริง ๆ ของ รีเลชันแนล จึงมาอยู่ที่ความสัมพันธุ์ของข้อมูล ไม่ว่าเรากำลังระบบฐานข้อมูลจากโปรแกรมตัวใดก็ตาม ส่วนสำคัญที่เราจะสร้างและใช้งานระบบฐานข้อมูล คือ ภาษาที่สั่งการ เช่น SQL เป็นต้น ซึ่งมีโครงสร้างทางภาษาใกล้เคียงภาษามนุษย์ ซึ่งง่ายต่อการใช้งานมาก
ฐานข้อมูล คือ เอกสารที่เก็บรวบรวมข้อมูลต่าง ๆ ไว้ในลักษณะที่เป็นตาราง โดยข้อมูลจะถูกจัดเก็บเป็นรายการรวมเรียกว่าแถว (row) และในแต่ละแถวหรือแต่ละรายการ จะประกอบไปด้วยคอลัมน์ (column) เพื่อจำแนกประเภทของข้อมูล ตัวอย่างด้านล่างนี้ เป็นตัวอย่างฐานข้อมูลรายชื่อนักศึกษา ซึ่งประกอบด้วยรหัสประจำตัว ชื่อ สกุล และโปรแกรมวิชา
ตารางแสดงฐานข้อมูลรายชื่อนักศึกษา
รหัสประจำตัว
ชื่อ
นามสกุล
โปรแกรมวิชา
001
สมพงษ์
เลือดทหาร
สังคมศึกษา
002
สมบัติ
มักน้อย
สังคมศึกษา
003
พิบูลย์
สมประสงค์
ภาษาไทย
004
ณัฐนันท์
โสจิสกุล
นิเทศศาสตร์
005
วรรณวิสา
พาณิชเจริญ
อังกฤษศึกษา
006
กนกมาศ
สัมพันธ์
วิทยาศาสตร์
ในการสร้างฐานข้อมูลนั้น ที่นิยมใช้กัน คือ Microsoft Access ส่วนขั้นตอนในการสร้างนั้น ทุกคนสามารถสร้างกันได้อยู่แล้ว จะไม่ขอกล่าวรายละเอียดในที่นี่มากนัก
ฐานข้อมูลที่เราสร้างขึ้นมาใหม่นี้ ประกอบไปด้วยตารางชื่อ information เพียงตารางเดียวเท่านั้น เมื่อเราต้อการเพิ่มตาราง ข้อมูลเข้าไป เพื่อบันทึก ว่านักศึกษาคนนั้นอยู่ห้องไหน มีอาจารย์ที่ปรึกษาชื่ออะไร เราก็สร้างตารางขึ้นมาอีกหนึ่งตาราง แต่แทนที่เราจะต้องบันทึกชื่อ รามสกุลของนักศึกษาใหม่ เราก็บันทึกเพียงรหัสประจำตัวเทานั้น ซึ่งตารางทั้งสองนี้จะมีความสัมพันธ์กันอยู่ที่รหัสประจำตัว คือ เมื่อการเปลี่ยนแปลงข้อมูลนักศึกษา ตารางที่แสดงห้อง ก็จะแสดงข้อมูลที่มีการเปลี่ยนแปลงของนักศึกษาคนนั้นด้วย
เครื่องช่วยเดิน – นวัตกรรมใหม่ของฮอนด้า
กำลังสงสัยล่ะสิ ว่าเจ้าอุปกรณ์หน้าตาประหลาดๆ นี้มันคืออะไร มีไว้ทำไม คำตอบก็คือ มันคือเครื่องช่วยเดิน ที่บริษัทฮอนด้าได้ประดิษฐ์ขึ้น และเปิดตัวความสำเร็จขั้นที่สองไปเมื่อไม่นานมานี้เอง ขณะนี้กำลังอยู่ในช่วงทดลองการใช้งานจริง
ว่ากันว่า ด้วยอุปกรณ์ช่วยเดินนี้ ผู้ใช้จะสามารถก้าวขาได้ยาวกว่าปกติ (เปรียบเทียบกับเวลาที่ไม่ได้ใช้) ทำให้การเดินง่ายยิ่งขึ้น นำมาใช้สำหรับทุ่นแรงของคนงานในโรงงานต่าง ๆ ที่ต้องยืนหรือเดินนานๆ หรือต้องลุกนั่งบ่อยๆ ได้เป็นอย่างดี โดยอุปกรณ์ที่ว่านี้ จะสามารถช่วยพยุงขาของผู้ที่สวมใส่ ไม่ให้แบกรับน้ำหนักมากเกินไปในขณะที่เดินไป-มา หรือต้องออกแรงมากมายในเวลาที่ต้องย่อเข่า ลุกขึ้น หรือเวลาที่เดินขึ้น-ลงบันได โดยอุปกรณ์ดังกล่าวถูกควบคุมด้วยระบบคอมพิวเตอร์ ติดเครื่องยนต์ และมีระบบเซ็นเซอร์ ซึ่งจะช่วยพยุงน้ำหนักของร่างกายได้ถึง 3 กิโลกรัม และในขณะที่ย่อตัว มันจะช่วยพยุงน้ำหนักได้ถึง 9 กิโลกรัมเลยทีเดียว
บริษัท ฮอนด้าริเริ่มวิจัยและพัฒนาเครื่องช่วยเดินมาตั้งแต่ตั้งแต่ปี พ.ศ. 2542 ด้วยวัตถุประสงค์เพื่อช่วยให้ผู้คนสามารถเดินทางไปในที่ต่างๆ อย่างมีความสุข ส่วนเทคโนโลยีที่ถูกนำมาใช้ในอุปกรณ์ดังกล่าว ก็คือ นวัตกรรมพิเศษที่พัฒนามาจากการศึกษาการเดินของมนุษย์ของฮอนด้ามาเป็นเวลายาวนาน ที่ใช้ในการวิจัยและพัฒนา “อาซิโม” หุ่นยนต์คล้ายมนุษย์ที่ล้ำยุคที่สุดในโลกนั่นเอง
ได้ยินแบบนี้แล้ว ผู้ป่วยหรือใครที่ขาไม่ค่อยจะเอื้ออำนวยให้เดินเหิน หรือทำกิจกรรมอื่นๆ ได้สะดวกอีกแล้ว คงจะยิ้มออกได้เลยล่ะงานนี้
ภาวะขาดแคลนน้ำเป็นปัญหาสำคัญที่กำลังคุกคามไปทั่วโลกคะ แต่อย่างไรก็ตาม เพื่อแก้ปัญหานี้ ดีไซน์เนอร์ชื่อ Leonardo Manavella ได้ออกแบบเครื่องมือหนึ่งที่อาจจะเป็นหนทางการแก้ไขของปัญหานี้ได้ นั้นก็คือ “Agua H2O” คะ ... เอ้า!...ดูจากรูปแล้วพอจะเดากันได้ไหมเอ่ย ว่าไอเจ้า Aqua H20 เนี้ย มันเอาไว้ใช้ทำอะไร .... แหม รูปประกอบโจ่งครึ้มขนาดนี้ ต้องทายกันถูกอยู่แล้วละ ^ ^
Aqua H20 เป็นเครื่องแปลงสภาพ " ปัสสาวะ " ซึ่งเป็นของเสียที่ถูกขับออกจากร่างกายให้กลายมาเป็นน้ำสะอาดคะ โดยทำงานผ่านระบบที่เรียกว่า “ Activated Carbon ซึ่งจะช่วยปรับทั้ง " สี " และ " กลิ่น " จากเดิมที่เป็นกลิ่นตุๆสีตุ่นๆ ให้กลายเป็นน้ำใสๆหอมหวนชวนดื่ม ซึ่งความพิเศษของเจ้าเครื่องนี้ก็คือ มันสามารถใช้ได้ทั้งปัสสาวะของคนและสัตว์ ( อืมม ... กินฉี่ของไอด่างที่บ้าน ) แถมยังมีขนาดกระทัดรัด พกพาสะดวก เหมาะกับการพกไว้เผื่อฉุกเฉินยาม และ.....ข้อสุดท้ายซึ่งเป็นข้อที่สำคัญที่สุดๆๆๆ นั้นก็คือ คุณไม่ต้องพกแก้วไว้รองน้ำให้เมื่อย เพราะคุณสามารถยกซดดับกระหายจากเครื่องได้ทันทีเลย เพียงแต่ ....คุณจะกล้าพอรึเปล่าละ... = ="
ว่ากันว่า ด้วยอุปกรณ์ช่วยเดินนี้ ผู้ใช้จะสามารถก้าวขาได้ยาวกว่าปกติ (เปรียบเทียบกับเวลาที่ไม่ได้ใช้) ทำให้การเดินง่ายยิ่งขึ้น นำมาใช้สำหรับทุ่นแรงของคนงานในโรงงานต่าง ๆ ที่ต้องยืนหรือเดินนานๆ หรือต้องลุกนั่งบ่อยๆ ได้เป็นอย่างดี โดยอุปกรณ์ที่ว่านี้ จะสามารถช่วยพยุงขาของผู้ที่สวมใส่ ไม่ให้แบกรับน้ำหนักมากเกินไปในขณะที่เดินไป-มา หรือต้องออกแรงมากมายในเวลาที่ต้องย่อเข่า ลุกขึ้น หรือเวลาที่เดินขึ้น-ลงบันได โดยอุปกรณ์ดังกล่าวถูกควบคุมด้วยระบบคอมพิวเตอร์ ติดเครื่องยนต์ และมีระบบเซ็นเซอร์ ซึ่งจะช่วยพยุงน้ำหนักของร่างกายได้ถึง 3 กิโลกรัม และในขณะที่ย่อตัว มันจะช่วยพยุงน้ำหนักได้ถึง 9 กิโลกรัมเลยทีเดียว
บริษัท ฮอนด้าริเริ่มวิจัยและพัฒนาเครื่องช่วยเดินมาตั้งแต่ตั้งแต่ปี พ.ศ. 2542 ด้วยวัตถุประสงค์เพื่อช่วยให้ผู้คนสามารถเดินทางไปในที่ต่างๆ อย่างมีความสุข ส่วนเทคโนโลยีที่ถูกนำมาใช้ในอุปกรณ์ดังกล่าว ก็คือ นวัตกรรมพิเศษที่พัฒนามาจากการศึกษาการเดินของมนุษย์ของฮอนด้ามาเป็นเวลายาวนาน ที่ใช้ในการวิจัยและพัฒนา “อาซิโม” หุ่นยนต์คล้ายมนุษย์ที่ล้ำยุคที่สุดในโลกนั่นเอง
ได้ยินแบบนี้แล้ว ผู้ป่วยหรือใครที่ขาไม่ค่อยจะเอื้ออำนวยให้เดินเหิน หรือทำกิจกรรมอื่นๆ ได้สะดวกอีกแล้ว คงจะยิ้มออกได้เลยล่ะงานนี้
ภาวะขาดแคลนน้ำเป็นปัญหาสำคัญที่กำลังคุกคามไปทั่วโลกคะ แต่อย่างไรก็ตาม เพื่อแก้ปัญหานี้ ดีไซน์เนอร์ชื่อ Leonardo Manavella ได้ออกแบบเครื่องมือหนึ่งที่อาจจะเป็นหนทางการแก้ไขของปัญหานี้ได้ นั้นก็คือ “Agua H2O” คะ ... เอ้า!...ดูจากรูปแล้วพอจะเดากันได้ไหมเอ่ย ว่าไอเจ้า Aqua H20 เนี้ย มันเอาไว้ใช้ทำอะไร .... แหม รูปประกอบโจ่งครึ้มขนาดนี้ ต้องทายกันถูกอยู่แล้วละ ^ ^
Aqua H20 เป็นเครื่องแปลงสภาพ " ปัสสาวะ " ซึ่งเป็นของเสียที่ถูกขับออกจากร่างกายให้กลายมาเป็นน้ำสะอาดคะ โดยทำงานผ่านระบบที่เรียกว่า “ Activated Carbon ซึ่งจะช่วยปรับทั้ง " สี " และ " กลิ่น " จากเดิมที่เป็นกลิ่นตุๆสีตุ่นๆ ให้กลายเป็นน้ำใสๆหอมหวนชวนดื่ม ซึ่งความพิเศษของเจ้าเครื่องนี้ก็คือ มันสามารถใช้ได้ทั้งปัสสาวะของคนและสัตว์ ( อืมม ... กินฉี่ของไอด่างที่บ้าน ) แถมยังมีขนาดกระทัดรัด พกพาสะดวก เหมาะกับการพกไว้เผื่อฉุกเฉินยาม และ.....ข้อสุดท้ายซึ่งเป็นข้อที่สำคัญที่สุดๆๆๆ นั้นก็คือ คุณไม่ต้องพกแก้วไว้รองน้ำให้เมื่อย เพราะคุณสามารถยกซดดับกระหายจากเครื่องได้ทันทีเลย เพียงแต่ ....คุณจะกล้าพอรึเปล่าละ... = ="
สมัครสมาชิก:
บทความ (Atom)
