บทที่ 11
การเชื่อมต่อฐานข้อมูล
![]()
Part
3: การเชื่อมต่อฐานข้อมูลและจัดการกับฐานข้อมูล
หัวข้อ (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 ที่แถบด้านขวามือ ดังรูป

ch11_01
3.
จะปรากฎ dialog box ของ File new
database > ในช่อง Save in
ให้คุณเลือก Folder สำหรับเก็บข้อมูล > จากนั้นพิมพ์ชื่อของฐานข้อมูลลงในช่อง File name > Click ปุ่ม Create > จะปรากฏหน้าจอดังนี้

ch11_02
เมื่อทำการสร้างฐานข้อมูลเป็นที่เรียบร้อยแล้ว บน Title Bar ของหน้าต่างจะปรากฏชื่อของ database และการทำงานเริ่มแรกใน database
นั้นคุณต้องเริ่มต้นจาการสร้างฐานข้อมูล (Table) ก่อนเป็นอันดับแรก
จากนั้นคุณสามารถสร้าง Queries , Forms, Reports, Pages,
Macros หรือ Modules
ตัวใดตัวหนึ่งก่อนก็ได้โดยไม่จำเป็นต้องเรียงตามลำดับ
การสร้างตาราง (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 |
นามสกุล |
ตารางที่
11.
-
เริ่มสร้างตาราง
1.
เลือกป้าย Table ในแถบด้านซ้าย > เลือก Create table
in Design view เพื่อกำหนดโครงสร้างตารางด้วยตัวคุณเอง
2.
ทำการกำหนด Field ลงในตารางตามที่ได้ออกแบบไว้ ดังรูป

ch11_03
-
การกำหนด 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

ch11_04

ch11_06
3.
จากนั้นจะปรากฎชื่อตาราง Personal ที่หน้าต่างของ database
> ให้
Double click ที่ชื่อตาราง Personal
เพื่อเปิดตารางขึ้นมาสำหรับป้อนข้อมูล
คุณสามารถสลับการทำงานไปมาระหว่างหน้าต่างป้อนข้อมูล
(Data
Sheet) กับ
หน้าต่างโครงสร้างของตาราง
(Table
Structure) ได้
โดยใช้ปุ่ม View ที่มุมบนซ้ายมือ ดังรูป

ch11_05
ถ้าคุณอยู่ในหน้าต่างโครงสร้างของตาราง
(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

ch11_07
4.
จากนั้น click
ปุ่ม Select เพื่อเข้าไปเลือกฐานข้อมูลที่ต้องการใช้ (ตามรูปหมายเลข 3) > ให้ค้นหาที่อยู่ของ Database โดยทำงานตามขั้นตอนหมายเลข 4-7
5. จะกลับเข้าสู่หน้าจอ ดังรูป >
ให้ click ปุ่ม OK

ch11_08
6.
จากนั้นจะกลับสู่การทำงานของป้าย System DSN และปรากฎชื่อ Driver testjava ตามที่ได้กำหนดไว้ > คุณสามารถ click ปุ่ม
Configure เพื่อย้อนกลับไปแก้ไข
หรือเปลี่ยนแปลงรายการฐานข้อมูลที่เลือก

ch11_09
7. เมื่อกำหนดข้อมูลเสร็จเรียบร้อย
ต้องการจบการทำงานให้ click
ปุ่ม Apply > OK
11.2 การเข้าถึงฐานข้อมูล (Connecting to
Databases)
เมื่อสร้าง Driver เสร็จเรียบร้อย คุณสามารถเข้าถึงฐานข้อมูลได้ โดยการสร้าง Form การเชื่อมต่อ ดังตัวอย่าง
-
การเชื่อมต่อฐานข้อมูลและตรวจสอบข้อผิดพลาด (Jfconnectdb.java)
Output:

ch11_10
Design:

ch11_11
|
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 |
ตารางที่ 11.... กำหนดคุณสมบัติของ Component ในหน้าจอ Form Design
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:
}
11.3 การจัดการฐานข้อมูล (Managing to
Database)
เมื่อเราสามารถเรียกข้อมูลจาก
Database
ออกมาแสดงได้แล้ว จากนี้เราสามารถเขียนปุ่มคำสั่งต่าง
ๆ
เพื่อจัดการกับข้อมูลภายในฐานข้อมูลได้
การสร้างปุ่มคำสั่งเพื่อจัดการกับฐานข้อมูล
(JFdbManage.java)
Output:

ch11_12
Design:

ch11_13
กำหนด 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:
}
การนำข้อมูลจาก
Database
แสดงผลใน JList (JFdbList.java)
Output:

ch11_14
Design:

ch11_15
กำหนด Properties ให้กับแต่ละ Component ดังนี้
|
Component |
Properties |
|
Jlist1 |
เปลี่ยนชื่อเป็น(Change Variable
Name) : JList3 |
|
JButton1 |
เปลี่ยนข้อความบนปุ่ม
(Edit
Text) : Pull data
in JList3 เปลี่ยนชื่อเป็น(Change Variable
Name) : JText3 |
|
JFrame1 |
title
: Using
JListDB |
ตารางที่ 11.... กำหนดคุณสมบัติของ Component ในหน้าจอ Frame Design
Source
Code:
package
applicationann;
import
java.sql.*;
import
java.util.*; //for Vector
public
class JFdbList extends javax.swing.JFrame {
public int t;
private Vector
test,toy;
Statement stmt1,stmt;
Connection
con;
/** Creates new form JFdb */
public JFdbList() {
test
= new Vector();
toy
= new Vector();
initComponents();
}
private void
JText3MouseClicked(java.awt.event.MouseEvent evt) {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from personal",temp;
ResultSet rs = stmt.executeQuery(SQL);
while (!rs.isAfterLast())
{
rs.next();
temp = rs.getString("name");
test.addElement(temp);
JList3.setListData(test);
}
}catch (SQLException e) {
System.err.print(e.getMessage());
}
//
TODO add your handling code here:
}
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){
}
try{
String SQL = "select * from personal order by id";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
}catch(SQLException e){
}
//
TODO add your handling code here:
}
การ
Copy
File (.java)
ถ้าคุณจำเป็นต้องสร้างโปรแกรมลักษณะเดียวกัน
และใช้ Code ลักษณะเดียวกันภายในโปรแกรม
คุณสามารคัดลอก (Copy) ไฟล์โปรแกม (.java) ได้เพื่อสะดวกในการออกแบบ Frame และง่ายต่อการเขียนโปรแกรม ดังขั้นตอนต่อไปนี้
1. Click ขวาที่ชื่อ File
ที่ต้องการ Copy > Copy

ch11_16
2. จากนั้นเลือกตำแหน่งในการวาง
File ซึ่งจากภาพตัวอย่างจะเลือกที่
applicationann > Click ขวา > paste จะได้ชื่อใหม่ เช่น

ch11_17
การเปลี่ยนชื่อ
File
(.java)
หลังจากที่ทำงาน Copy file (.java) เป็นที่เรียบร้อยแล้ว คุณสามารถเปลี่ยนชื่อใหม่เป็นชื่อใหม่ได้ตามต้องการ
ด้วยการ
1.
เลือกชื่อ File ที่อยู่ในหน้าต่าง Project ด้านซ้าย > Click ซ้ำที่ชื่อ File
อีก 1 ครั้ง >
จากนั้นให้พิมพ์ชื่อใหม่ตามต้องการ แล้วกดปุ่ม Enter > จะปรากฏหน้าจอ

ch11_20
2. click เลือก Option
ของ Rename Without Refactorying > Next
นอกจากการเปลี่ยนชื่อ File แล้ว
คุณยังจำเป็นต้องเปลี่ยนชื่อ Class ภายในส่วนของ Source
Code และเปลี่ยนชื่อของ Method Constructor ด้วย ดังนี้

