50
www.itsci.mju.ac.th/sayan JDBC SAYAN UNANKARD 1/2562 5

Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

www . i t s c i .m ju . ac . t h / sayan

JDBC SAYAN UNANKARD1/2562

5

Page 2: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

WHAT IS JDBC?

พฒนาขนโดย Javasoft ในป 1996 และไดรบการยอมรบอยางแพรหลาย

JDBC ยอมาจากค าวา Java Data Base Connectivity API ซงเปนเครองมอทใชเปนพนฐานส าหรบนกพฒนาในการตดตอกบ data sourceโดยมโครงสรางทถกออกแบบมาเพอยอมใหนกพฒนาในการโปรแกรม ส าหรบเปนมาตรฐานในการตดตอและยอมใหระบบฐานขอมลทแตกตางกนสามารถใช low-level JDBC เพอใชส าหรบการเชอตอและการ query ของระบบฐานขอมล

เนองจาก JDBC มความยดหยนคอนขางมาก นกพฒนาจงไมจ าเปนตองกงวลเกยวกบการตดตอกบSQL ส าหรบแตละฐานขอมล database หรอสญเสยคณสมบตบางประการส าหรบระบบฐานขอมลทเปนเปาหมาย

2

Page 3: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

Database

JDBC API

Java Application

JDBC Driver Manager

Vendor-Supplied

JDBC Driver

JDBC/ODBCBridge

Database ODBC Driver

JDBC Driver API

JDBC TECHNOLOGY DRIVERS

3

Page 4: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

ใชแนวความคดในการพฒนาแบบ ODBC

ไดรบการสนบสนนจากผผลต DBMS รายใหญ เชน Oracle, DB2, SQL Server, Sybase, Informix

ขอดของ JDBC• ถกพฒนาขนจาก Java – “Write once, run anywhere”

• ไมจ าเปนตองตดตงลงบนฝง client

JDBCExtension

API SPIApplication Program

DBMS vendor-provided or third-party JDBC driver

JDBC

4

Page 5: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

THE JDBC-ODBC BRIDGE

• ODBC (Open Database Connectivity) เปนเทคโนโลยของ Microsoft ทเกดขนในชวงกลางของทศวรรษ 1990’s.

• เปน API ทยอมใหโปรแกรมทเขยนดวย C/C++ สามารถประมวลผลค าสง SQL ภายในระบบฐานขอมลได

• สวน JDBC-ODBC bridge จะยอมใหโคดจาวาสามารถใช C/C++ interface ของ ODBC ได

• ขนตอนในการแปลงโคดจะไดจาก Java --> C --> SQL) ซงอาจมผลตอเวลาในการประมวลผล

• ODBC driver ส าหรบ Microsoft Access ถกจดจ าหนายมาพรอมกบ MS Office

5

Page 6: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

PROGRAMMING WITH JDBC

ขนตอนในการโปรแกรมดวย JDBC• โหลด driver ของระบบฐานขอมล (may be)

• ตดตงการ connection

• ประมวลผล SQL statements

• โปรเซสผลลพธตาง ๆ (if needed)

• ปดการ connection (may be)

6

Page 7: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

JDBC

Type I“Bridge”

Type II“Native”

Type III“Middleware”

Type IV“Pure”

ODBCODBCDriver

CLI(.lib)

MiddlewareServer

JDBC DRIVERS

7

Page 8: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

TYPE OF JDBC DRIVER

ถกจ าแนกออกเปน 4 แบบ:

Type 1 JDBC-ODBC bridge drivers • ใชการ connect ระหวาง Java client ไปยงระบบฐานขอมลโดยผาน ODBC drivers แบบ

Type 1 ตองการ non-Java software ในการตดตงบนเครองทใชส าหรบรนโคด และโดยปกตจะถก implemented โดยใช native code เชน C/C++

Type 2 Native-API partly Java drivers • ใช code library ในการเขาถงฐานขอมล โดยการเรยกผาน Java ไปยง library โดยType 2

จะถก implemented โดย native code ดงนนจงสามารถท างานไดดกวา Java ปจจบนคอนขางลาสมยแลว เชน e.g. Intersolv Oracle Driver

8

Page 9: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

TYPE OF JDBC DRIVER

Type 3 Net-protocol All-Java drivers • เปนการใชเนตเวรคโปรโตคอลเพอตดตอกบสวนทเปน middleware ซงอาจเปน driver ชนด

