08 java programming jdbc postgresql
TRANSCRIPT
![Page 1: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/1.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 1
JDBC & POSTGRESQLNguyễn Hoàng Anh - [email protected]
![Page 2: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/2.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 2
Nội dung trình bày● JDBC API● Kiến trúc JDBC ● Thiết lập kết nối đến cơ sở dữ liệu● Statement ● PreparedStatement● CallableStatement ● PostgreSQL – Function
![Page 3: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/3.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 3
JDBC API● JDBC API là tập các Java API được sử dụng
để tương tác với cơ sở dữ liệu quan hệ.● Công dụng
● Kết nối cơ sở dữ liệu quan hệ.● Gửi các câu truy vấn đến cơ sở dữ liệu.● Nhận và xử lý các kết quả trả về từ cơ sở dữ liệu
![Page 4: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/4.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 4
Kiến trúc JDBC
![Page 5: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/5.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 5
Kiến trúc JDBC● Khi làm việc với JDBD, java developer sẽ làm việc như nhau
đối với các hệ cơ sở dữ liệu khác nhau.
● Java developer không phụ thuộc vào một hệ cơ sở dữ liệu cụ thể nào.
● Java developer không cần phải quan tâm đến sự khác nhau khi giao tiếp với các hệ quản trị cơ sở dữ liệu quan hệ khác nhau.
![Page 6: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/6.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 6
Thiết lập kết nối đến cơ sở dữ liệu● Bước 1: Thêm thư viện JDBC Driver vào ứng dụng
● Bước 2: Đăng ký Driver - PostgreSQL
Cách 1: Class.forName :
Class.forName(“org.postgresql.Driver”);
Cách 2: DriverManager.registerDriver
Driver driver = new org.postgresql.Driver()
DriverManager.registerDriver(driver);
![Page 7: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/7.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 7
Thiết lập kết nối đến cơ sở dữ liệu● PostgreSQL
→ Database: BookOnline
→ user: postgres , password: 123456
→ port: 5432 (default)
→ server: localhost● Java
→ url: jdbc:postgresql://localhost:5432/BookOnline
→ user: root , password: 123456
→ characterEncoding: utf-8
![Page 8: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/8.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 8
Thiết lập kết nối đến cơ sở dữ liệu
123456789101112
Driver driver = new org.postgresql.Driver();DriverManager.registerDriver(driver);String conString= "jdbc:postgresql://localhost:5432/BookOnline";Properties info = new Properties();info.setProperty("characterEncoding", "utf8");info.setProperty("user", "postgres");info.setProperty("password", "123456");Connection connection = DriverManager.getConnection(conString, info);. . .connection.close();
12
import java.sql.*; import java.util.*;
![Page 9: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/9.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 9
Thiết lập kết nối đến cơ sở dữ liệu● Sau khi thiết lập kết nối đến cơ sở dữ liệu, có
thể ● Gửi các câu truy vấn đến cơ sở dữ liệu.● Nhận và xử lý các kết quả trả về từ cơ sở dữ liệu.
![Page 10: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/10.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 10
Các dạng Statement● Statement: Thực hiện các câu truy vấn đơn
giản.● PreparedStatement: Thực hiện các câu truy
vấn có các tham số đầu vào● CallableStatement: Thực hiện các câu truy vấn
có các tham só đầu vào và đầu ra. Cụ thể là các function
![Page 11: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/11.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 11
Statement
![Page 12: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/12.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 12
Statement● Statement: Thực hiện các câu truy vấn đơn
giản.
![Page 13: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/13.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 13
Statement● Cách tạo Statement đơn giản
Statement sm = con.createStatement();
● Các phương thức thường dùng
sm.executeQuery(sql); → select
sm.executeUpdate(sql); → insert, update, delete, drop, create, …
sm.addBatch(sql) & sm.executeBatch() → Batch
![Page 14: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/14.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 14
Statement - executeQuery● ResultSet rs = sm.executeQuery(sql);
● ResultSet → forward : rs.next()
1234567891011
Statement statement = con.createStatement();String sql = “SELECT * FROM danh_muuc”;ResultSet rs = statement.executeQuery(sql);while (rs.next()){ int maDanhMuc = rs.getInt(“ma_danh_muc”); String tenDanhMuc = rs.getString(“ten_danh_muc”); System.out.println(maDanhMuc+” “+tenDanhMuc);}rs.close();sm.close();con.close();
![Page 15: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/15.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 15
Statement - executeQuery● Forward & Backward
Statement sm= connection.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
● ResultSet rs = sm.executeQuery(sql);
● ResultSet rs
→ forward : rs.next();
→ backward: rs.previous();
![Page 16: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/16.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 16
Statement – executeUpdate12345678910
Statement sm = con.createStatement();String sql =“DELETE FROM sach WHERE ma_danh_muc= 1”;int n = sm.executeUpdate (sql);if (n >= 0){ System.out.println(n + “ Sách đã được xóa”);}else{ System.out.println(“Lỗi”);}sm.close();con.close();
![Page 17: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/17.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 17
Statement – executeUpdate1234567891011121314
Statement sm = con.createStatement();String sql = String.format(“UPDATE danh_muc SET ten_danh_muc = '%s'” WHERE ma_danh_muc= %d”, maDanhMuc, tenDanhMuc);
int n = sm.executeUpdate (sql);if (n >= 0){ System.out.println(“Cập nhật thành công”);}else{ System.out.println(“Lỗi”);}sm.close();con.close();
![Page 18: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/18.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 18
Statement – executeUpdate1234567891011
Statement sm = con.createStatement();String sql = String.format(“INSERT INTO danh_muc (ten_danh_muc) VALUES('%s')”,tenDanhMuc);int n = sm.executeUpdate (sql);if (n >= 0){ System.out.println(“Thêm thành công”);}else{ System.out.println(“Lỗi”);}sm.close();con.close();
![Page 19: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/19.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 19
Statement – executeUpdate123456789101112131415
String tenDanhMuc = "C++";String sql= String.format("INSERT INTO danh_muc(ten_danh_muc) VALUES ('%s')", tenDanhMuc);int n=sm.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);if(n>0){ System.out.println("Thêm thành công"); ResultSet rs=statement.getGeneratedKeys(); if(rs.next()){ int mdm = rs.getInt(1); System.out.println("Mã danh mục vừa thêm:" +mdm); }}sm.close();con.close();
![Page 20: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/20.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 20
Statement – executeUpdate123456789101112131415161718
String [] tenDanhMucs = {"C++", "C#", "Java"};String sql="INSERT INTO danh_muc(ten_danh_muc) VALUES ";for(int i=0; i<tenDanhMucs.length; i++){ sql=sql + String.format("('%s') ", tenDanhMucs[i]); if(i<tenDanhMucs.length-1){sql=sql + ", ";}}int n=stm.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);if(n>0){ System.out.println("Thêm thành công"); ResultSet rs=statement.getGeneratedKeys(); while(rs.next()){ int mdm = rs.getInt(1); System.out.println("Mã danh mục vừa thêm: " + mdm); }}sm.close();con.close();
![Page 21: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/21.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 21
Statement – executeBatch1234567891011
String sql1="INSERT INTO danh_muc(ten_danh_muc) VALUES('Java')";String sql2="INSERT INTO danh_muc(ten_danh_muc) VALUES('PHP')";String sql3="UPDATE DANHMUC SET ten_danh_muc='C' WHERE ma_danh_muc=43";Statement statement=connection.createStatement();statement.addBatch(sql1);statement.addBatch(sql2);statement.addBatch(sql3);int [] n = statement.executeBatch();
![Page 22: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/22.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 22
Statement - SQLException1234567
try{ . . .}catch(SQLException ex){ . . .}finally{ con.close();}
![Page 23: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/23.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 23
Statement● Statement: Thực hiện các câu truy vấn đơn
giản?
![Page 24: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/24.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 24
PreparedStatement
![Page 25: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/25.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 25
PreparedStatement● PreparedStatement: Thực hiện các câu truy
vấn có các tham số đầu vào
![Page 26: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/26.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 26
PreparedStatement● Cách tạo PreparedStatement đơn giản
PreparedStatement ps =
con.prepareStatement(sql);
● Các phương thức thường dùng
ps.setXXX(index, value); → XXX : int, string, ...
ps.executeQuery(); → select
ps.executeUpdate(); → insert, update, delete, drop, create, …
ps.addBatch() & ps.executeBatch() → Batch
![Page 27: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/27.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 27
PreparedStatement - executeQuery● ResultSet rs = sm.executeQuery();
● ResultSet → forward : rs.next()
12345678910111213
String sql = “SELECT * FROM sach WHERE gia_ban < ? AND TenSach LIKE ?”;PreparedStatement ps = con.prepareStatement(sql);ps.setDouble(1, 2000);ps.setString(2, “%java%”);ResultSet rs = ps.executeQuery();while (rs.next()){ int maSach = rs.getInt(“MaSach”); . . .}rs.close();ps.close();con.close();
![Page 28: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/28.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 28
PreparedStatement - executeQuery● Forward & Backward
PreparedStatement ps = con.prepareStatement(
sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
● ps.setXXX(index, value);
● ResultSet rs = ps.executeQuery();
● ResultSet rs
→ forward : rs.next();
→ backward: rs.previous();
![Page 29: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/29.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 29
PreparedStatement – executeUpdate123456789101112
String sql = “DELETE FROM sach WHERE ma_danh_muc= ?”;PreparedStatement ps = con.prepareStatement(sql);ps.setInt(1, 1);int n = ps.executeUpdate ();if (n >= 0){ System.out.println(n + “ Sách đã được xóa”);}else{ System.out.println(“Lỗi”);}ps.close();con.close();
![Page 30: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/30.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 30
PreparedStatement – executeUpdate1234567891011121314
String sql = String.format(“UPDATE danh_muc SET ten_danh_muc = ?” WHERE ma_danh_muc= ?”);PreparedStatement ps = con.prepareStatement(sql);ps.setString(1, “Java”);ps.setInt(2, 1);int n = ps.executeUpdate ();if (n >= 0){ System.out.println(“Cập nhật thành công”);}else{ System.out.println(“Lỗi”);}ps.close();con.close();
![Page 31: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/31.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 31
PreparedStatement – executeUpdate123456789101112
String sql = “INSERT INTO danh_muc (ten_danh_muc) VALUES(?)”;PreparedStatement ps = con.prepareStatement(sql);ps.setString(1, “PHP”);int n = ps.executeUpdate ();if (n >= 0){ System.out.println(“Thêm thành công”);}else{ System.out.println(“Lỗi”);}ps.close();con.close();
![Page 32: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/32.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 32
PreparedStatement – executeUpdate12345678910111213141516
String tenDanhMuc = "C++";String sql= String.format("INSERT INTO danh_muc(ten_danh_muc) VALUES ('%s')", tenDanhMuc);PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);int n=ps.executeUpdate();if(n>0){ System.out.println("Thêm thành công"); ResultSet rs=ps.getGeneratedKeys(); if(rs.next()){ int mdm = rs.getInt(1); System.out.println("Mã danh mục vừa thêm:" +mdm); }}sm.close();con.close();
![Page 33: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/33.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 33
PreparedStatement – executeBatch12345678910
String sql="INSERT INTO danh_muc(ten_danh_muc) VALUES(?)";PreparedStatement ps = con.prepareStatement(sql);ps.setString(1, “Java”);ps.addBatch();ps.setString(1, “PHP”);ps.addBatch();ps.setString(1, “C++”);ps.addBatch();int [] n = ps.executeBatch();
![Page 34: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/34.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 34
Statement - SQLException1234567
try{ . . .}catch(SQLException ex){ . . .}finally{ con.close();}
![Page 35: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/35.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 35
PreparedStatement● PreparedStatement: Thực hiện các câu truy
vấn có các tham số đầu vào
![Page 36: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/36.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 36
PostgreSQL – Simple Function
![Page 37: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/37.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 37
PostgreSQL - f_them_danh_muc123456789
create or replace function f_them_danh_muc(i_ten_danh_muc character) returns integer as $$begin
insert into danh_muc(ten_danh_muc) values(i_ten_danh_muc);
return lastval();end;$$language plpgsql;
![Page 38: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/38.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 38
JDBC - f_them_danh_muc123456
String sql="{? = call f_them_danh_muc(?)}";CallableStatement cs=con.prepareCall(sql);cs.registerOutParameter(1, Types.INTEGER);cs.setString(2, "Java");cs.execute();int ma_danh_muc = cs.getInt(1);
![Page 39: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/39.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 39
PostgreSQL - f_cap_nhat_danh_muc123456789101112
create or replace function f_cap_nhat_danh_muc(i_ma_danh_muc integer, i_ten_danh_muc character) returns integer as $$begin
update danh_muc set ten_danh_muc = i_ten_danh_muc where ma_danh_muc = i_ma_danh_muc;
get diagnostics count = ROW_COUNT;return count;
end;$$language plpgsql;
![Page 40: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/40.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 40
JDBC - f_cap_nhat_danh_muc1234567
String sql="{? = call f_cap_nhat_danh_muc(?,?)}";CallableStatement cs=con.prepareCall(sql);cs.registerOutParameter(1, Types.INTEGER);cs.setInt(2, 10);cs.setString(3, "Java");cs.execute();int count = cs.getInt(1);
![Page 41: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/41.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 41
PostgreSQL - f_xoa_danh_muc12345678910
create or replace function f_xoa_danh_muc(i_ma_danh_muc integer) returns integer as $$begin
delete from danh_muc where ma_danh_muc = i_ma_danh_muc;
get diagnostics count = ROW_COUNT;return count;
end;$$language plpgsql;
![Page 42: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/42.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 42
JDBC - f_xoa_danh_muc123456
String sql="{? = call f_xoa_danh_muc(?)}";CallableStatement cs=con.prepareCall(sql);cs.registerOutParameter(1, Types.INTEGER);cs.setInt(2, 10);cs.execute();int count = cs.getInt(1);
![Page 43: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/43.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 43
PostgreSQL - f_lay_danh_sach_danh_muc
12345678910
create or replace function f_lay_danh_sach_danh_muc() returns setof danh_muc as $$begin
return query select ma_danh_muc, ten_danh_muc from danh_muc order by ten_danh_muc asc;
end;$$language plpgsql;
![Page 44: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/44.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 44
JDBC - f_lay_danh_sach_danh_muc
123456789101112
String sql = “select ma_danh_muc, ten_danh_muc from f_lay_danh_sach_danh_muc()”;PreparedStatement ps = con.prepareStament(sql);ResultSet rs = cs.executeQuery();while (rs.next()){ int ma_danh_muc rs.getInt(1); String ten_danh_muc = rs.getString(2); . . .}rs.close();cs.close();con.close();
![Page 45: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/45.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 45
JDBC - PostgreSQL● Khi function trả về kiểu SETOF
● CallableStatement không hỗ trợ ● Sử dụng Statement hoặc PreparedStament
![Page 46: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/46.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 46
PostgreSQL - f_tim_kiem_sach1234567891011
create function f_tim_kiem_sach(i_ten_sach character(64), i_gia_ban double precision) returns setof sach as $$begin
return query SELECT * FROM sach WHERE gia_ban < i_gia_ban AND ten_sach LIKE i_ten_sach;end;$$language plpgsql;
![Page 47: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/47.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 47
JDBC – f_tim_kiem_sach
123456789101112131415
String sql = “select ma_sach, ten_sach, gia_ban from f_tim_kiem_sach(?, ?)”;PreparedStatement ps = con.prepareStament(sql);ps.setString(1, “%java%”);ps.setString(2, 200000);ResultSet rs = cs.executeQuery();while (rs.next()){ int maSach = rs.getInt(1); String tenSach = rs.getString(2); double giaBan = rs.getDouble(3); . . .}rs.close();cs.close();con.close();
![Page 48: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/48.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 48
JDBC – f_lay_danh_sach_sach
1234567891011
create or replace function f_lay_danh_sach_sach() returns table(ma_sach integer, ten_danh_muc character(64)) as $$begin
return query select s.ma_sach, dm.ten_danh_muc from danh_muc dm inner join sach s
on dm.ma_danh_muc = s.ma_danh_muc order by ten_sach asc;
end;$$language plpgsql;
![Page 49: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/49.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 49
JDBC – f_lay_danh_sach_sach
1234567
String sql="select * from f_lay_danh_sach_sach()";PreparedStatement ps=con.prepareStatement(sql);ResultSet rs=ps.executeQuery();while(rs.next()){
System.out.println(rs.getInt(1));System.out.println(rs.getString(2));
}
![Page 50: 08 Java Programming Jdbc Postgresql](https://reader036.vdocuments.site/reader036/viewer/2022062319/55409b284a795999748b4597/html5/thumbnails/50.jpg)
JAVA PROGRAMMINGJAVA PROGRAMMING – 2012 - V2.1
Nguyễn Hoàng Anh - [email protected] - ĐHKHTN 50
HỎI VÀ ĐÁP