Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language Chapter 10 Advanced Java Database Programming
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved JDBC F การติดต่อกับฐานข้อมูล แบ่งขั้นตอนหลักๆ ได้ 4 ขั้นตอน สร้างการติดต่อกับฐานข้อมูล ดำเนินการกับฐานข้อมูล แสดงผลลัพธ์ให้กับผู้ใช้ ยกเลิกการติดต่อกับฐานข้อมูล
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved สร้างการติดต่อกับฐานข้อมูล F มี 2 ขั้นตอน โหลด Driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); เชื่อมต่อกับฐานข้อมูล Connection con = DriverManager.getConnection(URL); ตัวอย่าง เช่น String URL = "jdbc:odbc:ConnectExample"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(URL);
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved ดำเนินการกับฐานข้อมูล F ดำเนินการกับฐานข้อมูลอย่างใดอย่างหนึ่งด้วย คำสั่ง SQL F ต้องยืนยันการดำเนินการผ่าน method “executeUpdate()” F ตัวอย่างการเพิ่มข้อมูล String URL = "jdbc:odbc:ConnectExample"; String SQL = "INSERT INTO Student(Id,Name,Faculty,Telphone,Address)"+ "VALUES(?,?,?,?,?)"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(URL); PreparedStatement pstmt = con.prepareStatement(SQL, ResultSet. TYPE_SCROLL_SENSITIVE,ResultSet. CONCUR_UPDATABLE); pstmt.setString(1,TextId.getText()); pstmt.setString(2,TextName.getText()); pstmt.executeUpdate();
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved แสดงผลลัพธ์ F การเพิ่มข้อมูล สามารถทำได้โดยใช้ method “executeUpdate()” F การแก้ไขข้อมูล, การค้นหาข้อมูล, การลบ ข้อมูล สามารถทำได้โดยใช้ method “executeQuery()”
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Method กำหนดค่า Field ใน Record F pstmt.setInt(int index, int x) F pstmt.setBoolean(int index, boolean x) F pstmt.setByte(int index, byte x) F pstmt.setShort(int index, short x) F pstmt.setLong(int index, long x) F pstmt.setFloat(int index, float x) F pstmt.setDouble(int index, double x) F pstmt.setString(int index, String x) F pstmt.setDate(int index, Date x) F pstmt.setTime(int index, Time x) F pstmt.setNull(int index, Null)
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Method ที่ใช้อ่านข้อมูลจาก field public Date getDate(String) public double getDouble(String) public float getFloat(String) public int getInt(String) public long getLong(String) public String getString(String) public boolean getBoolean(String) public byte getByte(String) public short getShort(String) public Time getTime(String)
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Method ที่ใช้เคลื่อนย้ายตัวชี้ Record F rec.next() //x เลื่อนตัวชี้ไปยัง Record ถัดไป F rec.previous() //x เลื่อนตัวชี้ไปยัง Record ก่อนหน้า F rec.last() //x เลื่อนตัวชี้ไปยัง Record สุดท้าย F rec.first() //x เลื่อนตัวชี้ไปยัง Record แรก F rec.afterLast() //x เลื่อนตัวชี้ไปหลัง Record สุดท้าย F rec.beforeFirst() //x เลื่อนตัวชี้ไปก่อน Record แรก F rec.absolute(int record) //x เลื่อนตัวชี้ไปยัง Record ที่กำหนด F rec.moveToInsertRow() //x เลื่อนตัวชี้ไปยังหลัง Record สุดท้าย F rec.moveToCurrentRow() //x เลื่อนตัวชี้ไปยั Record ปัจจุบันก่อน หน้า // ที่จะใช้คำสั่ง moveToInsertRow()
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Method ที่ใช้ตรวจสอบตัวชี้ F ตรวจสอบตำแหน่ง pointer ปัจจุบันว่าอยู่หลัง record สุดท้ายหรือไม่ public boolean isAfterLast() F ตรวจสอบตำแหน่ง pointer ปัจจุบันว่าชี้อยู่ก่อน record แรก หรือไม่ public boolean isBeforeFirst() F ตรวจสอบตำแหน่ง pointer ปัจจุบันว่าชี้อยู่ที่ record สุดท้ายหรือไม่ public boolean isLast() F ตรวจสอบตำแหน่ง pointer ปัจจุบันว่าชี้อยู่ที่ record แรกหรือไม่ public boolean isFirst() F คืนตำแหน่ง record ที่ pointer ชี้อยู่ public int getRow()
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved ค่าคงที่ใน class ResultSet F กำหนดให้การปรับปรุงหรือเปลี่ยนแปลงข้อมูลในตาราง มีผลทันที ResultSet.TYPE_SCROLL_SENSITIVE F กำหนดให้การปรับปรุงหรือเปลี่ยนแปลงข้อมูลในตาราง มีผลเมื่อปิดการใช้งานด้วย method close() ResultSet.TYPE_SCROLL_INSENSITIVE F กำหนดให้สามารถปรับปรุงหรือเปลี่ยนแปลงข้อมูลใน ตารางฐานข้อมูลได้ ResultSet.CONCUR_UPDATABLE F กำหนดให้สามารถอ่านข้อมูลจากตารางได้เพียงอย่าง เดียว ResultSet.CONCUR_READONLY
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Method ที่ใช้ปรับปรุงข้อมูล rec.updateBoolean(String Field, boolean x) rec.updateByte(String Field, byte x) rec.updateShort(String Field, short x) rec.updateInt(String Field, int x) rec.updateLong(String Field, long x) rec.updateFloat(String Field, float x) rec.updateDouble(String Field, double x) rec.updateString(String Field, String x) rec.updateDate(String Field, Date x) rec.updateTime(String Field, Time x)
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Method ที่ใช้ดำเนินการกับ Record F ลบข้อมูล ณ. ตำแหน่งตัวชี้ปัจจุบัน public void deleteRow() F เพิ่มข้อมูล ณ. ตำแหน่งตัวชี้ปัจจุบัน public void insertRow() F ปรับปรุงข้อมูล ณ. ตำแหน่งตัวชี้ปัจจุบัน public void updateRow()
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved การยกเลิกการติดต่อ F กระทำเมื่อไม่ต้องการใช้งานฐานข้อมูล F วิธีการ เรียกใช้ method “close()” F ตัวอย่าง
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved String URL = "jdbc:odbc:ConnectExample"; String SQL = "INSERT INTO Student(Id,Name,Faculty,Telphone,Address)"+ "VALUES(?,?,?,?,?)"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(URL); PreparedStatement pstmt = con.prepareStatement(SQL, ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); pstmt.setString(1,TextId.getText()); pstmt.setString(2,TextName.getText()); pstmt.executeUpdate(); pstmt.close(); con.close(); ตัวอย่าง
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved กรณีศึกษา F โปรแกรมเก็บฐานข้อมูลนักศึกษา – สามารถแสดงรูปภาพ นักศึกษาได้ – สามารถเพิ่ม, แก้ไข, ค้นหา, ลบ ข้อมูลได้ F ตัวอย่างการเขียนโปรแกรมประยุกต์แบบ Example.java Example.java
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Project F ให้นักศึกษาเขียนโปรแกรมภาษาจาวาเพื่อเก็บ ข้อมูลโดยโปรแกรมต้องสามารถทำงานได้อย่าง น้อย ดังต่อไปนี้ สามารถบันทึกข้อมูลได้ สามารถแก้ไขข้อมูลได้ สามารถค้นหาข้อมูลได้ สามารถลบข้อมูลได้ สามารถแสดงข้อมูล พร้อมแสดงรูปภาพได้ F กำหนดส่งหลังสอบปลายภาค F คะแนนเต็ม 10 คะแนน ( ขึ้นอยู่กับความสามารถ ของโปรแกรม )