อน ๆ ทไดจดเตรยมไวส าหรบการเขาถงฐานขอมล เชน BEA's WebLogic ทม drivers โดยเฉพาะส าหรบทจะใชกบ applet หรอ Symantec DBAnywhere

Type 4 Native-protocol All-Java drivers

• จะถกเขยนโดย Java ทงหมด โดย Driver แบบนจะเขาใจถงเนตเวรคโปรโตคอลทใชกบระบบฐานขอมลโดยเฉพาะ และสามารถเขาถงระบบฐานขอมลไดโดยตรง drivers แบบนจะม Java security manager ทยอมให TCP/IP สามารถเชอมตอกบ database server ได Oracle, mSQL

9

Page 10: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

Type 1Type 2

Type 1 : Drivers ในรปของจาวาโคดทสามารถ connect กบ Java client ไปยงฐานขอมลทไมใชจาวา เชน ODBC

Type 2 : ใชกบ code libraries โดยเรยกใชผาน Java code ทเปน JDBC

JDBC DRIVER TYPES

10

Page 11: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

Type 4Pure Java

Type 3

Type 3 : โคดจาวาทงหมดจะเชอมตอเขากบ middleware ในการเขาถงฐานขอมลผานโปรโตคอลเนตเวรค

Type 4 : เปน Java JDBC ทงหมดทถกสรางขนเพอเขาถงฐานขอมลโดยตรง และอาจใหบรการแก networking middleware

JDBC DRIVER TYPES

11

Page 12: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

JDBC PSEUDOCODE

การโปรแกรมกบ JDBC จะตองมขนตอนดงตอไปน :1) โหลด JDBC driver

2) ระบชอและต าแหนงของระบบฐานขอมลทตองการใช

3) เชอมตอเขากบระบบฐานขอมลโดยอาศย Connection object

4) ประมวลผลชดค าสง SQL query โดยใช Statement object

5) รบคาผลลพธจากการท างานในรปของ ResultSet object

6) สนสดการท างานโดยการปด ResultSet, Statement และ Connection objects

12

Page 13: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

PSEUDO CODE AS A DIAGRAM

DriveManager

Connection Statement ResultSet

createscreates creates

Driver

SQL

SQL

data

data

make linkto driver

13

Page 14: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

WHAT YOU EXPECT IN DB API

1. Open a Connection

2. Send a statement

3. Retrieve results

4. Close a connection 1. Create a connection Session

2. Execute statement

3. Send results

4. Close the session

Java Application

DBMS Engine

Java DB API

14

Page 15: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

Java Application

JDBC Manager

JDBC Drivers

JDBC API

JDBC Driver API

Data Sources

Grey Area

BIG PICTURE

15

Page 16: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

CallableStatement

<<Interface>>

Statement

<<Interface>>

DriverManager

<<Singleton>>

PreparedStatement

<<Interface>>

Connection

<<Interface>>

ResultSet

<<Interface>>

ResultSetMetaData

<<Interface>>DatabaseMetaData

<<Interface>>

JDBC INTERFACE CLASSES

java.sql.* ไดจดเตรยมคลาสไวส าหรบใชงานรวมกบฐานขอมลดงน

16

Page 17: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

JDBC OBJECT CLASSES

DriverManager• ใชส าหรบการโหลด หรอ เลอก drivers

Driver• ใชส าหรบการตดตอกบระบบฐานขอมล

Connection• เปนชดค าสงของ SQL statements ทใชกบ DB

Statement• เปนค าสงเดยวของ SQL statement

ResultSet• records ทคนมาจากการท างานของ SQL Statement

17

Page 18: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

THE JDBC STEPS

1. Importing Packages

2. ตดตง JDBC Drivers

3. เปด Connection ไปยงฐานขอมล

4. สราง Statement Object

5. ประมวลผล Query และคนคาในรปของ Result Set Object

6. โปรเซส Result Set

7. ปดการท างานของ Result Set และ Statement Objects

8. ปดการ Connection

18

Page 19: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

CONNECTING TO DATABASE WITH JDBC

19

Page 20: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

LOADING THE DATABASE DRIVER

Class.forName(driverName).newInstance();

driverName เปนชอของแพคเกจและคลาสของ driver เชน Class.forName("jdbc.SimpleText.SimpleTextDriver").newInstance();

ต าแหนงของฐานขอมลจะถกระบโดย URL ตามรปแบบดงตอไปน: < protocol>:< subprotocol>:< subname>