ch11_18

ch11_19
เปลี่ยนชื่อให้ตรงกับ
File (.java)
11.4 คำสั่งเอสคิวแอล (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
-
การเพิ่มข้อมูลลงในหลายตาราง
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) );
การกำหนดข้อบังคับ (Constraint)
ข้อบังคับ (Constraint) มีไว้เพื่อป้องกันไม่ให้คีย์ข้อมูลที่ไม่ถูกต้องลงในฐานข้อมูล สามารถกำหนดข้อบังคับได้ในขณะกำหนดโครงสร้างของตาราง
หรือในขณะที่มีการสั่งคำสั่งเปลี่ยนแปลงโครงสร้างของตาราง
ซึ่งมีกฎเกณฑ์ดังต่อไปนี้
1. Field ใดที่มีชนิดข้อมูล (Data
type) เป็น Numeric จะไม่สามารถป้อนข้อมูลที่เป็น String,Date,Boolean ได้
2.
Field ใดระบุคำว่า Not Null หมายความว่า Field นั้นจะมีค่าว่างไม่ได้ ต้องมีการใส่ค่าทุกครั้ง
3. Field ใดระบุคำว่า Unique หมายความว่า ห้ามมีค่าว่างและค่าที่ป้อนนั้นห้ามซ้ำกันกับ
Field อื่น
4. Field ใดระบุคำว่า Check หมายความว่า ให้ Field นั้นมีค่าเฉพาะตามที่กำหนดไว้
5. Field ใดระบุคำว่า Primary Key หมายความว่า ให้เป็น Field หลักของตาราง ห้ามมีค่าว่าง
และค่าต้องไม่ซ้ำกัน
ตัวอย่าง :
CREATE TABLE Personal (Pid CHAR(13) PRIMARY KEY,
Pname
VARCHAR(25),
Ptitle CHAR(1) CHECK(Ptitle IN(1,2,3)),
Phn
CHAR(9)
UNIQUE,
Pin_date
DATE NOT NULL,
Pbirthday
DATE );
ตัวอย่าง : การกำหนดข้อบังคับภายในโครงสร้างตาราง
(Table
Constraint)
CREATE TABLE State(sid CHAR(8),
svno CHAR (9),
sdate DATE,
sdiag CHAR (5),
PRIMARY KEY(sid,svno,sdate,sdiag) );
8. การสร้างตารางสมมติ
Syntax :
CREATE VIEW ชื่อของวิว AS ประโยคคำสั่ง
SELECT;
แบบฝึกหัดท้ายบท
1.
จงฐานข้อมูลชื่อ Market และสร้าง Table ชื่อ
2.
สร้าง Driver ชื่อ ConNectMarket เพื่อใช้เชื่อมกับฐานข้อมูล
3.
ใน NetBeans จงสร้าง Frame เพื่อเรียกข้อมูลจากฐานข้อมูล Market ออกมากแสดง
*****************************************เพิ่มเติาม********************************
การทำงานกับ Database
ข้อมูลอยู่ที่
Drive G:
Netbeans , Frame ชื่อ
JFdb2Table.java
J
การดึงข้อมูล
2 Table
1.
สร้าง
Driver เพื่อ
connect database โดยเข้าไปสร้างที่ control
Panal àData source (ODBC)
สร้าง Driver ชื่อ testjava และเลือกฐานข้อมูลชื่อ per_dep.mdb
2.
เขียน
code ใน netbeans
ดังนี้ (code นี้จะดึงข้อมูลออกมาเพียงแค่ 2 field เท่านั้น)
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){
}
try{
String SQL = "select * from
personal,salary";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
mem = rs.getRow();
text1.setText(rs.getString("id"));
ßแสดงข้อมูลของตารางที่ 1
T6.setText(rs.getString("salary_id")); ßแสดงข้อมูลของตารางที่ 2
}catch(SQLException e){
}
// TODO
add your handling code here:
}
หมายเหตุ
: การนำข้อมูลชนิดตัวเลขออกมาแสดงผลนั้น
สามารถใช้ getString ได้ แต่เมื่อคุณต้องการ Update ข้อมูลชนิดตัวเลข คุณต้องเปลี่ยน String นั้นให้เป็น
Int เสียก่อน
มิเช่นนั้น Type ของข้อมูลจะ Miss match
J การนำข้อมูลตัวเลข ไปแสดงผลใน JTextField (แต่จะมีปัญหาในเรื่องการคำนวณ
ต้องแปลงข้อมูลไปและกลับ)
int mm=
rs.getInt("salary");
String nn= " ";
nn+=mm;
T1.setText(nn);
J การสั่งให้ไปยังบรรทัดถัดไป
Ctrl+G
J การ Update ข้อมูลชนิดตัวเลข
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from salary";
ResultSet
rs = stmt.executeQuery(SQL);
rs.absolute(mem);
System.out.println(mem);
rs.updateInt("salary",Integer.parseInt(T1.getText())); ß
ต้องแปลงข้อมูลให้เป็นชนิดตัวเลข
rs.updateRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
J การจัด Format ตัวเลขทางการเงิน
import
java.text.NumberFormat;
import
java.util.Locale;
int amount = 20;
String output = "";
NumberFormat moneyFormat =
NumberFormat.getCurrencyInstance( Locale.US);
output += moneyFormat.format( amount );
test.setText(output);
กรณีจัด
format ข้อมูลจาก Field ของตาราง
String output1="";
NumberFormat
moneyFormat =
NumberFormat.getCurrencyInstance( Locale.US);
output1+=moneyFormat.format(rs.getInt("salary"));
T1.setText(output1);
J การเชื่อมข้อมูล 2 Table
1.
สร้างตาราง
2 ตารางใน Access
2.
สร้าง
Relation ตามขั้นตอนดังนี้
-
เลือกป้าย
Table ในหน้าต่างของ
Database à
Click ขวา à Relation
3.
กำหนดเงื่อนไขใน
Netbeans
public
class JFdb2Table extends javax.swing.JFrame {
SQL
= "select * from
personal,salary_update where
personal.id = salary_update.personal_id order by personal.id";
}
4. เขียนโปรแกรมเพื่อนเลื่อน Record
และทำงานกับ Field ในตารางตามปกติ
J การ Update ข้อมูล 2 Table (กรณี link กันแบบ 1-to-1) ถ้า One to- many วิธีนี้จะมีปัยหา
(ต้อง update ทั้ง 2 ตาราง ถ้า up
เพียงแค่ 1 ตารางก็สามารถทำได้ แค่จะมี msg errer อยู่ด้านล่าง)
public
JFdb2Table() { ß
Method Contructor
initComponents();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException
ex){
}
try{
String url = "jdbc:odbc:testjava";
con =
DriverManager.getConnection(url,"per_dep.mdb","");
con1 = DriverManager.getConnection(url,"per_dep.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
}
}
private
void cmdeditMouseClicked(java.awt.event.MouseEvent evt) { ß
ใช้ Update ข้อมูล
updatetable(); // line 759
updatetable2();
//line 760
// TODO add
your handling code here:
}
public void updatetable() {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL4 = "select * from personal order by
personal.id";
// String SQL = "select * from
personal,salary_update where
persoanl.id = salary_update.personal_id";
ResultSet rs = stmt.executeQuery(SQL4);
rs.absolute(mem);
System.out.println(mem);
// rs.moveToCurrentRow();
rs.updateString("name",text2.getText());
rs.updateString("last_name",text3.getText());
rs.updateString("position",text4.getText());
rs.updateString("department",text5.getText());
// rs1.updateInt("salary",Integer.parseInt(T1.getText()));
// rs.moveToCurrentRow();
rs.updateRow();
// rs1.updateRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
}
public void updatetable2(){
try{
stmt2 = con1.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from salary_update order by
salary_update.personal_id";
// String SQL1 = "select * from personal,salary_update where persoanl.id =
salary_update.personal_id";
ResultSet rs1 = stmt.executeQuery(SQL);
rs1.absolute(mem);
System.out.println(mem);
//
rs1.moveToCurrentRow();
rs1.updateInt("salary",Integer.parseInt(T1.getText()));
// rs1.moveToCurrentRow();
rs1.updateRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
}
J การ Update ข้อมูล 2 Table (กรณี link กันแบบ 1-to-M) แต่จะใช้ได้เฉพาะในกรณีที่จำนวน Row เท่ากัน ไม่เช่นนั้นเกิดปัญหาได้ ดังนั้นการ Link
ข้อมูลแบบ 1 to M จะต้อง Update ข้อมูลทีละตาราง จะ update พร้อมกันไม่ได้ มันจะนำ Record
ของตารางแรกไปเขียนทับกันได้
public class
JFdb2Table extends javax.swing.JFrame {
Statement
stmt1,stmt,stmt2;
Connection
con,con1;
public int
mem=0;
public String SQL = "select *
from personal,salary_update where personal.id =
salary_update.personal_id order by personal.id,"+
"salary_update.personal_id,salary_update.salary";
ßต้องเขียน code ที่ window_open
เพื่อให้แสดงผลข้อมูลด้วย
/** Creates new form JFdb */
private
void cmdeditMouseClicked(java.awt.event.MouseEvent evt) {
updatetable(); // line 759
updatetable2();
//line 760
// TODO add
your handling code here:
}
public void updatetable() {
try{
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL4 = "select * from personal order by personal.id";
// String
SQL = "select * from
personal,salary_update where
personal.id = salary_update.personal_id order by personal.id";
ResultSet rs = stmt.executeQuery(SQL4);
rs.absolute(mem);
System.out.println(mem);
//
rs.moveToCurrentRow();
rs.updateString("name",text2.getText());
rs.updateString("last_name",text3.getText());
rs.updateString("position",text4.getText());
rs.updateString("department",text5.getText());
//
rs1.updateInt("salary",Integer.parseInt(T1.getText()));
// rs.moveToCurrentRow();
rs.updateRow();
// rs1.updateRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
}
public void updatetable2(){
try{
stmt2 = con1.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String SQL = "select * from salary_update";
ResultSet rs1 = stmt2.executeQuery(SQL);
rs1.absolute(mem);
System.out.println(mem);
//
rs1.moveToCurrentRow();
rs1.updateInt("salary",Integer.parseInt(T1.getText()));
//
rs1.moveToCurrentRow();
rs1.updateRow();
}catch (SQLException e) {
System.err.print(e.getMessage());
}
}
J
การ
Update ข้อมูล 2 Table (กรณี link กันแบบ 1-to-M) แต่แยก update ทีละตาราง
ปุ่ม Update Main Table
private void
cmdedit1MouseEntered(java.awt.event.MouseEvent evt) {
//
TODO add your handling code here:
}
ปุ่ม Update Child Table
private void
cmdedit1MouseClicked(java.awt.event.MouseEvent evt) {
updatetable(); // line 759 update main table
//
TODO add your handling code here:
}
J
ลดความฟุ่มเฟือยของ Code ด้วยการสร้าง Method
สามารถสร้าง method ชื่อ displaydata()
สำหรับใช้แสดงผลข้อมูลในตาราง และนำไปเรียกใช้กับปุ่มคำสั่งต่าง ๆ
ได้
private void
formWindowOpened(java.awt.event.WindowEvent evt) {
displaydata();
// TODO add your handling
code here:
}
private
void cmdtopMouseClicked(java.awt.event.MouseEvent evt) {
//
TODO add your handling code here:
displaydata();
if
(mem==1) {
cmdtop.setEnabled(false);
cmdtop.setToolTipText("First Record");
cmdpre.setEnabled(false);
cmdnext.setEnabled(true);
cmdlast.setEnabled(true);
}
}
public
void displaydata(){
try{
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
mem = rs.getRow();
System.out.println(mem);
//------------------ display
data of first table
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
text4.setText(rs.getString("position"));
text5.setText(rs.getString("department"));
//------------------ End
displaying
String output1="";
NumberFormat moneyFormat =
NumberFormat.getCurrencyInstance( Locale.US);
testid.setText(rs.getString("personal_id"));
output1+=moneyFormat.format(rs.getInt("salary"));
T1.setText(output1);
T2.setText(rs.getString("OT"));
T3.setText(rs.getString("sum_receive"));
T4.setText(rs.getString("kongtun"));
T5.setText(rs.getString("pokosokorm"));
T6.setText(rs.getString("tax"));
T7.setText(rs.getString("youdhug"));
T8.setText(rs.getString("net_for_receive"));
T9.setText(rs.getString("total_salary"));
T10.setText(rs.getString("total_kongtun"));
T11.setText(rs.getString("total_pokosokorm"));
T12.setText(rs.getString("total_tax"));
//------------------ End
displaying
}catch (SQLException e) {
System.err.print(e.getMessage());
}
}
J
การค้นหาข้อมูล
การค้นหาโดยระบุ รหัสที่ต้องการ ใช้ JTextField ในการรับค่า และใช้ปุ่ม Find
ในการค้นหา
private
void cmdfindMouseClicked(java.awt.event.MouseEvent evt) {
try{
ResultSet rs = stmt1.executeQuery("SELECT *
FROM personal WHERE id = '" +
FindText.getText()+"'");
rs.first();
if(rs.getRow() == 0){
JOptionPane.showMessageDialog(null,"Find not Found : Record "+FindText.getText(),
"SQL
Error",JOptionPane.ERROR_MESSAGE);
}else{
text1.setText(rs.getString("id"));
text2.setText(rs.getString("name"));
text3.setText(rs.getString("last_name"));
text4.setText(rs.getString("position"));
text5.setText(rs.getString("department"));
rs.refreshRow();
}
}catch (SQLException e) {
System.err.print(e.getMessage());
}
// TODO add your handling code here:
}
***************************************************************
งานอยู่ที่
ConnectBase.java <-- การเขียนคลาสในการเชื่อม base
package
javaapplication;
import
java.sql.*;
public class
ConnectBase {
private String
dbdriver,dbname,user,password;
//ÊÒÁÒöãªéâ»Ãá¡ÃÁ Generate ä´é
private Connection con;
private Statement stm;
public ResultSet rs;
private String sql;
public void
openConnection(String d,String n,String u,String p)throws Exception{
dbdriver =d;
dbname = n;
user = u;
password = p;
Class.forName(dbdriver);
con =
DriverManager.getConnection(dbname,user,password);
stm =
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
public void
closeConnec()throws Exception{
stm.close();
con.close();
}
public void
openResultSet(String s)throws Exception{
sql = s;
reQuery();
}
public void
closeResultSet()throws Exception{
rs.close();
}
public int
actionQuery(String s)throws Exception{
Statement stm = con.createStatement();
int
rc = stm.executeUpdate(s);
stm.close();
return rc; // ¨Ð return ¡è͹
close äÁèä´é
}
public void reQuery()throws
Exception{
rs =
stm.executeQuery(sql);
}
//constructor
/**
Creates a new instance of ConnectBase */
public ConnectBase() {
}
}//end class
EX204.java <-- การอ่านข้อมูลจาก Text
file (Notepad)

package
javaapplication;
import
java.io.*;
import
javax.swing.table.DefaultTableModel;
public class
EX204 extends javax.swing.JFrame {
public EX204() {
initComponents();
}
private void
formWindowOpened(java.awt.event.WindowEvent evt) {
//´Ö§¢éÍÁÙŨҡ file
ÁÒãÊè·ÕèµÒÃÒ§
//µéͧ¡Òà 3 Column
Object[] obj = {"A","B","C"};
DefaultTableModel tm = new
DefaultTableModel(obj,1);
this.table1.setModel(tm);
//µéͧ¡Òà 4 Row
for (int i = 0;i<3;i++)
{
// DefaultTableModel tm
=
(DefaultTableModel)table1.getModel();
Object[] rs =
{"",""};
tm.addRow(rs);
}
//----------------------------------------------
try{
// Object[]
FileReader fl = new FileReader("d:/AnnApp/Text.txt");
BufferedReader bin = new
BufferedReader(fl);
String s ="";
int
r = 0;
while ((s = bin.readLine())!=null)
{
String[] cols = s.split(",");
table1.setValueAt(s,r++,0);
// table1.setValueAt(cols[0],r++,0);
//
System.out.println(s);
} //
¢éÍÁÙÅ á¶Ç¡Ñº Column ÍÒ¨äÁèµÃ§¡Ñ¹ä´é
bin.close();
fl.close();
}catch(FileNotFoundException
ex){
ex.printStackTrace();
}catch(IOException
ex){
ex.printStackTrace();
}
//---------------------------------------------
// TODO add
your handling code here:
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//Read Text file
try{
FileReader fl = new FileReader("d:/AnnApp/Text.txt");
BufferedReader bin = new BufferedReader(fl);
String s ="";
while ((s = bin.readLine())!=null)
{
System.out.println(s);
}
bin.close();
fl.close();
}catch(FileNotFoundException
ex){
ex.printStackTrace();
}catch(IOException
ex){
ex.printStackTrace();
}
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new EX204().setVisible(true);
}
});
}
EX207.java

package
javaapplication;
import
java.sql.*;
import
javax.swing.table.DefaultTableModel;
public class
EX207 extends javax.swing.JFrame {
Statement stmt1,stmt2;
Connection con,con2;
/** Creates new form EX207
*/
public EX207() {
initComponents();
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
}
try{
String url = "jdbc:odbc:mydb";
con =
DriverManager.getConnection(url,"country.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
//System.err.print(e.getMessage());
}
//àª×èÍÁ Table
try{
String SQL = "select * from country";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
//´Ö§¢éÍÁÙŨҡµÒÃÒ§
String[] co ={"country"};
DefaultTableModel tm = new
DefaultTableModel(co,0);
table1.setModel(tm);
Object[] r = new Object[1];
while(rs.next()){
tm.addRow(r);
tm.setValueAt(rs.getString(1),tm.getRowCount()-1,0);
/*
tm.setValueAt(rs.getString(2),tm.getRowCount()-1,1);
tm.setValueAt(rs.getString(3),tm.getRowCount()-1,2);
tm.setValueAt(rs.getString(4),tm.getRowCount()-1,3);
tm.setValueAt(rs.getString(5),tm.getRowCount()-1,4);
tm.setValueAt(rs.getString(6),tm.getRowCount()-1,5);*/
}
rs.close();
}catch(SQLException e){
System.err.print(e.getMessage());
}//
TODO add your handling code here:
// TODO add
your handling code here:
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
}
try{
String url = "jdbc:odbc:mydb";
con =
DriverManager.getConnection(url,"book.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
//System.err.print(e.getMessage());
}
//àª×èÍÁ Table
try{
String SQL = "select * from book order by BARCODE ";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
//´Ö§¢éÍÁÙŨҡµÒÃÒ§
String[] co
={"Barcode","Title","Author","Price","Type","Year"};
DefaultTableModel tm = new
DefaultTableModel(co,0);
table1.setModel(tm);
Object[] r = new Object[6];
while(rs.next()){
tm.addRow(r);
tm.setValueAt(rs.getString(1),tm.getRowCount()-1,0);
tm.setValueAt(rs.getString(2),tm.getRowCount()-1,1);
tm.setValueAt(rs.getString(3),tm.getRowCount()-1,2);
tm.setValueAt(rs.getString(4),tm.getRowCount()-1,3);
tm.setValueAt(rs.getString(5),tm.getRowCount()-1,4);
tm.setValueAt(rs.getString(6),tm.getRowCount()-1,5);
}
rs.close();
}catch(SQLException e){
System.err.print(e.getMessage());
}//
TODO add your handling code here:
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new EX207().setVisible(true);
}
});
}
EX402.java

package javaapplication;
public class
EX402 extends javax.swing.JFrame {
private ConnectBase db = new
ConnectBase(); //¶éÒÁÕ Throw error
ÍÍ¡ÁÒ¨Ðà¢Õ¹µÃ§¹ÕéäÁèä´é
private String em
="",un="";
/** Creates new form EX402
*/
public EX402() {
initComponents();
}
private void
cmdCancelActionPerformed(java.awt.event.ActionEvent evt) {
try{
this.text1.setText(em);
this.text2.setText(un);
//setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmdExitActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
// TODO add
your handling code here:
}
private void
cmdDeleteActionPerformed(java.awt.event.ActionEvent evt) {
try{
int pos = db.rs.getRow();
String sql
= "delete from member where
email='"+text1.getText()+"';";
int rc
= db.actionQuery(sql);
this.lb3.setText("Delete Process:"+rc+"record[OK]");
db.reQuery();
db.rs.last();
if(pos>db.rs.getRow()){
pos= db.rs.getRow();}
db.rs.absolute(pos);
setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmdUpdateActionPerformed(java.awt.event.ActionEvent evt) {
//fslfslfl
if(text1.getText().trim().length()==0){
lb3.setText("Email Error");
}
if(text2.getText().trim().length()==0){
lb3.setText("User Name Error");
return;
}
try{
int pos = db.rs.getRow();
// String sql = "update
member set email ='"+text1.getText()+"',user ='"+
//
text2.getText()+"'where
email ='"+db.rs.getString(1)+"';"; µéͧ double click ¨Ö§·Ó§Ò¹
à¾ÃÒÐÁѹ get ¤èÒËÅÒ¤ÃÑé§
// á¡éä¢â´Â
ÊÃéÒ§µÑÇá»Ã¢Öé¹ÁÒ
String sql = "update member set email
='"+text1.getText()+"',user ='"+
text2.getText()+"'where
email ='"+em+"';";
int rc
= db.actionQuery(sql);
this.lb3.setText("Update Process:"+rc+"record[OK]");
db.reQuery();
db.rs.absolute(pos);
setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmdSaveActionPerformed(java.awt.event.ActionEvent evt) {
if(text1.getText().trim().length()==0){
lb3.setText("Email Error");
}
if(text2.getText().trim().length()==0){
lb3.setText("User Name Error");
return;
}
try{
//String sql = "insert into member values(' "+a+" ','
" +b+ " ')
";
String sql = "insert into member
values('"+text1.getText()+"','"+text2.getText()+"')";
int rc
= db.actionQuery(sql);
this.lb3.setText("Add Process:"+rc+"record[OK]");
db.reQuery();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmdAddActionPerformed(java.awt.event.ActionEvent evt) {
this.text1.setText("");
this.text2.setText("");
this.text1.requestFocus();
// TODO add
your handling code here:
}
private void combo1ItemStateChanged(java.awt.event.ItemEvent
evt) {
try{
db.rs.absolute(this.combo1.getSelectedIndex()+1);
this.setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmd3ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(!db.rs.next()) db.rs.last();
this.setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmd4ActionPerformed(java.awt.event.ActionEvent evt) {
try{
db.rs.last();
this.setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmd2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(!db.rs.previous());
this.setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void
cmd1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
db.rs.first();
this.setCom();
}catch (Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
// TODO add
your handling code here:
}
private void setCom() throws
Exception{
em =
db.rs.getString(1);
un =
db.rs.getString(2);
this.text1.setText(em);
this.text2.setText(un);
// text1.setText( db.rs.getString(1));
//
text2.setText( db.rs.getString(2));
text3.setText( db.rs.getRow()+"");
}
private void
formWindowOpened(java.awt.event.WindowEvent evt) {
try{
db.openConnection("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:mydb","","");
db.openResultSet("select * from member;");
//db.rs.next();
// this.combo1.removeAllItems();
while(db.rs.next()){
this.combo1.addItem(db.rs.getString(1));
}
db.rs.last();
setCom();
}catch(Exception ex){
ex.printStackTrace();
lb3.setText("program error:"+ex.getMessage());
}
//---------------------------
// TODO add your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new EX402().setVisible(true);
}
});
}
EX404.java
package
javaapplication;
public class
EX404 {
//
static double div(int x,int y)throws ArithmeticException{
static double
div(int x,int y){
if (y==0)
throw new ArithmeticException();
return x/y;} //end div
static double
div2(int x,int y)throws NumException{
if(y >10)
throw new NumException();
return x/y;
} //end div2
/** Creates a new instance
of EX404 */
public EX404() {
}
public
static void main(String[] args) {
try{
System.out.println(div(10,10));
System.out.println(div2(1,20));
// ·ÓãËéä´é¼ÅÅѾ¸ì¢Í§ error
= number error
}catch (Exception ex){
ex.printStackTrace();
//
System.err.print(ex.getMessage());
System.out.println(ex.getMessage());
}
//
TODO code application logic here
}
} //end
class
class NumException extends Exception{
public
NumException()
{super("number error");}
}
EX501.java
package
javaapplication;
public class
EX501 extends javax.swing.JApplet {
/** Creates a new instance
of EX501 */
public EX501() {
}
public void init()
{System.out.println("init");}
public void start()
{System.out.println("start");}
public void paint()
{System.out.println("paint");}
public
void stop()
{System.out.println("stop");}
public void destroy()
{System.out.println("destroy");}
}//end class
EX503.java
package
javaapplication;
import
java.awt.Color;
import
java.awt.Graphics;
public class
EX503 extends javax.swing.JApplet implements Runnable {
/** Creates a new instance
of EX503 */
public EX503() {
} //end constructor
Thread t,t1;
int a=1;
public void
init(){
}//====================end
init()
public void start(){
}//================end
start()
public void
run(){
try{
if (a<=100){
t.sleep(100);
this.repaint();
}
}catch(InterruptedException e){}
}//=====================end run()
public void paint(Graphics
g){
t = new Thread(this);
t.start();
String t1 =
this.getParameter("pt1");
String t2 =
this.getParameter("pt2");
String t3 =
this.getParameter("pt3");
t1 =
t1==null?"A":t1;
t2 =
t2==null?"B":t2;
t3 =
t3==null?"C":t3;
String v1 =
this.getParameter("pv1");
String v2 = this.getParameter("pv2");
String v3 =
this.getParameter("pv3");
v1 =
v1==null?"100":v1;
v2 =
v2==null?"100":v2;
v3 =
v3==null?"100":v3;
int
a1 = Integer.parseInt(v1);
int
a2 = Integer.parseInt(v2);
int a3 =
Integer.parseInt(v3);
g.drawLine(50,50,50,150); // ¢Õ´àÊé¹á¹ÇµÑé§
g.drawLine(50,150,150,150);
//¢Õ´àÊé¹á¹Ç¹Í¹
for (int i =
10;i>=1;i--) //¢Õ´àÊé¹àÅç¡ æ
{
g.drawLine(48,50+i*10,52,50+i*10);
g.drawString(""+i,30,48+i*10);
}//end for
g.drawString(t1,70,165);
g.drawString(t2,100,165);
g.drawString(t3,130,165);
a++;
g.setColor(Color.RED);
g.fillRect(70,150-a,10,a);
g.setColor(Color.BLUE);
g.fillRect(100,150-a,10,a);
g.setColor(Color.GREEN);
g.fillRect(130,150-a,10,a);
}//====================end
paint()
}//end class
EX503_1.java
package
javaapplication;
import
java.awt.Color;
import
java.awt.Graphics;
public class
EX503_1 extends javax.swing.JApplet {
public EX503_1() {
}
public void paint(Graphics g){
String t1 =
this.getParameter("pt1");
String t2 =
this.getParameter("pt2");
String t3 =
this.getParameter("pt3");
String v1 =
this.getParameter("pv1");
String v2 =
this.getParameter("pv2");
String v3 =
this.getParameter("pv3");
int
a1 = Integer.parseInt(v1);
int
a2 = Integer.parseInt(v2);
int
a3 = Integer.parseInt(v3);
g.drawLine(50,50,50,150); // ¢Õ´àÊé¹á¹ÇµÑé§
g.drawLine(50,150,150,150);
//¢Õ´àÊé¹á¹Ç¹Í¹
for (int i =
10;i>=1;i--) //¢Õ´àÊé¹àÅç¡ æ
{
g.drawLine(48,50+i*10,52,50+i*10);
g.drawString(""+i,30,48+i*10);
}//end for
g.drawString(t1,70,165);
g.drawString(t2,100,165);
g.drawString(t3,130,165);
g.setColor(Color.RED);
g.fillRect(70,150-a1,10,a1);
g.setColor(Color.BLUE);
g.fillRect(100,150-a2,10,a2);
g.setColor(Color.GREEN);
g.fillRect(130,150-a3,10,a3);
}
}//end class
Ex201.java

package
javaapplication;
import
java.util.Vector;
import
javax.swing.*; //for default Model of List1
public class
Ex201 extends javax.swing.JFrame {
private Vector toy,test;
/** Creates new form Ex201
*/
public Ex201() {
toy
= new Vector();
test
= new Vector();
initComponents();
}
private void
cmd9ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel model = (DefaultListModel)this.list1.getModel();
model.removeAllElements();
// TODO add
your handling code here:
}
private void
cmd8ActionPerformed(java.awt.event.ActionEvent evt) {
test.addElement(this.list1.getSelectedValue());
list2.setListData(test);
// TODO add
your handling code here:
}
private void
cmd7ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel model2 = new DefaultListModel();
DefaultListModel model = (DefaultListModel)this.list1.getModel();
Object [] obj = list1.getSelectedValues();
for
(int i=0;i<obj.length;i++)
{
model2.addElement(obj[i]);
this.list2.setModel(model2);
}
// TODO add
your handling code here:
}
private void
cmd6ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel model =
(DefaultListModel)this.list1.getModel();
model.remove(list1.getSelectedIndex());
// TODO add
your handling code here:
}
private void
list1MouseClicked(java.awt.event.MouseEvent evt) {
label1.setText(""+this.list1.getSelectedIndex()+"
:
"+this.list1.getSelectedValue()); //return obj
// TODO add
your handling code here:
}
private void
jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel model =
(DefaultListModel)this.list1.getModel();
model.addElement(JText.getText()); // àÍÒ¢éÍÁÙÅãËÁèÁÒà¢Õ¹µèÍ·éÒÂ
JText.setText("");
JText.requestFocus();
// TODO add
your handling code here:
}
private void
formWindowOpened(java.awt.event.WindowEvent evt) {
JText.requestFocus();
DefaultListModel model
= new DefaultListModel();
model.addElement(2540);
model.addElement(2541);
model.addElement(2542);
this.list1.setModel(model);
this.list1.setSelectedIndex(0);
// TODO add
your handling code here:
}
private void
cmd5ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel model =
(DefaultListModel)this.list1.getModel(); //get ¢éÍÁØÅà´ÔÁÁÒ
model.addElement("Love
you"); //
àÍÒ¢éÍÁÙÅãËÁèÁÒà¢Õ¹µèÍ·éÒÂ
// TODO add
your handling code here:
}
private void
cmd4ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultListModel model = new
DefaultListModel();
model.addElement(2550);
this.list1.setModel(model);
model =
(DefaultListModel)this.list1.getModel();
model.addElement(2551);
// TODO add
your handling code here:
}
private void
jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
toy.addElement(JText.getText());
list1.setListData(toy);
JText.setText("");
JText.requestFocus();
// TODO add
your handling code here:
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Object[] o1 = {2540,2541,2542};
Object [] o = new
Object[10];
for (int i =
0;i<o1.length;i++)
{
o[i]=i+2540;
}
this.list1.setListData(o);
// TODO add
your handling code here:
}
private void
cmd1ActionPerformed(java.awt.event.ActionEvent evt) {
cb1.removeAllItems();
for(int a=0;a<12;a++)
{
this.cb1.addItem("ann");
}
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ex201().setVisible(true);
}
});
}
Ex206.java

package
javaapplication;
import
java.sql.*;
import
javax.swing.table.DefaultTableModel;
public class
Ex206 extends javax.swing.JFrame {
Statement stmt1;
Connection con;
public Ex206() {
initComponents();
}
private void
table1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add
your handling code here:
label1.setText(""+table1.getValueAt(table1.getSelectedRow(),table1.getSelectedColumn()));
}
private void
formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add
your handling code here:
//show ¢éÍÁÙÅã¹µÒÃÒ§
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
}
try{
String url = "jdbc:odbc:mydb";
con = DriverManager.getConnection(url,"book.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
}
try{
String SQL = "select * from book"; // where type =
tan";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
String[] co
={"Barcode","Title","Author","Price","Type","Year"};
DefaultTableModel tm = new
DefaultTableModel(co,0);
table1.setModel(tm);
Object[] r = new Object[6];
while(rs.next()){
tm.addRow(r);
tm.setValueAt(rs.getString(1),tm.getRowCount()-1,0);
tm.setValueAt(rs.getString(2),tm.getRowCount()-1,1);
tm.setValueAt(rs.getString(3),tm.getRowCount()-1,2);
tm.setValueAt(rs.getString(4),tm.getRowCount()-1,3);
tm.setValueAt(rs.getString(5),tm.getRowCount()-1,4);
tm.setValueAt(rs.getString(6),tm.getRowCount()-1,5);
}
rs.close();
}catch(SQLException e){
System.err.print(e.getMessage());
}//
TODO add your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ex206().setVisible(true);
}
});
}
Ex301.java
package
javaapplication;
import
java.sql.*;
public class
Ex301 {
public Ex301() {
}
public
static void main(String[] args) throws Exception {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con =
DriverManager.getConnection("jdbc:odbc:mydb","","");
Statement stm =
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String sql ="select * from book;";
ResultSet rs = stm.executeQuery(sql);
PreparedStatement pstm = con.prepareStatement(sql);
ResultSet rs2 = pstm.executeQuery(sql);
String sql2 ="insert into member
values('a@a.com'args,'aaa');"; //µéͧ¡Òà update ¢éÍÁÙÅã¹µÒÃÒ§
int rc = stm.executeUpdate(sql2);
String sql3 ="insert into member values(?,?);"; //à¤Ã×èͧËÁÒ ? ËÁÒ¶֧ãªéá·¹¤èÒã´¡çä´é
PreparedStatement pstm3 = con.prepareStatement(sql3);
pstm3.setString(1,"a@a.com"); //
pstm3.setString(2,"aaa"); //
int rc3 = pstm3.executeUpdate();
rs.next(); //à¾ÃÒТéÍÁÙÅã¹ DB ¨ÐÍÂÙè·Õè Rec ·Õè 0
System.out.println(rs.getString(1));
System.out.println(rs.getString(1)); // get «éÓä´é
System.out.println(rs.absolute(5)); //ÊÑè§ãËéä»·Õèá¶Ç·Õè¡Ó˹´
System.out.println(rs.getRow());
System.out.println(rs.isAfterLast());
//àªç¤ÇèÒÍÂÙèá¶ÇÊØ´·éÒÂËÃ×Íà»ÅèÒ eof
ResultSetMetaData rsm = rs.getMetaData(); //¤×Í¡Òâʹ٪×èÍ field
System.out.println(rsm.getColumnCount()); //¹Ñº¨Ó¹Ç¹ field
System.out.println(rsm.getColumnName(1)); // ºÍ¡ª×èÍ field
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs.close();
stm.close();
con.close();
}}
Ex302.java
package
javaapplication;
import
java.sql.*;
public class
Ex302 {
public Ex302() {
}
public static void main(String[] args)
throws Exception {
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con =
DriverManager.getConnection("jdbc:odbc:mydb","","");
Statement stm = con.createStatement();
String sql ="select
iif(year<2541,'2529-2540','2541-2550'),count(*) from book group by
iif(year<2541,'2529-2540','2541-2550');";
ResultSet rs = stm.executeQuery(sql);
while(rs.next())
{
System.out.print(rs.getString(1)+":");
System.out.println(rs.getString(2));
}
rs.close();
stm.close();
con.close();
//
TODO code application logic here
} } }
Ex303.java
package
javaapplication;
public class
Ex303 {
public Ex303(){
}
public
static void main(String[] args) {
double s = 10000;
Tax
obj = new Tax();
obj.salary=s;
System.out.println(obj.getYearSalary());
System.out.println(obj.getTax());
System.out.println(obj.getPerMonth());
System.out.println(obj.getNet());
//
TODO code application logic here
}}
Ex304.java
package
javaapplication;
public class
Ex304 {
public Ex304() {
}
public
static void main(String[] args)throws Exception {
ConnectBase db = new ConnectBase();
db.openConnection("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:mydb","","");
db.openResultSet("select * from member;");
db.actionQuery("insert
into member values('b@b.c','bbb');");
while(db.rs.next()){
System.out.println(1);
}
db.closeResultSet();
db.closeConnec();
//
TODO code application logic here
}}
Ex403.java

package
javaapplication;
public class
Ex403 extends javax.swing.JFrame {
MemberProcess mb = new
MemberProcess();
public Ex403() {
initComponents();
}
private void
formWindowOpened(java.awt.event.WindowEvent evt) {
mb.open();
this.jTextField1.setText(mb.getEmail());
this.jTextField2.setText(mb.getUser());
// TODO add
your handling code here:
}
public static void main(String
args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Ex403().setVisible(true);
}
});
}
Ex405.java
package
javaapplication;
public class
Ex405 {
public Ex405() {
}
public
static void main(String[] args) {
product
p = new product();
try{
p.setPrice(0);
//´Ù´éÒ¹ËÅѧ¤ÓÊÑè§´éÇÂÇèÒÁÕ thows ËÃ×ÍäÁè
p.setDiscout(-1);
p.save();
}catch (Exception ex){
System.out.println(ex.getMessage());
}
//
TODO code application logic here
}
}//====================end
main class======================
class
product{
private double price,discount;
public void setPrice(double
p)throws ProductException{
if(p <= 0)throw new
ProductException("Price <0["+p+"]","set");
price = p;
}//end setPrice
public void
setDiscout(double d) throws ProductException{
if(d <= 0)throw new
ProductException("Discount <0["+d+"]","set");
discount = d;
}//end setDiscout
public void save()throws
ProductException{
if
(price <=0 && discount ==0)
throw new ProductException("","save");
}//end save()
}//==================end
product================================
class
ProductException extends Exception{
private String status
=""; //à¾×èÍà¡çº¢éͤÇÒÁ ¨Ñ§ËÇТͧ¡ÒÃà¡Ô´ err
public String getStatus()
{return status;}
public
ProductException(String t,String s){
super(t);
status =s;
} //end Method constructor
}//===============end
class ProductException===================
Ex502.java
package
javaapplication;
import
java.awt.Graphics;
public class
Ex502 extends javax.swing.JApplet {
public Ex502() {
}
public void
paint(Graphics g){
for (int i =
1;i<=10;i++){
g.drawString("ann",25,25*i); //˹èÇÂà»ç¹ pixel
g.drawLine(10,25,10,200); // ¢Õ´àÊé¹á¹ÇµÑé§
g.drawLine(10,25,30,25);
//¢Õ´àÊé¹á¹Ç¹Í¹
g.drawRect(10,25,80,200);
g.fillRect(100,60,40,60);
g.fillOval(180,60,40,40);
}//end for
} //end paint
}
Ex506.java
package
javaapplication;
import
java.awt.Graphics;
public class
Ex506 extends javax.swing.JApplet implements Runnable {
public Ex506() {
}//end constructor()
Thread t,t1;
int a = 1;
public void start(){
t = new
Thread(this); // this ËÁÒ¶֧¤ÅÒÊ
t.start(); // ¨Ñ´
tread ãËéÁѹàÃÔèÁ·Ó§Ò¹
}//end start()
public void run(){
t1 =
Thread.currentThread();
while(a<=10){ // ·Óá¤è 10
¤ÃÑé§áÅéÇËÂØ´
repaint();
try{
//t1.sleep(1000); //ÃÍä» 1 ÇÔ¹Ò·Õ
t1.sleep(100);
}catch(InterruptedException
e){}
}//end while
}//end run()
public void paint(Graphics
g){
g.fillRect(80,30,10*a++,50);
} //end paint()
}//end class
Ex506_1.java
package
javaapplication;
import
java.awt.Graphics;
public class
Ex506_1 extends javax.swing.JApplet implements Runnable {
public Ex506_1() {
}//end constructor()
Thread t,t1;
int a;
public void
start(){ // ·Ó§Ò¹Ãͺà´ÕÂÇ ¨¹¡ÇèҨж١àÃÕ¡ãËÁè
}//end start()
public void
run(){ //¨Ð·Ó·Ø¡¤ÃÑé§àÁ×èÍÁÕ¡ÒÃ
start()
try{
a++;
//t1.sleep(1000); //ÃÍä» 1 ÇÔ¹Ò·Õ
t1.sleep(100);
this.repaint();
}catch(InterruptedException
e){}
}//end run()
public void paint(Graphics
g){
t = new Thread(this);
g.fillRect(10,10,10+a,50);
t.start();
} //end paint()
}//end class
Ex508.java
package
javaapplication;
import
java.awt.*;
import
javax.swing.*;
import java.awt.Color;
import
java.awt.Graphics;
public class
Ex508 extends javax.swing.JApplet implements Runnable {
public Ex508() {
}//end structor
JLabel t1 =
new JLabel("ann");
Thread t;
int a = 1;
Container
sju = getContentPane();
public void
run(){
try{
while (a <=100){
t1.setText(""+a++);
t.sleep(1000);
}catch(InterruptedException e){}
}//end run()
public void
init(){
t = new Thread(this);
sju.setLayout (new FlowLayout());
t.start();
this.add(t1);
sju.add(t1);
}//end
init()
}//end class
Ex509.java
package
javaapplication;
import
java.awt.*;
import
javax.swing.*;
import
java.net.*; // ãªé¡Ñº network
import
java.io.*;
public class
Ex509 extends javax.swing.JApplet implements Runnable{
public Ex509() {
}//end constructor
String message;
public void
init(){
try{
URL
url = new URL(getCodeBase(),"Data.txt"); //¹Ó file ¢éÍÁÙÅä»à¡çºäÇé·Õè Build/Class
BufferedReader br= new
BufferedReader(
new InputStreamReader(url.openStream()));
message = br.readLine();
}catch(Exception e){} //
¶éÒÃкت¹Ô´¢Í§ error ¼Ô´ ¡çÊ觼ŵèÍ error ä´é
}//end init================
public void paint(Graphics
g){
g.drawString("Message read from server",10,10);
g.drawString(message,15,30);
System.out.println(
this.getAppletContext().toString());
}//end paint()
public void run(){
}//end run()
}//end class
MemberProcess.java
package
javaapplication;
public class
MemberProcess {
private String email,user;
private ConnectBase db = new
ConnectBase();
public void setEmail(String
e){email = e;}
public void setUser(String
u){user=u;}
public String getEmail(){return
email;}
public String
getUser(){return user;}
public void open(){
try{
db.openConnection("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:mydb","","");
db.openResultSet("select * from member;");
db.rs.next();
email =
db.rs.getString(1);
}catch (Exception ex){
ex.printStackTrace();
}
}
public void close(){
try{
db.closeResultSet();
db.closeConnec();
}catch (Exception ex){
ex.printStackTrace();
}
} //end save
public boolean next(){
boolean n
= false;
try{
if(!db.rs.next()) db.rs.last();
email =
db.rs.getString(1);
user =
db.rs.getString(2);
n = true;
db.closeConnec();
}catch
(Exception ex){
ex.printStackTrace();
}
return n;
}//end next()
public int save(){
int rc =0;
try{
String sql = "insert into member
values('"+email+"','"+user+"')";
rc = db.actionQuery(sql);
}catch
(Exception ex){
ex.printStackTrace();
}
return rc;
} //end save
public MemberProcess() {
}
}
Table.java

package
javaapplication;
import
javax.swing.table.*;
public class
Table extends javax.swing.JFrame {
public Table() {
initComponents();
}
private void
cmd5ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel tm =
(DefaultTableModel)table1.getModel();
tm.addColumn("D");
//.addRow(rs);
// TODO add
your handling code here:
}
private void
cmd4ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel tm =
(DefaultTableModel)table1.getModel();
Object[] rs =
{"","",""};
tm.addRow(rs);
// TODO add
your handling code here:
}
private void
cmd3ActionPerformed(java.awt.event.ActionEvent evt) {
//TableModel tm = new TableModel();
//TableModel à»ç¹ Abstract ËéÒÁãªéÊÃéÒ§ obj ´éÇ»ÃÐ⤠New
Object[] obj = {"A","B","C"};
DefaultTableModel tm = new
DefaultTableModel(obj,1);
this.table1.setModel(tm);
// TODO add
your handling code here:
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
for (int i =
0;i<table1.getRowCount();i++)
{
table1.setValueAt(i*100,i,0);
}
// TODO add
your handling code here:
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.table1.setValueAt("Test",0,0); //ãÊè¤èÒà¢éÒä»ã¹µÒÃÒ§
System.out.println(this.table1.getValueAt(0,0)); //´Ö§¤èÒÍÍ¡¨Ò¡µÒÃÒ§
System.out.println(this.table1.getColumnCount());
System.out.println(this.table1.getRowCount());
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void
run() {
new Table().setVisible(true);
}
});
}
Tax.java
package
javaapplication;
public class
Tax {
public double salary;
public double
getYearSalary()
{return salary*12;}
public double getTax()
{return
this.getYearSalary()*0.1;}
public double getPerMonth()
{return this.getTax()/12;}
public double getNet()
{return
this.getYearSalary()-this.getTax();}
public Tax() {
}}
Test1.java

