ความสามารถของโปรแกรมที่เขียน
1. ติดต่อกับฐานข้อมูลได้
2. โปรแกรมสามารถ เพิ่ม ลบ แก้ไข ค้นหารายการได้
โปรแกรมที่ใช้คือ
1. Netbean เครื่องมือสำหรับใช้เขียนโปรแกรม
2. Appser คือโปรแกรมที่รวบรวมเอา Open Source Software หลายๆ อย่างมารวมกัน โดยมี Package หลักดังนี้ Apache, PHP, MySQL, phpMyAdmin
ขั้นตอนการติดตั้งการใช้งานเบื้องต้นสามารถค้นได้จาก google.com
เตรียมฐานข้อมูล
1. สร้างฐานข้อมูลใน phpMyAdmin ให้ฐานข้อมูลชื่อว่า db_javaphone
2. จากนั้นทำการสร้างตารางชื่อว่า tb_phone ตามโครงสร้างดังนี้
คำสั่ง sql ในการสร้างตาราง
CREATE TABLE `tb_phone` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 255 ) NOT NULL ,
`price` INT( 5 ) NOT NULL ,
`color` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
เชื่อมต่อฐานข้อมูล
1. โดยเริ่มจากทำการสร้างโปรเจ๊คใน netbean ขึ้นมาใหม่ ให้เป็นชนิด java application ทำการตั้งชื่อโปรเจ๊ค
2. สร้างไฟล์ขึ้นมา ในที่นี้ใช้ชื่อว่า JPhone แล้วทำการเพิ่ม jar file เพื่อให้เชื่อมต่อกับฐานข้อมูลได้ โดยคลิ๊กขวาที่ libraries และเลือก Add Library… ตามรูป
จะพบว่ามี libraries เพิ่มเข้ามาดังภาพ
3. ต่อมาสร้างไฟล์ Db.java เพื่อใช้เชื่อมต่อฐานข้อมูล และเขียนโค๊ดดังนี้
import java.sql.Connection; import java.sql.DriverManager; public class Db { public static Connection getConnection() { try { // เตรียมตัวแปรในการเชื่อมต่อ // url ตามชื่อฐานข้อมูล ส่วน user, pass ตามที่ตั้งค่าตอนติดตั้ง appserv String url = "jdbc:mysql://localhost/db_javaphone?characterEncoding=UTF-8"; String user = "root"; String pass = "1234"; String driver = "com.mysql.jdbc.Driver"; // load driver เข้าสู่หน่วยความจำ Class.forName(driver); // ทำการเชื่อมต่อฐานข้อมูล และ return return DriverManager.getConnection(url, user, pass); } catch (Exception e) { e.printStackTrace(); } return null; }//end main }//end class |
import java.sql.Connection; public class TestConnect { public static void main(String[] args) { try { Connection c = Db.getConnection(); if (c != null) { System.out.println("pass"); } else { System.out.println("fail"); } } catch (Exception e) { e.printStackTrace(); } }//end main }//end class |
จากนั้นไปกำหนด Event ให้กับปุ่มเพิ่ม คลิ๊กเมาท์ขวา --> Events --> Action --> actionPerformed เขียนโค๊ดดังนี้
ทำการผูก Event ให้เข้ากับหน้าหลัก โดยผูกเข้ากับปุ่ม เพิ่มรายการ

เขียนโค๊ดดังนี้
ทดสอบการทำงานที่ไฟล์ Main.java เมื่อคลิ๊กปุ่มเพิ่มรายการจะต้องมีไดอะล๊อคสำหรับเพิ่มรายการขึ้นมาดังรูป

กรอกข้อมูลที่ไดอะล๊อคแล้วกดบันทึก
จะพบว่ามีรายการใหม่เพิ่มขึ้นมาในตาราง
9. ปุ่มลบรายการ
การลบรายการจะต้องเลือกรายการใน jTable ก่อนทำการกดปุ่มลบ เพื่อให้ได้ค่า inex ของรายการ หากผู้ใช้ไม่ทำการเลือกรายการก่อนแล้วกดปุ่มลบจะทำให้เกิด error
เริ่มจากกำหนด event ให้กับปุ่มลบ โดยคลิ๊กเมาท์ขวา --> Events --> Action --> actionPerformed จากนั้นทำการเขียนโค๊ดดังนี้
ผลรัน
10. ปุ่มแก้ไขรายการ
การแก้ไขรายการเราจะใช้ไดอะล๊อคเดียวกันกับการเพิ่มรายการ เพียงแค่เขียนโค๊ดเพิ่มเข้าไป ให้สร้าง properties เข้าไปใน DialogPhone.java
ทำการผูก Event ให้เข้ากับหน้าหลัก โดยผูกเข้ากับปุ่มแก้ไขรายการ แล้วเขียนโค๊ด
ข้อสังเกต
- สามารถส่ง id ไปได้เลยเพราะว่าทำเป็นแบบ public ไว้
- tablePhone.getSelectedRow(); ใช้หาแถวที่กดว่าเป็นแถวที่เท่าไหร่
- ในการหา id ใช้ tablePhone.getValueAt(index, 0) ซึ่ง 0 เท่ากับ columแรกใน jTable
ทำการกำหนด Event ให้กับ DialogPhone เมื่อเปิดหน้าต่าง
ข้อสังเกต
- rs.next() คือการเริ่มอ่านรายการหรือเปิด record
- rs.close()คือการปิดการอ่านรายการ
- หลังจากเขียนโค๊ดเสร็จโปรแกรมจะแจ้งเตือนให้ import คลาสเพิ่ม ให้เรา import java.sql.ResultSet; เพิ่มเข้าไป
แก้ไขโค๊ดในส่วนของการบันทึกรายการเพิ่ม ที่ DialogPhone.java เขียนโค๊ดดังนี้

จากนั้นทำการใส่ event ให้กับปุ่มยกเลิก เพื่อล้างรายการที่กรอกไว้ กรณีเพิ่มและแก้ไขข้อมูล โดยคลิ๊กเมาท์ขวา --> Events --> Action --> และเขียนโค๊ดดังนี้
ทดสอบการทำงาน
11. ปุ่มค้นหารายการ
เริ่มจากการเพิ่ม properties ลงใน Main.java
ให้ทำการสร้างไดอะล๊อคขึ้นมาให้ใช้ชื่อว่า DialogSearch จัดรูปแบบให้มีหน้าตาดังภาพ และให้ jTextField มีชื่อว่า txtSearch ส่วนปุ่มเริ่มค้นหาให้ชื่อว่า cmdSearch
จากนั้นสร้าง properties ให้กับ DialogSearch ดังนี้
ทำการผูก event ให้กับปุ่มเริ่มค้นหา คลิ๊กเมาท์ขวา --> Events --> Action --> actionPerformed เขียนโค๊ดดังนี้
จากนั้นกำหนดปุ่มค้นหาในไฟล์ Main.java คลิ๊กเมาท์ขวา --> Events --> Action --> actionPerformed เขียนโค๊ดดังนี้
ไปแก้ไขโค๊ดในส่วนของ formWindowOpened ในไฟล์ Main.java ซึ่งจะเป็นคำสั่ง sql ให้เป็นไปตามหน้า DialogSearch ให้แก้ไขโค๊ดดังนี้
ผลรัน
จากการเขียนโปรแกรมที่ผ่านมาเราจะเห็นว่าได้มีการนำ sql มาใช้เขียนเพื่อจัดการข้อมูล เช่น SELECT, DELETE, INSERT, UPDATE ซึ่งหากในการเขียนโปรแกรมมีหลายตารางมากขึ้นและตารางมีความสัมพันธ์กันก็จะมีการใช้ sql ที่หลากหลายมากขึ้น
Dowload Code ได้ที่นี่
Dowload Code ได้ที่นี่
ปุ่มเพิ่มไม่ทำงาน ทั้งๆที่โค้ดถูกทุกอย่าง เป็นเพราะอะไรคะ ต้องแก้ไขยังไง
ตอบลบpass ใน phpmyadmin ของคุณ ได้ใส่เหมือนกับตัวอย่างป่าวครับ ถ้าคุณไม่ใส่ pass ให้แก้ไขตรงหน้า db.java แล้วเปลี่ยน String pass = ""; ดูครับ
ลบพบปัญหาเหมือนกันครับ ช่วยตอบทีนะครับ ถ้าได้
ตอบลบpass ใน phpmyadmin ของคุณ ได้ใส่เหมือนกับตัวอย่างป่าวครับ ถ้าคุณไม่ใส่ pass ให้แก้ไขตรงหน้า db.java แล้วเปลี่ยน String pass = ""; ดูครับ
ลบความคิดเห็นนี้ถูกผู้เขียนลบ
ตอบลบใช้คำสั่ง getSelectedRow ไม่ได้ค่ะ ขึ้นแดง cannot find symbol
ตอบลบกดปุ่มเพิ่มแล้วมันไม่ได้อะคะ ทำไงดีค่ะ
ตอบลบใครทำอย่างอื่นได้หมดแต่เพิ่มไม่ได้ ลองไปแก้ในsqlนะลองเอาของผมไป ผมคิดว่าที่ไม่ได้กันเป็นเพราะ ไม่ได้เลือกเป็น auto ยังไงก็เอาคำสั่งสร้างในsqlของผมไปลองครับ
ตอบลบ-- phpMyAdmin SQL Dump
-- version 4.9.2
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: 10 มี.ค. 2020 เมื่อ 05:12 AM
-- เวอร์ชันของเซิร์ฟเวอร์: 10.4.11-MariaDB
-- PHP Version: 7.4.1
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `tb_phone`
--
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `tb_phone`
--
CREATE TABLE `tb_phone` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`price` int(5) NOT NULL,
`color` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- dump ตาราง `tb_phone`
--
INSERT INTO `tb_phone` (`id`, `name`, `price`, `color`) VALUES
(1, 'LG', 4500, 'pink'),
(2, 'Motorola', 550, 'back'),
(3, 'Nokia 3310', 4500, 'Red'),
(4, 'Nokia N72', 4500, 'back'),
(5, 'Nokia N70', 4500, 'Red'),
(6, 'Iphone 6s', 8500, 'pink'),
(7, 'Iphone 10', 32000, 'Gold'),
(8, 'Iphone 8 PUS', 18000, 'Silver'),
(9, 'Iphone SE', 4500, 'Gold'),
(10, 'Iphone SE', 4500, 'pink'),
(11, 'Samsung galaxy-s 10', 15000, 'pink'),
(12, 'Samsung galaxy-s 20', 24500, 'back'),
(13, 'Samsung galaxy-ultar 5G', 45000, 'back'),
(14, 'Samsung note9', 8300, 'pink'),
(15, 'Samsung note10', 4500, 'Silver'),
(16, 'Iphone SE', 4500, 'Silver'),
(17, 'Nokia C3', 1350, 'Silver'),
(18, 'Huawei Y7p', 8350, 'Aurora Blue'),
(19, 'Huawei Mate 30 Pro', 20800, 'Silver'),
(20, 'Huawei P30 Pro', 45000, 'Silver');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tb_phone`
--
ALTER TABLE `tb_phone`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tb_phone`
--
ALTER TABLE `tb_phone`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;