ในกรณทมการตดตง Data Source ไวเรยบรอยแลว การโหลด driver ของระบบฐานขอมลท าไดโดย explicitlyClass.forName(dbDriverClassName);

20

Page 21: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

jdbc:odbc : // host.domain.com: 1511 /data/file

The commsprotocol

The machineholding the database.

The portused for the connection.

The path tothe databaseon the machine

e.g. jdbc:odbc:Books

ODBC DATABASE URL

21

Page 22: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

ESTABLISHING A CONNECTION

เมอ Driver ถกโหลดและ URL ถกสรางขน ขนตอนตอไปจะเปนการ connect ไปยงระบบฐานขอมลทถกระบภายใน URL โดยใชเมธอด getConnection() จากคลาส DriverManager

การสราง connection จะท าไดดงตอไปนConnection conn =

DriverManager.getConnection(dbUrl, dbUser, dbPass);

dbUrl เปนคาทถกระบโดย vendor แตโดยปกตจะท าการระบดงน :jdbc:driverName://host:port/databaseName

พารามเตอรตวแรกจะเปน URL ทถกสรางขน

พารามเตอรตวถดมาจะเปน Properties object ทมคา configuration ส าหรบระบบฐานขอมล เชน date format หรอต าแหนงของ tables

22

Page 23: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

CONNECTION

ออปเจคทคนคาจากเมธอด getConnection() จะเปน Connection object ทใชส าหรบฐานขอมลทใชส าหรบการสงค าสง SQL queries หรอใชในการ updates ฐานขอมล

ในกรณทเกดความผดพลาดจะ Throws java.sql.SQLException

Connection เปนการน าเสนอ session รวมกบฐานขอมลทถกระบ

ภายใน context ของ Connection สวนทเปน SQL statements จะถกประมวลผลและคนคาผลลพธออกมา

นอกจากนนยงจดเตรยม “metadata” -- ขอมลทเกยวกบ database, tables, และ fields

รวมไปถงวธการทใชรวมกบ transactions

23

Page 24: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

OBTAINING A CONNECTION

String url = "jdbc:mysql://localhost:3306/MyDB?characterEncoding=UTF-8";

String uname = "root";

String pwd = "itmju";

Connection con;

try {

Class.forName("com.mysql.jdbc.Driver");

con = DriverManager.getConnection(url,uname,pwd);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} 24

Page 25: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

STATEMENT

เมอท าการสราง Connection เรยบรอยแลว ผใชสามารถใชค าสง SQL ในการสงงาน โดยผานStatement objects ซงใน JDBC จะแบงออกเปนสามชนด:• Statement

ใชส าหรบน าเสนอค าสง SQL แบบพนฐาน• PreparedStatement

น าเสนอค าสง SQL ทถกคอมไพลไวแลว ซงจะชวยเพมประสทธภาพในการท างานไดเรวขน• CallableStatement

ยอมให JDBC programs สามารถเขาถง stored procedures ภายในฐานขอมลไดอยางสมบรณ

25

Page 26: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

STATEMENT CLASS

ออปเจคของคลาส Statement จะรบคาพารามเตอรในรปของ string ทมค าสง SQL ทใชในการประมวลผล

Statement จะถกสรางขนโดยการเรยกใชเมธอด createStatement() จากคลาส Connection ซงจะคนคาในรปของ Statement object

ค าสง SQL จะถกประมวลผลโดยสราง string ของ SQL ทตองการและผานในรปของพารามเตอรไปยงเมธอดของ Statement ซงจะสงผานไปยงฐานขอมลและคนคาผลลพธตอไป

เมธอดของ Statement ทสามารถใชในการประมวลผล SQL statement ในรปของ string จะมสามแบบ คอ: • ResultSet executeQuery(String)• int executeUpdate(String)• boolean execute(String)

26

Page 27: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

STATEMENT OBJECT

Statement object ถกใชส าหรบการประมวลผลในรปของ static SQL statement และรบคาผลลพธทถกสรางขน

ResultSet executeQuery(String)

ประมวลผล SQL statement ทคนคาในรปของ ResultSet เดยว

int executeUpdate(String)

ในกรณทไมตองการคนคาจากการใชค าสง SQL Statement ไดจดเตรยมเมธอดexecuteUpdate( ) ไว โดยใชกบค าสงประเภท UPDATE และ DELETE

เมธอด executeUpdate( ) จะคนคา integer ซงแสดงถงจ านวนแถวในฐานขอมลทเกยวของ