package
javaapplication;
public class
Test1 extends javax.swing.JFrame {
public Test1() {
initComponents();
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
int a,b,c;
a = Integer.parseInt(T1.getText());
b =
Integer.parseInt(T2.getText());
c =a+b;
T3.setText(" "+c);
// TODO add
your handling code here:
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
T3.setText(T1.getText()+T2.getText());
// TODO add your handling
code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Test1().setVisible(true);
}
}); }
Test3.java

package
javaapplication;
public class
Test3 extends javax.swing.JFrame {
public
Test3() {
initComponents();
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.jTextField1.setText("OHAYO"); //
ËÁÒ¶֧¤ÅÒʵÑÇàͧËÃ×ÍËÁÒ¶֧ obj
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Test3().setVisible(true);
}
});
}
Test4.java

package
javaapplication;
public class
Test4 extends javax.swing.JFrame {
public Test4() {
initComponents();
}
private void
Cmd8ActionPerformed(java.awt.event.ActionEvent evt) {
Cmd7.setEnabled(false);
// boolean a = true;
if (Cmd7.isEnabled())
{
Cmd7.setEnabled(false);
}
else{
Cmd7.setEnabled(true);
}
// TODO add
your handling code here:
}
private void
Cmd7ActionPerformed(java.awt.event.ActionEvent evt) {
if
(Cmd7.getText().equals("Add"))
{
Cmd7.setText("Save");
}
else
{
Cmd7.setText("Add");
}
// TODO add
your handling code here:
}
private void
CmdCloseActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
// TODO add
your handling code here:
}
private void
T1ActionPerformed(java.awt.event.ActionEvent evt) {
L1.setText("OHAYO");
Ch1.setText("OHAYO");
Text1.setText(L1.getText());
T2.setText(Text1.getText());
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Test4().setVisible(true);
}
});
}
Test5.java

