Advanced Java Database Programming
Download
Report
Transcript Advanced Java Database Programming
Java Programming Language
Chapter 10 Advanced Java Database Programming
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-222158-6
1
JDBC
การติดต่อกับฐานข้อมูล แบ่งขั้นตอนหลักๆได้ 4
ขั้นตอน
สร้างการติดต่อกับฐานข้อมูล
ดาเนินการกับฐานข้อมูล
แสดงผลลัพธ์ให้กบั ผูใ้ ช้
ยกเลิกการติดต่อกับฐานข้อมูล
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
2
1.สร้างการติดต่อกับฐานข้อมูล
มี 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. 0-13-222158-6
3
2.ดาเนิ นการกับฐานข้อมูล
ดาเนิ นการกับฐานข้อมูลอย่างใดอย่างหนึ่ งด้วยคาสัง่ SQL
ต้องยืนยันการดาเนิ นการผ่าน method “executeUpdate()”
ตัวอย่างการเพิม
่ ข้อมูล
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. 0-13-222158-6
4
3.
แสดงผลลัพธ์
การเพิ่มข้อมูล
สามารถทาได้โดยใช้ method “executeUpdate()”
การแก้ไขข้อมูล,
การค้นหาข้อมูล, การลบข้อมูล
สามารถทาได้โดยใช้ method “executeQuery()”
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
5
Method
กาหนดค่า Field ใน Record
pstmt.setInt(int index, int x)
pstmt.setBoolean(int index, boolean x)
pstmt.setByte(int index, byte x)
pstmt.setShort(int index, short x)
pstmt.setLong(int index, long x)
pstmt.setFloat(int index, float x)
pstmt.setDouble(int index, double x)
pstmt.setString(int index, String x)
pstmt.setDate(int index, Date x)
pstmt.setTime(int index, Time x)
pstmt.setNull(int index, Null)
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
6
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. 0-13-222158-6
7
Method
ที่ใช้เคลื่อนย้ายตัวชี้ Record
rec.next()
rec.previous()
rec.last()
rec.first()
rec.afterLast()
rec.beforeFirst()
rec.absolute(int record)
rec.moveToInsertRow()
rec.moveToCurrentRow()
เลื่อนตัวชี้ไปยัง Record ถัดไป
//x
เลื่อนตัวชี้ไปยัง Record ก่อนหน้า
เลื่อนตัวชี้ไปยัง Record สุ ดท้าย
เลื่อนตัวชี้ไปยัง Record แรก
เลื่อนตัวชี้ไปหลัง Record สุ ดท้าย
เลื่อนตัวชี้ไปก่อน Record แรก
เลื่อนตัวชี้ไปยัง Record ที่กาหนด
เลื่อนตัวชี้ไปยังหลัง Record สุ ดท้าย
เลื่อนตัวชี้ไปยั Record ปัจจุบนั ก่อนหน้า
ที่จะใช้คาสัง่ moveToInsertRow()
//x
//x
//x
//x
//x
//x
//x
//x
//
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
8
Method
ที่ใช้ตรวจสอบตัวชี้
ตรวจสอบตาแหน่ง pointer ปั จจุบนั ว่าอยูห่ ลัง record สุ ดท้ายหรื อไม่
public boolean isAfterLast()
ตรวจสอบตาแหน่ง pointer ปัจจุบนั ว่าชี้อยูก่ ่อน record แรกหรื อไม่
public boolean isBeforeFirst()
ตรวจสอบตาแหน่ง pointer ปั จจุบนั ว่าชี้อยูท่ ี่ record สุ ดท้ายหรื อไม่
public boolean isLast()
ตรวจสอบตาแหน่ง pointer ปั จจุบน
ั ว่าชี้อยูท่ ี่ record แรกหรื อไม่
public boolean isFirst()
คืนตาแหน่ง record ที่ pointer ชี้อยู่
public int getRow()
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
9
ค่าคงที่ใน class ResultSet
กาหนดให้การปรับปรุ งหรื อเปลี่ยนแปลงข้อมูลในตารางมีผลทันที
ResultSet.TYPE_SCROLL_SENSITIVE
กาหนดให้การปรับปรุ งหรื อเปลี่ยนแปลงข้อมูลในตารางมีผลเมื่อปิ ดการใช้งาน
ด้วย method close()
ResultSet.TYPE_SCROLL_INSENSITIVE
กาหนดให้สามารถปรับปรุ งหรื อเปลี่ยนแปลงข้อมูลในตารางฐานข้อมูลได้
ResultSet.CONCUR_UPDATABLE
กาหนดให้สามารถอ่านข้อมูลจากตารางได้เพียงอย่างเดียว
ResultSet.CONCUR_READONLY
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
10
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. 0-13-222158-6
11
Method
ลบข้อมูล ณ.
ที่ใช้ดาเนินการกับ Record
ตาแหน่งตัวชี้ปัจจุบนั
public void deleteRow()
เพิ่มข้อมูล ณ. ตาแหน่งตัวชี้ปัจจุบน
ั
public void insertRow()
ปรับปรุ งข้อมูล ณ. ตาแหน่งตัวชี้ปัจจุบน
ั
public void updateRow()
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
12
4.การยกเลิกการติดต่อ
กระทาเมื่อไม่ตอ้ งการใช้งานฐานข้อมูล
วิธีการ
เรี ยกใช้ method “close()”
ตัวอย่าง
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
13
ตัวอย่าง
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. 0-13-222158-6
14
กรณี ศึกษา
โปรแกรมเก็บฐานข้อมูลนักศึกษา
– สามารถแสดงรู ปภาพ นักศึกษาได้
– สามารถเพิม่ , แก้ไข, ค้นหา, ลบ ข้อมูลได้
ตัวอย่างการเขียนโปรแกรมประยุกต์แบบ Example.java
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
15
Project
ให้นก
ั ศึกษาเขียนโปรแกรมภาษาจาวาเพื่อเก็บข้อมูลโดยโปรแกรมต้อง
สามารถทางานได้อย่างน้อย ดังต่อไปนี้
สามารถบันทึกข้อมูลได้
สามารถแก้ไขข้อมูลได้
สามารถค้นหาข้อมูลได้
สามารถลบข้อมูลได้
สามารถแสดงข้อมูล พร้อมแสดงรู ปภาพได้
กาหนดส่ งหลังสอบปลายภาค
คะแนนเต็ม 10
คะแนน(ขึ้นอยูก่ บั ความสามารถของโปรแกรม)
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All
rights reserved. 0-13-222158-6
16