27

Page 28: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

STATEMENT OBJECT

boolean execute(String) • ในกรณทไมทราบวา SQL statement จะคนคาอะไรออกมา อาจใชเมธอด execute( ) ได

เมธอดนจะคนคา true หากมผลลพธทเกยวของกบ statement นน ๆ

การรบคา Statement object สามารถท าไดโดยการเรยกใชเมธอด createStatement() ของConnection:

Statement stmt = con.createStatement();

28

Page 29: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

SAMPLE DATABASE

Employee ID Last Name First Name

1 Davolio Nancy

2 Fuller Andrew

3 Leverling Janet

4 Peacock Margaret

5 BuchananSteven

Connection con = DriverManager.getConnection(url,"alex", "8675309");

Statement st = con.createStatement();

ResultSet results = st.executeQuery("SELECT EmployeeID, LastName, FirstName FROM Employees");

29

Page 30: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

การใชงาน STATEMENT OBJECT

เมอสราง Statement เสรจแลว ขนตอนตอไปจะเปนการประมวลผลค าสง SQL ซง statement สามารถจะอยในรปของ query ทคนคาผลลพธหรอการท างานท manipulates ในฐานขอมล ในกรณทใชการ query จะเรยกใชเมธอด executeQuery( ) ของ Statement object เชนResultSet rs = stmt.executeQuery("SELECT * FROM CUSTOMERS");

ResultSet object จะเกบคาผลลพธทไดจากการ query

30

Page 31: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

RESULTSET OBJECT

Statement stmt = dbCon.createStatement();

String sql = "select * from " + table;

ResultSet rs = stmt.executeQuery(sql);

ขอมลภายในตารางสามารถน าเสนอผาน result set ซงจะถกสรางขนจากการประมวลผลของqueries

มเพยง 1 ResultSet ตอ Statement ทสามารถเปดขนไดในครงหนง ๆ

โดย default แลว ResultSet object จะไมสามารถท าการ update ได และ cursor จะเลอนต าแหนงไปไดเฉพาะการเดนหนาเทานน ดงนนจงสามารถเลอนต าแหนงจากแถวแรกไปยงแถวสดทายไดเพยงครงเดยว

31

Page 32: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

RESULTSET

การท างานของ ResultSet object จะท าไดโดยการ maintains ต าแหนงของ cursor ทชไปยงแถวปจจบนของขอมล โดยคาเรมตนจะชไปยงต าแหนงกอนหนาของขอมลแถวแรก และเลอนต าแหนงไปไดโดยการเรยกใชเมธอด next() ดงนนจงสามารถใชรวมกบ while loop เพอน าเสนอผลลพธแบบตอเนองได

23

5

17

98

John

Mark

Paul

Peter

cursor

32

Page 33: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

ACCESSING COLUMN DATA

การคนหา Rows โดยอาศยเมธอด executeQuery() จะมการคนคาออปเจคทม type เปน ResultSet

Rows ทถกรบคาจาก ResultSet สามารถใชการท างานแบบ iteration ผานลงไปในแตละ rows และอานขอมลในแตละคอลมนออกมา

การ Iteration แตละ rows จะท างานเชนเดยวกบการ iterating ผาน elements ในรปของEnumeration object ในการรบคา row แรกภายใน ResultSet จะสามารถท าไดโดยการเรยกใชเมธอดnext()

• boolean next()

• เมธอดคนคา false ในกรณทไมมขอมลอกตอไป เชน :

while(rs.next()){// process the row;

}

33

Page 34: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

PROCESS RESULTSET

เมอเรมตนท างานกบ ResultSet ต าแหนงของ cursor จะอยในต าแหนงกอนแถวแรกของผลลพธ นนกหมายความวาการเรยกใชเมธอด next( ) ครงแรกจะเปนการเขาถงแถวแรก

แตละคอลมนอาจประกอบไปดวยชนดของขอมลทแตกตางกน การใช ResultSet เมธอดจงจ าเปนตองมการก าหนด datatype ใหถกตอง

เมธอดประเภททชอขนตนดวย getXXX() จะใชส าหรบการรบคาในรปของ เรคคอรดปจจบน เชน• การรบคา column ดวยคาแบบ integer จะตองใชเมธอด

getInt(int column)

• ขณะทการรบคา column ทเปน string จะใชเมธอด

getString(int column)

34

Page 35: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

USING THE RESULTSET OBJECT