package
javaapplication;
public class
Test5 extends javax.swing.JFrame {
int a,b,c,d,m,n;
public Test5() {
super("Hi calculate");
initComponents();
}
private void text2ActionPerformed(java.awt.event.ActionEvent
evt) {
text3.requestFocus();
// TODO add
your handling code here:
}
private void
text1ActionPerformed(java.awt.event.ActionEvent evt) {
text2.requestFocus();
// TODO add
your handling code here:
}
private void
ck1MouseClicked(java.awt.event.MouseEvent evt) {
if (ck1.isSelected())
{
m =
d *15/100;
n =
d-m;
text4.setText(""+n);
}
else
{
text4.setText(""+d);
}
// TODO add
your handling code here:
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
a =
Integer.parseInt(text1.getText());
// a =
Double.parseDouble(text1.getText());
b =
Integer.parseInt(text2.getText());
c =
Integer.parseInt(text3.getText());
d = (a * b/100)*c;
text4.setText(""+d);
// TODO add
your handling code here:
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Test5().setVisible(true);
}
});
}
Test6.java
package
javaapplication;
public class
Test6 extends javax.swing.JFrame {
public Test6() {
initComponents();
}
private void
cmd2ActionPerformed(java.awt.event.ActionEvent evt) {
text1.setText(""+cb1.getSelectedItem());
// TODO add
your handling code here:
}
private void
cmd1ActionPerformed(java.awt.event.ActionEvent evt) {
cb1.addItem("May");
// TODO add
your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public
void run() {
new Test6().setVisible(true);
}
});
}
TestDB.java

