Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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