เมธอด getXXX( ) จะคนคาชนดขอมลทก าหนด รปแบบของเมธอดประเภทนจะแบงออกไดเปนสองลกษณะ ตามการรบคาพารามเตอร คอ• แบบรบคา case-insensitive ในรปชอของ column ทตองการอานคา (e.g., "PHONE",

"CUSTOMER_ID") • แบบรบคา column indexes ซงจะเรมตงแต 1 ถง n columns.

ResultSet rs = stmt.getResultSet();

while (rs.next()) {

writer.print(rs.getLong("ID"));

writer.print(rs.getString("Name"));

writer.print(rs.getDouble(5));

}

35

Page 36: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

EXAMPLE OF ACCESSING COLUMNS WITHIN ROWS:

Statement stmt = dbCon.createStatement();

String sql = "select * from " + table;

ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {

String name = rs.getString(1);

int age = rs.getInt(2);

System.out.println(name + " " + age);

}

rs.close();

36

Page 37: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

RESULTSET METHODS

String getString(int columnIndex)

boolean getBoolean(int columnIndex)

byte getByte(int columnIndex)

short getShort(int columnIndex)

int getInt(int columnIndex)

long getLong(int columnIndex)

float getFloat(int columnIndex)

double getDouble(int columnIndex)

Date getDate(int columnIndex)

Time getTime(int columnIndex)

Timestamp getTimestamp(int columnIndex)

37

Page 38: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

RESULTSET METHODS

Type getType(int columnIndex)• คนคา the given field as the given type เรมตนท 1 (not 0)

Type getType(String columnName)• same, but uses name of field

int findColumn(String columnName)• looks up column index given column name

void close() • ใชส าหรบการ disposes ของ ResultSet• ยอมใหผใชสามารถ re-use Statement ทถกสรางขนไวแลว• ถกเรยกใชไดโดยอตโนมตจากเมธอดสวนใหญของ Statement

38

Page 39: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

EXECUTEXXX() LIMITATION

ขอส าคญทตองระลกไวเสมอคอ Statement object จะน าเสนอขอมลจากการประมวลผลค าสง SQL ไดเพยงค าสงเดยว

การเรยกใชเมธอด executeQuery( ) executeUpdate( ) หรอ execute( ) จะมผลท าใหสนสดการท างานของ ResultSet ทเกยวของกบค าสงปจจบน ดงนนกอนการเรยกใชเมธอดเหลานจะตองแนใจไดวาการท างานกบผลลพธเสรจสนสมบรณแลว กอนการประมวลผลของ query ดวย Statement object เดม

ในกรณทจ าเปนตองมการประมวลผล query มากกวาหนงครง จ าเปนจะตองใช multiple Statement objects

39

Page 40: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

RESULTS

ขอมลในระบบฐานขอมลNAME CUSTOMER_ID PHONE----------------------------------------------------------------------Jane Markham 1 617 555-1212Louis Smith 2 617 555-1213Woodrow Lang 3 508 555-7171Dr. John Smith 4 615 428-1239

ผลลพธทตองการ :Customer #1, Jane Markham, is at 617 555-1212

Customer #2, Louis Smith, is at 617 555-1213Customer #3, Woodrow Lang, is at 508 555-7171Customer #4, Dr. John Smith, is at 615 428-1239

40

Page 41: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

PROCESS RESULTSET