package
javaapplication;
import
java.sql.*;
import
javax.swing.table.DefaultTableModel;
public class
TestDB extends javax.swing.JFrame {
Statement stmt1;
Connection con;
public TestDB() {
initComponents();
}
private void
jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
//show
¢éÍÁÙÅã¹µÒÃÒ§
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
}
try{
String url = "jdbc:odbc:mydb";
con = DriverManager.getConnection(url,"book.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 book order by BARCODE ";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
//´Ö§¢éÍÁÙŨҡµÒÃÒ§
String[] co
={"Barcode","Title","Author","Price","Type","Year"};
DefaultTableModel tm = new
DefaultTableModel(co,0);
table1.setModel(tm);
Object[] r = new Object[6];
while(rs.next()){
tm.addRow(r);
tm.setValueAt(rs.getString(1),tm.getRowCount()-1,0);
tm.setValueAt(rs.getString(2),tm.getRowCount()-1,1);
tm.setValueAt(rs.getString(3),tm.getRowCount()-1,2);
tm.setValueAt(rs.getString(4),tm.getRowCount()-1,3);
tm.setValueAt(rs.getString(5),tm.getRowCount()-1,4);
tm.setValueAt(rs.getString(6),tm.getRowCount()-1,5);
}
rs.close();
}catch(SQLException e){
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){
}
}
private void
jButton1MouseClicked(java.awt.event.MouseEvent evt) {
try{
String SQL = "select * from book order by BARCODE ";
ResultSet rs = stmt1.executeQuery(SQL);
rs.first();
jTextField1.setText(rs.getString("BARCODE"));
jTextField2.setText(rs.getString("TITLE"));
jTextField3.setText(rs.getString("AUTHOR"));
rs.close();
}catch(SQLException e){
System.err.print(e.getMessage());
}//
TODO add your handling code here:
}
private void
jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//load db
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException ex){
//
jTextArea2.setText(ex.getMessage());
}
try{
String url = "jdbc:odbc:mydb";
con =
DriverManager.getConnection(url,"book.mdb","");
stmt1 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}catch(SQLException e){
//System.err.print(e.getMessage());
}//
TODO add your handling code here:
}
public
static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TestDB().setVisible(true);
}
});
}
exmain.java
package
javaapplication;
import
java.awt.Graphics;
import
java.awt.*;
import
java.applet.*;
public class
exmain extends javax.swing.JApplet {
public exmain() {
}//end constructor
public void
init(){
try{Thread.sleep(5000);} catch(Exception e){}
AppletContext a = getAppletContext();
exsub ca = (exsub)a.getApplet("child"); //à»ç¹ª×èÍ name
·ÕèÁÒ¨Ò¡ html
ca.sayHello("Hello how do you do?");
}//end init()
public void paint(Graphics
g){
g.drawString("Main Applet",10,80);
}//end paint
}//end class
exsub.java
package
javaapplication;
import
java.awt.Graphics;
public class
exsub extends javax.swing.JApplet {
public exsub() {
}//end constructor
String s = "Child
Applet";
public void sayHello(String
s){
this.s =s;
repaint();
}//end sayHello
public void paint(Graphics g){
g.drawString(s,50,20);
}//end paint() }//end class
*****************************สร้างไฟล์ HTML**********************************
EX501.html
EX503.html
EX503_1.html
EX505.html
Ex502.html
Ex506.html
Ex506_1.html
Ex508.html
Ex509.html
Exsup_mainsub.html
copy right @ ณัฎภัทรศญา ทับทิมเทศ, "การเขียนโปรแกรมเชิงวัตถุ, 2552
บรรณานุกรม
H.M.Deital Deitel &Associates,Inc., P.J.Deitel Deitel&Associates,Inc, " Java How
to Program 4th", Prentice Hall,USA,2002
http://www.netbeans.org/kb/50/index.html
http://java.sun.com/docs/books/tutorial/uiswing/index.html
http://java.sun.com/docs/books/tutorial/uiswing/components/components.html
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JComponent.html
http://java.sun.com/docs/books/tutorial/uiswing/TOC.html
Help, Netbeans 5.0, 2006
Java,จาวา,การเขียนโปรแกรมภาษา Java,กิฟฟารีน,giffarine,บทเรียนคอมพิวเตอร์,ไอที,IT,กรณีศึกษา,สื่อการสอน,โปรเจ็ค,project