Transcript DAY 3

File Stream
1
รู้จักกับ Stream
• โปรแกรมของคุณทำกำรอ่ำนหรื อเขียนข้อมูลจำกอุปกรณ์ I/O ภำยนอก
โดยมีสะพำนส่ งผ่ำนข้อมูลอยูร่ ะหว่ำงกลำง และเมื่อไหร่ กต็ ำมที่มีขอ้ มูล
เดินทำงผ่ำนสะพำนนี้ Java ก็จะเรี ยกมันว่ำ Stream
2
รู้จักกับ Stream (ต่ อ)
เปิ ด Stream
หมดแล้ว
ปิ ดสะพำน
ปิ ด Stream
ข้อมูลหมดแล้ว?
สะพำนเชื่อมโยงข้อมูล
ยังไม่หมด
อ่ำน/เขียนข้อมูล
3
รู้จักกับ Stream (ต่ อ)
• ประเภทของข้อมูล
– Byte Stream ข้อมูลที่อยูใ่ นรู ปแบบที่เครื่ องอ่ำนออกเท่ำนั้น (Machine-formatted data)
– Character Stream ข้อมูลที่เป็ นภำษำมนุษย์ (Human-readable data)
4
การทางานแบบ Byte Stream
• Byte Stream เป็ น Stream ที่ Java ใช้สำหรับกำรเขียนหรื ออ่ำนข้อมูล
แบบเครื่ อง (machine-formatted data) โดยทำกำรสร้ำงคลำสย่อย
ขึ้นมำจำกคลำส InputStream และ OutputStream แต่เป็ นภำษำที่
มนุษย์ไม่เข้ำใจ ต้องผ่ำนกระบวนกำร InputStream อีกครั้งจึงจะ
ออกมำเป็ นข้อควำมที่มนุษย์เข้ำใจได้
5
การทางานแบบ Character Stream
• Character Stream คือกำรอ่ำนและเขียนข้อมูลด้วยภำษำที่มนุษย์
เข้ำใจ โดยสร้ำงออบเจ็กต์ข้ ึนมำจำกคลำส 2 คลำสคือ Reader และ
Writer โดยผ่ำนกระบวนกำรแปลค่ำให้อยูใ่ นรู ปจำนวนบิตที่
เหมำะสม
6
การจัดการข้ อมูลด้ วย Stream
ก่อนอื่นต้องทำกำร import java.io.* บนสุ ดของโปรแกรมก่อน
• การอ่าน Stream มีรูปแบบกำรเขียนโปรแกรมอ่ำนข้อมูล
import java.io.*;
class ชื่อคลาส
{ public static void main(String[] args) throws IOException
{ ClassInputStream in = new ClassInputStream();
int c;
while ( (c = in.read( ) ) != -1)
{ System.out.println( c ); //รูปแบบผลลัพธ์ ทตี่ ้ องการ }
in.close();
}
}
7
การจัดการข้ อมูลด้ วย Stream
• การเขียน Stream รู ปแบบกำรเขียนโปรแกรมเขียนข้อมูล
import java.io.*;
class ชื่อคลาส
{ public static void main(String[] args) throws IOException
{
ClassInputStream in = new ClassInputStream();
ClassOutputStream out = new ClassOutputStream();
int c;
while ((c=in.read()) != -1)
{
System.out.write(c); //รูปแบบผลลัพธ์ ทตี่ ้ องการ
}
}
}
8
ทางานกับไฟล์ ด้วย File Stream
• File Stream คือ กำรสร้ำง Stream ขึ้นมำเพื่ออ่ำนและเขียนลงไฟล์แบบ
byte และ character
– FileReader, FileWriter : อ่ำนและเขียนลงไฟล์แบบ character
– FileInputStream, FileOutputStream : อ่ำนและเขียนลงไฟล์แบบ byte
9
ทางานกับไฟล์ ด้วย File Stream (ต่ อ)
• ขั้นตอนการเขียนโปรแกรมอ่าน File
10
ทางานกับไฟล์ ด้วย File Stream
• รู ปแบบกำรสร้ำง InputStream มี 2 รู ปแบบดังนี้
FileReader in = new FileReader( ชื่อไฟล์ );
• หรื อ
FileInputStream in = new FileInputStream( ชื่อไฟล์ );
11
การอ่ านไฟล์
• ตัวอย่ำง
12
การอ่ านไฟล์
• ตัวอย่ำง
13
ทางานกับไฟล์ ด้วย File Stream
• การเขียน File Stream
– รู ปแบบกำรเขียน File Stream กรณี เขียนลงไปที่ไฟล์ใหม่ หรื อ เขียนทับลงไป
ที่ไฟล์ที่มีอยูเ่ ดิม
File fileObject = new File(“ ชื่อไฟล์ และแหล่ งทีอ่ ยู่ของไฟล์ ”);
– หรื อ
FileWriter f = new FileWriter( “ ชื่อไฟล์ และแหล่ งทีอ่ ยู่ของไฟล์ ”, false );
– รู ปแบบกำรเขียน File Stream กรณี เขียนต่อท้ำยลงไปที่ไฟล์ที่มีอยูเ่ ดิม
File fileObject = new File( “ ชื่อไฟล์ และแหล่ งทีอ่ ยู่ของไฟล์ ” );
FileWriter f = new FileWriter( “ ชื่อไฟล์ และแหล่ งทีอ่ ยู่ของไฟล์ ”, true );
14
• ตัวอย่ำง
การเขียน File Stream
15
การเขียน File Stream (ต่ อ)
• ตัวอย่ำง
16
เมธอดต่ างๆ เกีย่ วกับไฟล์
• เมธอด getAbsolutePath นี้จะใช้เมื่อเรำต้องกำรทรำบไดเร็ คทอรี ที่เก็บ
ไฟล์
รู ปแบบกำรใช้งำนเมธอด getAbsolutePath
ชื่อออบเจ็กต์ ของไฟล์ .getAbsolutePath ( ) ;
17
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
18
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
• เมธอด exist( ) ตรวจสอบว่ำไฟล์ดงั กล่ำวมีอยูห่ รื อไม่
รู ปแบบกำรใช้งำนเมธอด exist
ชื่อออบเจ็กต์ ของไฟล์ .exists( ) ;
19
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
20
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
• เมธอด canWrite( ) และเมธอด canRead( ) ทั้งสองเมธอดเป็ นกำร
ตรวจสอบคุณสมบัติของไฟล์วำ่ สำมำรถถูกนำไปเปิ ดอ่ำน หรื อ เขียนได้
หรื อไม่
รู ปแบบกำรใช้งำนเมธอด canWrite
ชื่อออบเจ็กต์ ของไฟล์ .canWrite ( ) ;
รู ปแบบกำรใช้งำนเมธอด canRead
ชื่อออบเจ็กต์ ของไฟล์ .canRead ( ) ;
21
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
22
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
• เมธอด isFile( ) เป็ นเมธอดที่ใช้ตรวจสอบว่ำออบเจ็กต์ที่ตอ้ งกำร
ตรวจสอบเป็ นไฟล์หรื อไม่
รู ปแบบกำรใช้งำนเมธอด isFile
ชื่อออบเจ็กต์ ของไฟล์ .isFile( );
• เมธอด isDirectory( ) เป็ นเมธอดที่ใช้ตรวจสอบว่ำออบเจ็กต์ที่ตอ้ งกำร
ตรวจสอบเป็ นไดเร็ คทอรี หรื อไม่
รู ปแบบกำรใช้งำนเมธอด isDirectory
ชื่อออบเจ็กต์ ของไฟล์ .isDirectory( );
23
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
1. import java.io.File;
2. public class FileMainClass {
3.
public static void main(String args[]) {
4.
File f1 = new File("test.txt");
5.
System.out.println("File Name:" + f1.getName());
6.
System.out.println("Path:" + f1.getPath());
7.
System.out.println("Abs Path:" + f1.getAbsolutePath());
8.
System.out.println("Parent:" + f1.getParent());
9.
System.out.println(f1.exists() ? "exists" : "does not exist");
10.
System.out.println(f1.canWrite() ? "is writeable" : "is not writeable");
11.
System.out.println(f1.canRead() ? "is readable" : "is not readable");
12.
System.out.println("is a directory " + f1.isDirectory() );
13.
System.out.println(f1.isFile() ? "is normal file" : "might be a named pipe");
14.
System.out.println(f1.isAbsolute() ? "is absolute" : "is not absolute");
15.
System.out.println("File last modified:" + f1.lastModified());
16.
System.out.println("File size:" + f1.length() + " Bytes");
17. }
18. }
24
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
• เมธอด length( ) ใช้ดูขนำดของไฟล์ เมธอดนี้จะคืนค่ำเป็ นค่ำขนำดของ
ไฟล์ ซึ่งมีหน่วยเป็ นไบต์
รู ปแบบกำรใช้งำนเมธอด length( )
ชื่อออบเจ็กต์ ของไฟล์ .length ( );
• เมธอด mkdir จะเป็ นเมธอดที่ใช้สร้ำงไดเร็ คทอรี พร้อมกับคืนค่ำเป็ นจริ ง
เมื่อสำมำรถสร้ำงได้สำเร็ จ และคืนค่ำเป็ นเท็จเมื่อไม่สำมำรถทำกำรสร้ำง
ไดเร็ คทอรี ได้
รู ปแบบกำรใช้งำนเมธอด mkdir( )
ชื่อออบเจ็กต์ ของไดเร็คทอรี .mkdir( );
25
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
26
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
27
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
• เมธอด renameTo( ) ใช้เมื่อต้องกำรจะย้ำยไฟล์ หรื อเปลี่ยนชื่อไฟล์
ในกรณี ที่เรำระบุที่เก็บของไฟล์ชื่อใหม่ปลำยทำงด้วย นัน่ หมำยถึง
เป็ นกำรย้ำยไฟล์ แต่ถำ้ ไม่ระบุที่เก็บไฟล์กเ็ ป็ นกำรเปลี่ยนชื่อไฟล์ที่
ยังคงวำงอยูท่ ี่เดิม
รู ปแบบกำรใช้งำนเมธอด renameTo( )
ชื่อออบเจ็กต์ ของไฟล์เดิม . renameTo(ชื่อออบเจ็กต์ ของไฟล์ใหม่ );
28
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
• เมธอด delete ใช้ลบไฟล์ โดยจะคืนค่ำเป็ นจริ งเมื่อไฟล์น้ นั มีอยูจ่ ริ ง
และสำมำรถทำกำรลบได้สำเร็ จ ถ้ำไม่ฉะนั้นจะคืนค่ำที่เป็ นเท็จ
รู ปแบบกำรใช้งำนเมธอด delete( )
ชื่อออบเจ็กต์ ของไฟล์เดิม.delete( )
29
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
30
เมธอดต่ างๆ เกีย่ วกับไฟล์ (ต่ อ)
31
GUI-swing package
32
Abstract Window Toolkit (AWT)
• ในแพจเก็จ java.awt มีคลาสและอินเตอร์เฟสทีส่ าคัญดังนี้
– Component
– Container
– LayoutManager
–
–
–
–
Graphics
Color
Font
AWTEvent
(อินเตอร์เฟส)
AWT
คลาส Component
• การเขียนโปรแกรม GUI นัน้ จะเป็ นการสร้างออปเจ็คต่างๆทีเ่ ป็ นออปเจ็ค
ของคลาสทีเ่ ป็ นส่วนประกอบกราฟฟิก
• คลาสทีเ่ ป็ นส่วนประกอบกราฟฟิกจะสืบทอดมาจากคลาสทีช่ อ่ื
Component
• คลาสทีเ่ ป็ น subclass ของคลาส Component จะแบ่งเป็ นสองกลุม่ คือ
– คลาสทีเ่ ป็ นคลาสประเภท Container เป็ นคลาสทีใ่ ช้ในการใส่สว่ นประกอบ
กราฟฟิกต่างๆ
– คลาสทีเ่ ป็ นส่วนประกอบกราฟฟิกอื่นๆ อาทิเช่น Button,Choice และ List
เป็ นต้น
คลาสที่สบื ทอดมาจากคลาส Component
แพคเก็จ Swing
• Swing เป็ นแพคเก็จสาหรับพัฒนาโปรแกรม GUI ซึ่ งมีส่วนประกอบกราฟฟิ ก
ที่มากชนิดกว่าที่มีอยูใ่ นแพคเก็จ AWT
• ส่ วนประกอบกราฟฟิ กของแพคเก็จ Swing จะมีลกั ษณะที่ดีกว่าส่ วนประกอบ
กราฟฟิ กของแพคเก็จ AWT
• ส่ วนประกอบกราฟฟิ กของแพคเก็จ Swing สามารถกาหนดรู ปแบบของ look
and feel ที่ทาให้ได้โปรแกรม GUI ที่มีรูปแบบของกราฟฟิ กเหมือนกันในทุก
แพลตฟอร์ม ซึ่ งจะแตกต่างกับแพคเก็จ AWT ที่จะมีรูปแบบของกราฟฟิ กซึ่ งขึ้นอยู่
กับ look and feel ของแต่ละแพลตฟอร์ม
• การกาหนด look and feel ได้เองทาให้โปรแกรม GUI ที่ใช้ออปเจ็คของ
แพคเก็จ Swing แสดงผลได้ชา้ กว่าโปรแกรม GUI ที่ใช้ออปเจ็คของ
แพค
เก็จ AWT
แพคเก็จ Swing
• แพคเก็จของ Swing อยูใ่ นแพคเก็จที่ชื่อ javax.swing
• คลาสทีเ่ ป็ นส่วนประกอบกราฟฟิกของแพคเก็จ Swing ทุกคลาสจะ
สืบทอดมาจากคลาส JComponent
• คลาส JComponent จะสื บทอดมาจากคลาส Container ในแพค
เก็จAWT อีกต่อหนึ่ง
• แพคเก็จ Swing จะมีคลาสทีเ่ ป็ นส่วนประกอบกราฟฟิกทีส่ อดคล้อง
กับคลาสในแพคเก็จ AWT โดยคลาสเหล่านี้จะมีช่อื ขึน้ ต้นด้วย
ตัวอักษร ‘J’
คลาสต่างๆทีส่ บื ทอดมาจากคลาส JComponent
คลาสทีเ่ ป็ นส่ วนประกอบกราฟฟิ กในแพคเก็จ Swing
• คลาสทีเ่ ป็ นส่ วนประกอบกราฟฟิ กที่สาคัญในแพคเก็จ Swing มีดงั นี้
–
–
–
–
–
–
–
–
JFrame
JPanel
JButton
JLabel
JTextField
JTextArea
JScrollbar
JToolTip
คลาส JFrame
• แพคเก็จ Swing มีคลาสประเภท Container ทีแ่ ตกต่างจาก
คลาสประเภท Container ของแพคเก็จ AWT คือ
JFrame,JDialog,JPanel และ JApplet โดยทัวไปโปรแกรม
่
GUI ทีเ่ ป็ นโปรแกรมจาวาประยุกต์จะใช้ Container ทีเ่ ป็ นออป
เจ็คของคลาส JFrame
• คลาส JFrame จะสืบทอดมาจากคลาส Frame โดยมี
constructor ทีส่ าคัญดังนี้
– public JFrame()
– public JFrame(String title)
Panes
• ออปเจ็คของคลาส JFrame แตกต่างกับ Frame ตรงที่มีหน้าต่าง
(pane) อยู่ 4 หน้าต่างดังนี้
– root pane
– layer pane
– glass pane
– content pane
เมธอด getContentPane()
• เราไม่สามารถทีจ่ ะใส่สว่ นประกอบกราฟฟิกลงใน JFrame ได้โดยตรง
แต่จะต้องใส่ลงในหน้าต่างทีเ่ ป็ น content pane แทน
• เรียกออปเจ็คของคลาสประเภท Container ได้โดยใช้เมธอดทีช่ ่อื
getContentPane() และสามารถทีจ
่ ะใส่สว่ นประกอบกราฟฟิกได้
โดยใช้เมธอด add()
• ตัวอย่างเช่น
Container content = fr.getContentPane();
content.setLayout(new BorderLayout());
content.add(bn1,BorderLayout.SOUTH);
ตัวอย่างโปรแกรม
import javax.swing.*;
public class SwingDemo {
public static void main(String args[]) {
JFrame fr = new JFrame("SwingDemo");
JPanel p1 = new JPanel();
JButton bn1 = new JButton("New button");
p1.add(bn1);
fr.setContentPane(p1);
fr.pack();
fr.setVisible(true);
}
}
HelloWorldSwing
•
•
import javax.swing.JFrame;
import javax.swing.JLabel;
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
public class HelloWorldSwing {
private static void createAndShowGUI() {
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
45
import javax.swing.*;
public class InputDialog1 {
public static void main(String[] args) {
String name = JOptionPane.showInputDialog("What is your name?");
JOptionPane.showMessageDialog(null,"Hello "+ name
,"Output",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "Hello", "Output", 0);
System.exit(0);
}
}
Applets
47
ทาความรู้จักกับ Applet
• Java Applet คือ โปรแกรมขนำดเล็กๆ ในภำษำ Java ที่ถูกกำหนดไว้ให้ใช้งำน
ได้บนเว็บเพจ โดยแสดงผลผ่ำนเว็บบรำวเซอร์
• Applet นั้นมีจุดเด่นที่สำมำรถสร้ำงส่ วนติดต่อผูใ้ ช้งำนเป็ น Graphic User
Interface (GUI) ได้ทำให้สำมำรถแสดงข้อควำม และสำมำรถตกแต่งด้วย
ภำพกรำฟิ กสวยงำมได้
48
กระบวนการหลักๆ ของการสร้ าง Applet
• ขั้นแรกของกำรสร้ำง Applet คือ เลยต้องทำกำร import แพ็คเกจ
java.awt.Graphics ซึ่งใช้ในกำรแสดงผลภำพกรำฟิ กและ import
แพ็คเกจ java.applet.applet ซึ่งจะดึง class Applet มำใช้งำนใน
โปรแกรม
49
กระบวนการหลักๆ ของการสร้ าง Applet (ต่ อ)
• รู ปแบบกำรสร้ำง class Applet
public class ชื่อApplet extends java.applet.Applet
{
// ส่ วนของโปรแกรม การทางานของ Applet
}
• รู ปแบบโค้ดที่ใช้แทรกไฟล์ Applet.class ลงในไฟล์ HTML
<applet codebase = “URL หรือทีอ่ ยู่ไฟล์ คลาส.class” width= ความกว้ างของ applet
height= ความสู งของ applet > </applet>
50
วัฏจักรของ Applet
51
หน้ าที่ของเมธอดภายใน Applet
• เมธอด init เป็ นเมธอดที่ถูกอ่ำนโดยระบบเมื่อ Applet ถูกประมวลผล
มีไว้เพื่อบอกกับระบบว่ำ อะไรจะเกิดขึ้นบ้ำงในเมื่อ Applet ใดๆ ถูก
สร้ำงขึ้น
• เมธอด start เริ่ มทำงำน (start) หลังจำกที่กำรกำหนดค่ำเริ่ มต้น (init)
แต่กำรเริ่ มของ Applet นั้นสำมำรถเกิดขึ้นได้อีกในกรณี ที่ Applet ก่อน
หน้ำนี้ มัน ถูก บังคับให้ห ยุด หรื อผูใ้ ช้ก ดลิ งค์ทำให้ห น้ำจอปั จจุ บนั ถูก
เปลี่ยนจำกกำรรัน Applet ไปเป็ นอย่ำงอื่น
52
หน้ าที่ของเมธอดภายใน Applet (ต่ อ)
53
หน้ าที่ของเมธอดภายใน Applet (ต่ อ)
• เมธอด paint เป็ นหนึ่งในเมธอดที่ถูกกำหนดในคลำส Applet แต่
ไม่ได้ทำอะไรเลย มีไว้สำหรับเมื่อต้องกำรให้ Applet แสดงอะไร
ขึ้นมำบนหน้ำจอ ไม่วำ่ จะเป็ น ข้อควำม, รู ปภำพ, รู ปทรงต่ำงๆ
• เมธอด stop กำรหยุดของ Applet หมำยถึง กำรที่ผใู ้ ช้ออกจำก
หน้ำจอปัจจุบนั ที่กำลังรัน Applet อยูน่ ้ นั หรื อกำรที่ Applet หยุดตัว
มันเองด้วยกำรเรี ยกเมธอด stop โดยตรง
• เมธอด destroy เป็ นกำรบอกให้ Applet ล้ำงหน่วยควำมจำต่ำงๆ ให้
เป็ นเหมือนก่อนที่มนั จะใช้เมื่อทำกำรปิ ดบรำวเซอร์ หรื อใช้ทำลำย
เธรดต่ำงๆ ที่ยงั คงทำงำนค้ำงอยู่
54
หน้ าที่ของเมธอดภายใน Applet (ต่ อ)
55
หน้ าที่ของเมธอดภายใน Applet (ต่ อ)
56
การส่ งค่ าตัวแปรจากไฟล์ HTML เข้ าไปใช้ ใน Applet
• รู ปแบบกำรใช้ส่งค่ำตัวแปรจำกไฟล์ HTML เข้ำไปใช้ในคลำส
Applet<APPLET CODE=”yourApplet.class” WIDTH=100 HEIGHT=100>
<PARAM NAME=”ชื่อตัวแปร1” VALUE=”ค่ าตัวแปร1”>
<PARAM NAME=”ชื่อตัวแปร2” VALUE=”ค่ าตัวแปร2”>
.
.
<PARAM NAME=”ชื่อตัวแปรN” VALUE=”ค่ าตัวแปรN”>
</APPLET>
• รู ปแบบกำรใช้งำนเมธอด getParameter
String getParameter ( String ชื่อตัวแปร)
57
การส่ งค่ าตัวแปรจากไฟล์ HTML เข้ าไปใช้ ใน Applet (ต่ อ)
58
การส่ งค่ าตัวแปรจากไฟล์ HTML เข้ าไปใช้ ใน Applet (ต่ อ)
59
Applet สวยงามกับรูปทรงต่ างๆ และการระบายสี
• สิ่ งสำคัญที่จำเป็ นต้องใช้สำหรับกำรทำกรำฟิ กในโปรแกรม Applet ของ
คุณก็คือ คลำสต่ำงๆ ที่อยูใ่ น Package java.awt ที่ Java เตรี ยมไว้ให้ และ
คลำสที่เรำมักใช้อยูบ่ ่อยๆ ก็คือ คลำส Graphics โดยปกติแล้วเรำจะ
import เอำไว้ในทุกๆ โปรแกรม Applet
60
JDBC API
61
Jdbc –database access
•
•
•
•
•
What is JDBC?
Step By Step Usage of JDBC API
DataSource & Connection Pooling
Transaction
Prepared and Callable Statements
62
What is jdbc?
• Standard Java API for accessing relational
database
– Hides database specific details from application
• Part of Java SE (J2SE)
– Java SE 6 has JDBC 4
63
JDBC API
• Defines a set of Java Interfaces, which are
implemented by vendor-specific JDBC Drivers
– Applications use this set of Java interfaces for performing
database operations – portability
• Majority of JDBC API is located in java.sql package
– DriverManager, Connection, ResultSet,
– DatabaseMetaData, ResultSetMetaData,
– PreparedStatement, CallableStatement and Types
• Other advanced functionality exists in the javax.sql
package
– DataSource
64
JDBC Driver
• Database specific implementation of JDBC
interfaces
– Every database server has corresponding
• JDBC driver(s)
– http://industry.java.sun.com/products/jdbc/drivers
65
Steps of Using JDBC
1.Load DB-specific JDBC driver
2.Get a Connection object
3.Get a Statement object
4.Execute queries and/or updates
5.Read results
6.Read Meta-data (optional step)
7.Close Statement and Connection objects
66
Get a connection by direct access
import java.sql.*;
public class TestDBAccessODBC {
private static Connection con;
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// set this to a MS Access DB you have on your machine
String filename = "C:/Users/poompin/Documents/MyDbForTest.accdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}"; // add on to the end
// now we can get the connection from the DriverManager
con = DriverManager.getConnection( database ,"","");
con.close(); // close the Connection to let the database know we're done with it
} catch (Exception err) {
System.out.println( "Error: " + err );
}
}
}
67
Get a connection using DSN
import java.sql.*;
public class TestDBAccessDSN {
private static Connection con;
public static void main(String[] args) {
String dataSourceName = “dsn_name";
String dbURL = "jdbc:odbc:" + dataSourceName;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(dbURL, "","");
con.close();
// close the Connection to let the database
know we're done with it
} catch (Exception err) {
System.out.println( "Error: " + err );
}
}
}
68
Create a java.sql.Statement
Statement s = con.createStatement();
// create a table
s.execute("create table TEST12345 ( column_name integer )");
// insert some data into the table
s.execute("insert into TEST12345 values(34)");
// select the data from the table
s.execute("select column_name from TEST12345");
// get any ResultSet that came from our query
ResultSet rs = s.getResultSet();
if (rs != null)
// if rs == null, then there is no ResultSet to view
while ( rs.next() )
// this will step through our data row-by-row
{
System.out.println("Data from column_name: " + rs.getString(1) );
}
s.execute("drop table TEST12345"); // delete table
s.close();
69
summary
•
•
•
•
•
•
•
•
Basic Language of JAVA
Control Statement
Classes and Objects
Working with GUI, AWT , SWING
Basic Input/Output , File Stream
Applet
JDBC API
Practice
70
Thank you
71