เมอมการประมวลผล SQL ผลลพธทไดจะเปนไปตามเงอนไขทก าหนดอยใน query เสมอStatement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery( "SELECT NAME, CUSTOMER_ID, PHONE

FROM CUSTOMERS");

while(rs.next()) {

System.out.print("Customer #" + rs.getString("CUSTOMER_ID"));

System.out.print(", " + rs.getString("NAME"));

System.out.println(", is at " + rs.getString("PHONE"));

}

rs.close();

stmt.close();

41

Page 42: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

SELECT EXAMPLE

Connection con = DriverManager.getConnection(url, "alex", "8675309");

Statement st = con.createStatement();

ResultSet results = st.executeQuery("SELECT EmployeeID, LastName,

FirstName FROM Employees");

while (results.next()) {

int id = results.getInt(1);

String last = results.getString(2);

String first = results.getString(3);

System.out.println("" + id + ": " + first + " " + last);

}

st.close();

con.close(); 42

Page 43: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

MAPPING JAVA TYPES TO SQL TYPES

SQL type Java Type

CHAR, VARCHAR, LONGVARCHAR String

NUMERIC, DECIMAL java.math.BigDecimal

BIT boolean

TINYINT byte

SMALLINT short

INTEGER int

BIGINT long

REAL float

FLOAT, DOUBLE double

BINARY, VARBINARY, LONGVARBINARY byte[]

DATE java.sql.Date

TIME java.sql.Time

TIMESTAMP java.sql.Timestamp43

Page 44: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

JDBC EXAMPLE

String DB_URL = "jdbc:mysql://localhost/students"; //students คอชอฐานขอมล

String DB_USER = "";

String DB_PASSWORD= "";

Connection conn;

Statement stmt;

String query = "select * from Student";

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

stmt = conn.createStatement();

ResultSet result = stmt.executeQuery(query);

while(result.next()){

out.println(result.getString(1));

out.println(result.getString(2));

out.println(result.getString(3));

}

44

Page 45: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

JDBC EXAMPLE

result.close();

stmt.close();

conn.close();

} catch(Exception e){

e.printStackTrace();

}

45

Page 46: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

PREPAREDSTATEMENT CLASS

ออปเจคของคลาส PreparedStatement จะรบคาพารามเตอรในรปของ string ทมค าสง SQL ทใชในการประมวลผล

Statement จะถกสรางขนโดยการเรยกใชเมธอด prepareStatement(sql) จากคลาสConnection ซงจะคนคาในรปของ PreparedStatement object

ค าสง SQL จะถกประมวลผลโดยสราง string ของ SQL ทตองการและผานในรปของพารามเตอรไปยงเมธอดของ PreparedStatement ซงจะสงผานไปยงฐานขอมลและคนคาผลลพธตอไป

เมธอดของ PreparedStatement ทสามารถใชในการประมวลผล SQL statement ในรปของ string จะมสองแบบ คอ: • ResultSet executeQuery()• ResultSet executeQuery(String)

46

Page 47: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

SAMPLE DATABASE

Employee ID Last Name First Name

1 Davolio Nancy

2 Fuller Andrew

3 Leverling Janet

4 Peacock Margaret

5 Buchanan Steven

Connection con = DriverManager.getConnection(url,"alex", "8675309");

String sql = "SELECT EmployeeID, LastName, FirstName FROM Employees";

PreparedStatement stmt = con.prepareStatement(sql);

ResultSet rs = stmt.executeQuery();

เหมาะส าหรบค าสง Select ทไมมเงอนไข Where หรอ Having

47

Page 48: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

CALLABLESTATEMENT CLASS

ออปเจคของคลาส CallableStatement จะรบคาพารามเตอรในรปของ string ทมค าสงในการเรยกใช stored procedure หรอ function ในฐานขอมล

Statement จะถกสรางขนโดยการเรยกใชเมธอด

prepareCall({call stored procedure{parameter,?,?,?}}) จากคลาส Connection ซงจะคนคาในรปของ CallableStatement object

เมธอดของ CallableStatement ทสามารถใชในการประมวลผลในรปของ string จะมหลายแบบ แตจะยกตวอยางเพยง สองแบบคอ• boolean execute()

• boolean execute(String sql)

48

Page 49: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

CALLABLESTATEMENT CLASS

กรณทมการสง parameter เขาไปใน stored procedure สามารถเรยกใชเมธอด setXXX(index, value) เขาไปไดเชน• stmt.setInt(1, 200);

• stmt.setString(2,"Sayan Unankard");

โดย index เรมทต าแหนงท 1 เสมอ

49

Page 50: Introduction to database system - Maejo University · 2019-09-01 · THE JDBC-ODBC BRIDGE • ODBC (Open Database Connectivity) เป็นเทคโนโลยีของMicrosoft

STORED PROCEDURE DATABASE : MYSQL

DELIMITER $$

CREATE PROCEDURE insertEmployee (IN empid INT, IN empname VARCHAR(30),

IN salary FLOAT, IN deptid INT )

BEGIN

INSERT INTO Employee VALUES(empid,empname,salary,deptid);

END$$

DELIMITER ;

Connection con = DriverManager.getConnection(url,"alex", "8675309");

CallableStatement cstmt = con.prepareCall("{call insertEmployee(?,?,?,?)}");

cstmt.setInt(1, 300);

cstmt.setString(2, "sayan unankard");

cstmt.setDouble(3, 25000.00);

cstmt.setInt(4, 1);

cstmt.execute();

con.close;50