Giới thiệu java và các cơ sở dữ liệu

27 280 0
Giới thiệu java và các cơ sở dữ liệu

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ án tốt nghiệp Giới thiệu Java sở liệu JAVA sở liệu Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu Nội dung JAVA sở liệu Nội dung Giới thiệu Java truy cập vào sở liệu .3 Các Java Enterprise API JDBC .5 Sự áp dụng JDBC Giới thiệu cụ thể class JDBC java.sql.DriverManager .13 java.sql.Driver .13 java.sql.Connection 14 java.sql.Statement 16 java.sql.PreparedStatement .17 java.sql.CallableSatement 17 java.sql.ResultSet .17 MetaData 19 Java RMI xếp đối tợng (Object Serialization) 20 Java IDL 22 Nhà cung cấp/ Các giải pháp thành viên thứ ba 23 Oracle 23 Cấu trúc Web Server Oracle 24 Java cartridge 24 Các class Java riêng Oracle 24 Visigenic 25 Visigenic OpenChannel Client cho Java 26 Trình giao tiếp JDBC ODBC Visigenic 26 Tơng lai 27 Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu Giới thiệu Java truy cập vào sở liệu Sau gia đời, Java đợc hởng ứng cách nhiệt tình sóng ứng dụng viết Java Applet phát triển mạnh mẽ, nhà sáng tạo Java JavaSoft bắt đầu nghĩ đến phát triển Java thành platform theo kiểu khách/chủ (client/server) Các nhà phát triển Internet nhà t vấn vấn đề đa khái niệm Intranet nhận Java có nhiều điểm thuận lợi thị trờng client/server có client không quản lý (zero administration client), phần mềm tập trung cập nhật quản trị, phần mềm phiên mẫu tập trung vào Web Một tập Java API (một API chơng trình ứng dụng giao tiếp - Application Programming Interfaces) quan trọng cần thiết trình giao tiếp với sở liệu liệu đợc tạo ra, đợc truy cập đến, đợc chia sẻ, cập nhật tham chiếu thông qua Internet Intranet dây nối nh sở liệu mạng Chú ý: Các Java API class method cho phép chơng trình Java tơng tác với hệ thống giới thực (real-world) Ví dụ, API java.net cho phép chơng trình Java giao tiếp dùng giao thức TCP/IP API java.awt cho chơng trình Java khả hiển thị menu, nút hộp danh sách Có số core API ( chẳng hạn nh class java.lang, java.net, java.net, java.awt, java.applet), phần hệ thống Java Sau có phần mở rộng chuẩn Java nh Java Server API Java Management API Theo thời gian, nhiều số chuẩn trở nên phần thiếu đợc ngôn ngữ Java trở thành core API Cùng lúc, nhà cung cấp sở liệu, nh Oracle Informix, muốn chơng trình Java applet truy cập vào đợc sở liệu họ thông qua Internet Intranet, họ bắt đầu xây dựng các class method Java để truy cập vào liệu sở liệu họ Điều tạo nhiều cách truy cập vào sở liệu từ chơng trình ứng dụng viết Java Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu Trong hội thảo Java (vào tháng năm 1996), hãng Sun đa loạt Java API hớng trực tiếp đến ứng dụng theo kiểu client/server, Internet/Intranet Có nhiều API có Java Enterprise API, Java Commerce API, Java Security API Java Servlet/Jeeves API, tất API nâng ngôn ngữ Java lên mức platform có mục đích phát triển ứng dụng kiểu client/server chạy Internet Phần đề cập chủ yếu đến Java enterprise API: JDBC API, RMI (Java Remote Invocation), Object Serialization hệ thống IDL Trong API API IDBC API (JDBC tức Java Database Connectivity - tức sở liệu kết nối qua lại), API sớm đợc sử dụng nhiều chơng trình Java Hiện tại, việc truy cập vào sở liệu đợc thực cách sau: thông qua JDBC Java enterprise API; phơng pháp truy cập riêng nhà cung cấp sở liệu; class kiểu "thành viên thứ ba" (the third-party class), kiểu đợc áp dụng nhiều sở liệu Các phần giới thiệu cách truy cập vào sở liệu nhà cung cấp phơng pháp thông qua thành viên thứ ba và sơ qua phơng pháp JDBC Các Java Enterprise API Các Java Enterprise API nhanh chóng trở thành phần có giá trị ngôn ngữ lập trình Java mô hình Java máy ảo (Java Virtual Machine) Tất ngời đợc cấp giấy phép thực hiên API nh phần hệ thống họ Do đó, Java Enterprise API API vặn không phụ thuộc vào platform (cross-platform; platform gồm phần cứng hệ điều hành máy tính) Nh đề cập đây, Java Enterprise API bao gồm JDBC, RMI, Object Serialization IDL JDBC tập class truy cập vào sở liệu; RMI API cho phép chơng trình Java có khả gọi method đối tợng (object) với khoảng tên khác (namespace); method đối tợng Object Serialization API cho phép chơng trình cất giữ (store) xử lý trực tiếp đối tợng này, thay cất giữ xử lý dới dạng liệu; hệ thống ngôn ngữ định nghĩa giao tiếp IDL (Interface Definition Language) cho phép chơng trình Java giao tiếp với nhóm quản lý đối tợng OMG (Object Management Group) Tập API cho phép phát triển ứng dụng mức enterprise theo kiểu client/server dùng đối tợng, applet servlet Java Khái niệm ứng dụng mức enterprise hệ thống tiện ích quảng cáo, việc đặt trớc vé máy bay hàng không, hệ thống quảng cáo Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu catalog, hệ thống thị trờng, quảng cáo sản phẩm hệ thống sản xuất, hệ thống ngân hàng (từ máy ATM phép toán với ngân hàng trực tiếp qua mạng lớn phạm vi nớc hay qua nhiều nớc), hệ thống môi giới, vân vân Tất hệ thống dùng đến cấu trúc logic ba lớp (threetier) (cơ sở liệu kiểu đầu cuôi (back-end), lớp quy định trung gian, lớp front end lớp giao diện đồ hoạ với ngời sử dụng (GUI Graphical User Interface) Mở rộng cấu trúc này, nhiều tổ chức sử dụng cấu trúc gọi cấu trúc N-Tier (tức N lớp) N-Tier logic gì? có lẽ lệch yếu tố lịch sử chút Các ứng dụng client/server đợc bắt đầu với server sở liệu client với lớp trình diễn (các menu, hình liệu, vân vân ) Các hệ thống truyền thống có chơng trình client chứa tất ứng dụng logic Cấu trúc sau đợc sửa đổi thành cấu trúc ba lớp (đã đề cập đây), phần logic business đợc tách rời từ client đợc tạo thành lớp riêng biệt Lớp phía client phía server Cùng với phát triển cực nhanh Internet platform nh Java, hệ thống trải qua tiến hoá Với chơng trình Java applet servlet, nhà phát triển tạo chơng trình Java mà chơng trình bao gồm nhiều chức (encapsulate function) liệu Các applet đợc gửi qua mạng (Internet/Intranet) vào thời điểm thích hợp đến đợc client thực chức Để có đợc nhìn toàn cảnh Java Enterprise API, bạn xem JDBC nh component làm cho sở liệu truy cập đợc, RMI IDL lại đợc coi phơng tiện để giao tiếp platform hệ thống JDBC JDBC (Java Database Connectivity- Tức sở liệu liên kết) class API liên quan đến sở liệu cho Java applet ứng dụng JDBC đợc SunSoft phát triển phần Java 1.1 JDBC, giống nh ngôn ngữ lập trình Java, không phụ thuộc vào platform sở liệu Để chạy đợc JDBC platform, Java máy ảo phải có trình quản lý trình điều khiển địa phơng (native driver manager); sở liệu cụ thể, trình điều khiển cho sở liệu cần thiết Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu Chú ý: Việc thiết kế JDBC đợc hoàn thiện mức gọi giao tiếp (Call Lavel Interface hay CLI) XOPEN SQL sở liệu kết nối mở Microsoft (Microsoft's Open Database Connectivity hay gọi ODBC) ODBC dựa truy cập nhóm qua SQL (SQL Access Group hay SAG) CLI Do đó, JDBC ODBC có nguồn gốc (common root) Điểm ngời biết thực đợc ODBC JDBC dễ hiểu áp dụng dễ Các nhà thiết kế JDBC dùng cách thiết kế chắt lọc các khái niệm từ ODBC Hai nguyên nhận dẫn đến cải tiến JDBC từ ODBC là: ODBC đợc dùng rộng rãi, điều giúp cho nhà thiết kế giảm đợc trình nghiên cứu họ Vì có thực có hiệu tất platform hầu hết sở liệu Điều có nghĩa không cần phải phát triển trình điều khiển trình giao tiếp cho Java; hãng Sun đối tác với nhà cung cấp có sản phẩm ODBC để thiết lập nhiều trình điều khiển, công cụ, áp dụng chúng Chú ý: Một khác quan trọng JDBC ODBC ODBC dùng nhiều phơng tiện ngôn ngữ lập trình C, chẳng hạn nh trỏ kiểu trả void - điều ngôn ngữ Java Trong môi trờng C, bạn định nghĩa hàm trả void để báo cho trình dịch thời gian chạy bạn muỗn trả kiểu trỏ với kiểu không xác định Sau bạn nhận đợc trỏ từ hàm đó, trỏ đó đợc chuyển thành kiểu đặc biệt Các nhà thiết kế Java mong muốn tránh đợc điều thao tác kiểu trỏ khác , họ thiết kế Java ngôn ngữ có kiểu trả nghiêm khắc Các method trả đối tợng mà đợc biết trớc Java trỏ Các nhà thiết kế JavaSoft thực JDBC khái niệm trừu tợng từ ODBC, chẳng hạn nh kết nối (Connection) tập kết (ResultSet) Chú ý: Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu Các hoạt động thông dụng sở liệu đòi hỏi phải trả hàng (rows) hàng liệu, cột bao gồm nhiều cột, trờng, đợc gọi tập kết (ResultSet) Nhìn vào đặc điểm JDBC, chúng thành công việc cung cấp khả truy cập vào sở liệu SQL Đối với JDBC, thao tác đơn giản sở liệu, chẳng hạn nh hỏi đáp, tạo, cập nhật, đợc thực method đơn giản Đối với thao tác phức tạp hơn, chẳng hạn nh tập kết phức tạp cất thủ tục tham số IN OUT, JDBC có lệnh riêng biệt Đối với chơng trình tự động công cụ nhà thiết kế, JDBC có class method MetaData, class method cung cấp thông tin nhiều đặc điểm mà sở liệu hỗ trợ, cấu trúc bảng, đặc điểm khác Chú ý: Khái niệm stored procedure hàm thủ tục bao gồm lệnh dựa sở liệu đợc cất server sở liệu Khi chơng trình phía client muốn thực hàm thay phải dùng lệnh sở liệu, chũng gọi stored procedure Điểm thuận lợi việc gọi stored procedure server, điều cho phép tính đồng nhất, vấn đề an ninh có hiệu Cũng giống nh thử tục thông thờng, stored procedure lấy tham số Các tham số IN đợc truyền cào stored procedure chũng không đợc trả lại; Các tham số OUT giá trị đợc stored procedure trả Khi làm việc với stored procedure, hệ thống phải làm việc với tham số với tập kết (ResultSet) Các phần sau đề cập cụ thể class method JDBC Sự áp dụng JDBC JDBC đợc thực giống nh gói (package) java.sql Bạn dùng gói cách khai báo import java.sql.* chơng trình Java bạn Hình vẽ sau mô tả chiến lợc thực JDBC Phần bên dới lớp API trình quản lý trình điều khiển JDBC cho nhiều loại sở liệu viết cho kết hợp phần cứng hệ điều hành, điều phần mô hình Java máy ảo Trình quản lý trình điều khiển JDBC đợc viết cho sở liệu cụ thể trình quản lý trình điều khiển chung cho nhiều sở liệu Hãng Sun có trình quản lý trình Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu điều khiển cho sở liệu chung JDBC co trình quản lý trình điều khiển cho sở liệu ODBC Cầu nối JDBC/ODBC (Bridge JDBC/ODBC) lớp mỏng bên JDBC để hớng lời gọi đến JDBC xang lời gọi cho ODBC Trình cầu nối đợc cung cấp miễn phí với JDBC, đợc Intersolv phát triển Cầu nối JDBC/ODBC lớp mỏng JDBC giống với ODBC mặt thiết kế class method ( không cần lớp với nhiều chơng trình để chuyển đổi lẽ thân JDBC ODBC có nhiều điểm giống nhau) JDBC cho phép truy cập vào tất sở liệu thông qua trình điều khiển ODBC Vì JDBC gần gũi với ODBC hãng Sun làm cho trở nên dễ dàng nhà phát triển nhà cung cấp phần mềm độc lập bắt đầu phát triển ứng dụng sở liệu Java Nếu nh họ phát triển trình giao tiếp sở liệu hoàn toàn khác nhiều thời gian công sức để giao tiếp Java với sở liệu Các nhà cung cấp nh Oracle Borland có trình điều khiển cho JDBC để truy cập trực tiếp vào sở liệu họ chẳng hạn nh sở liệu Oracle Oracle Interbase Borland Các trình điều khiển có giá trị tơng tự việc phát triển ứng dụng sở liệu dùng Java Nếu ta nhìn sâu chút đặc điểm JDBC, thấy JDBC có lựa chọn load trình điều khiển hoàn toàn động, trình giao tiếp cho kết nối, lệnh tập kết JDBC đợc thực nh liệu ống ngữ cảnh tập kết có chứa dòng liệu mô tả dòng liệu Sự mô tả dòng liệu đợc gọi tập kết MetaData Dùng method java.sql, chơng trình yêu cầu loại tập kết chẳng hạn nh tên cột kiểu liệu JDBC chuẩn bị lệnh đối tợng lệng gọi đợc cho sở liệu địa phơng xử lý dùng thủ tục đợc biên dịch stored procedure Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu Sự áp dụng ODBC Sun Sự áp dụng nhà cung cấp sở liệu Các tập tin *.class JDBC API/ java.sql.* JDBC API/ java.sql.* Applet/ ứng dụng Trình quản lý trình điều khiển JDBC nhà cung cấp sở liệu Trình quản lý trình điều khiển JDBC Cầu nối ODBC IDBC Trình điều khiển ODBC Hệ điều hành Các tập tin *.class Java máy ảo Phần cứng/hệ điều hành máy Hệ điều hành server sở liệu Cơ sở liệu Hình JDBC Implementation components Giới thiệu cụ thể class JDBC Khi bạn nhìn vào hệ thống cấp bậc class JDBC, nh mô tả hình dới đây, bạn thấy đối tợng đợc đặt cấu trúc tăng dần Trình quản lý trình điều khiển kết nối với sở liệu trả đối tợng kết nối Bạn dùng method có liên quan đến lệnh đối t- Trang Đồ án tốt nghiệp Giới thiệu Java sở liệu ợng kết nối đẻe thực lệnh SQL, trả đối tợng tập kết cần thiết Sau bạn lấy liệu từ tập kết hàng cột Quản lý trình điều khiển Quản lý trình điều khiển getConnection() Kết nối Kết nối Kết nối Lệnh Lệnh createStatement() prepareStatement() prepareCall() Lệnh Lệnh gọi đợc Lệnh riêng biệt executeUpdate() executeUpdate() executeQuery() executeQuery() MetaData MetaData Tập kết Dữ liệu Dữ liệu execute () execute () getMoreResult() getMoreResult() getResultSet() getResultSet() Trang 10 Đồ án tốt nghiệp Giới thiệu Java sở liệu java.sql.DriverManager Lớp quản lý trình điều khiển theo dõi trình điều khiển có JDBC Có thể có nhiều trình điều khiển hệ thống - hệ thống xa hay hệ thống địa phơng Trong khởi tạo, trình quản lý trình điều khiển load tất class tài sản hệ thống sql.drivers Các trình điều khiển đợc thực method địa phơng viết C/C++, chơng trình Java giao tiếp với sở liệu trình giao tiếp RPC (Remote Procedure Call) giao tiếp với server sở liệu chờ kết nối từ phía client Sự thực giao tiếp cụ thể phần việc nhà phát triển Thỉnh thoảng trình điều khiển đợc load lên nên tự register cách dùng method DriverManager.registerDriver Thời điểm tốt để thực điều mã khởi tạo class tĩnh (static class) JDBC dùng cú pháp URL (theo mẫu: : ) để xác định kết nối JDBC Trong đó, subprotocol odbc đợc giành cho tên nguồn liệu kiểu ODBC Một ví dụ JDBC URL nh sau, ODBC Testdb có tên ngời sử dụng Tester1 mật TestPW có URL jdbc : odbc : Tester1; UID=Tester1; PWD=TestPW Trình quản lý trình điều khiển hớng trình điều khiển đến JDBC URL; nói cách khác, theo dõi mối quan hệ trình điều khiển load class nhờ đó, trình load class truy cập vào đợc trình điều khiển đợc load Khi mà kết nối cần đợc mở, trình quản lý trình điều khiển lựa chọn trình quản lý trình điều khiển tơng ứng trình tìm kiếm bảng bên để mở kết nối Các trình điều khiển phải phù hợp với kiểu an ninh Java Kiểu an ninh thông dụng đợc dùng trình duyệt Web (thông thờng Netscape Navigator) applet kết nối trở lại với server chúng (điều có nghĩa chơng trình applet kết nối với ứng dụng nằm máy server mà từ applet đợc load về), ứng dụng lại kết nối tự dó đến mày khác Kiểu an ninh sớm đợc thay đổi signed-class, applet tin cậy với kiểu thiết lập an ninh động Trình quản lý trình điều khiển cung cấp kết nối đối tợng java.sql.Driver Class java.sql.Driver cung cấp thông tin trình điều khiển sở liệu chung cài đặt Nó đợc load trình khởi tạo sở liệu đợc hỏi thông tin trình điều khiển chơng trình Java Điều có nghĩa class đợc thờng trú nhớ trình chơng Trang 13 Đồ án tốt nghiệp Giới thiệu Java sở liệu trình Java đợc thực Sau class nên nhỏ mức tối thiểu Các method java.sql.Driver có method connect (để kết nối với sở liệu) method getPropertyInfo (để lấy thông tin yêu cầu kết nối đến sở liệu) Nh đề cập đây, trình điều khiển nên gọi DriverManager.registerDriver để register Trình quản lý trình điều khiển giữ thông tin class Driver, có thông tin kiểm tra truy cập an ninh nguồn load class Nh đề cập đây, trình quản lý trình điều khiển load tất trình điều khiển mà nhận biết đợc tài nguyên hệ thống sql.drivers Một phơng pháp khác khứt khoát load trình điều khiển xác định cách dùng method forName Class Object Việc dùng method đợc cho nh sau java.sql.Driver dbDriver = Class.forName("SomeCompany.SomeDatabase.Driver").newInstance() Lệnh load trình điều khiển từ $CLASSPATH\ SomeCompany.SomeDatabase.Driver.class trả kết đối tợng Driver Đối với dự án nhỏ bạn, bạn load trình điều khiển dùng dòng lệnh sau chơng trình: Java.sql.Driver database = class.forName("jdbc : odbc").newInstance(); java.sql.Connection Đối tợng kết nối trỏ đến sở liệu Nói cách khác, đối tợng cửa sổ vào sở liệu cung cấp context cho đối tợng Statement đối tợng ResultSet Đối tợng kết nối hỗ trợ giải thuộc tính nh bắt đầu (begin), giao phó (commit) bỏ qua (abort) cung cấp method để tạo đối tợng Statement Câu lệnh sau: connection.createStatement() Sẽ tạo đối tợng Statement thông thờng Trang 14 Đồ án tốt nghiệp Giới thiệu Java sở liệu Các câu lệnh sau: connection.createStatement() connection.prepareStatement() Tạo đối tợng prepareStatement, đối tợng lệnh SQL đợc dịch Loại lệnh đợc dùng để gọi nh lệnh đợc gọi nhiều lần chơng trình Đối tợng prepareStatement dịch SQL String lần sau dùng lệnh đợc dịch cho phần lại lời gọi Các câu lệnh sau: connection.createStatement() connection.prepareCall() Sẽ tạo đối tợng CallableStatement, đối tợng gọi stored procedure Một stored procedure thử tục sở liệu SQL server Nh đề cập đây, loại thủ tục (stored procedure) thực nguyên tắc thơng mại (business) phù hợp với chơng trình nh thủ tục đợc cất server Các client dùng thủ tục dùng cú pháp nh sau {call [tham-số]} Method setAutoCommit kết nối bật tắt chức tự động giáo phó (commit) thực (transaction), điều cho phép bạn thực đợc trình xử lý transaction Nếu chức tự động giao phó chế độ tắt dùng method commit() để gửi thay đổi dùng method rollback() để huỷ bỏ thay đổi kể từ lần giao phó cuối Quá trình xử lý thực (Transaction proccessing) Transaction proccessing khái niệm chung đợc dùng ngữ cảnh sở liệu để biểu thị (denote), số thứ khác (among other things), bảo đảm tình trớc sau nh một, khả lấy lại đợc, tính trung thực sở liệu có liên quan Một transaction bao gồm nhiều lệnh SQL để đọc cập nhật sở liệu Để đảm bảo đợc tất transaction đợc thực nh đơn Trang 15 Đồ án tốt nghiệp Giới thiệu Java sở liệu vị đơn (single unit) công việc, method commit() method rollback() đợc dùng Một transaction thông dụng đợc dùng hệ thống ngân hàng transaction tự động trả tiền Hai tập lệnh đợc dùng để ghi vào sổ nợ tài khoản bạn ghi vào sổ nợ phía ngân hàng cho vay tiền Nếu hai lệnh SQL thực thành công transaction đợc commit Ngợc lại nh hệ thống thực đợc hai lệnh transaction không đợc phép hoàn thành Không nh mà tất liệu bị ảnh hởng phận transaction bị đặt trở lại giá trị bạn đầu chúng, không nh ngời cho vay đợc tiền cách thần bí khách hàng bị số tiền tài khoản nợ mà không trả tiền Điều đợc gọi rollback() Nói ngắn gọn, trình điều khiển commit/rollback cần thiết tạo thay đổi liệu nhiều bảng nhiều sở liệu Để đảm bảo tính trớc sau nh liệu, nên dùng commit() tất cập nhật đợc tạo Nếu nh phần cập nhật nên dùng rollback() sau thử làm lại Đổi với dự án nhỏ tạo đối tợng kết nối nh sau: Connection testConn = DriverManager.getConnection("jdbc : odbc : JDBCTest; IUD= sa; PW=pw"); Bây gời tạo lệnh đối tợng đơn giản cách dùng: Statement simpleStmt = testConn.createStatement(); java.sql.Statement Class Statement có method executeQuery cho lệnh thông thờng SQL, method trả liệu (trong khuôn khổ đối tợng ResultSet), thực method cho lệnh SQL, với nhiều ResultSet (rất khi) Method executeUpdate đợc dùng cho lệnh nh UPDATE, DELETE, INSERT tơng tự Method không trả tập kết (ResultSet) Trang 16 Đồ án tốt nghiệp Giới thiệu Java sở liệu java.sql.PreparedStatement Class java.sql.PreparedStatement mở rộng class Statement phép khả thêm lệnh SQL biên dịch trớc vào hỗ trợ tham số kiểu IN Việc dịch trớc đợc thực có hiệu nh lệnh SQL đợc thực nhiều lần Các tham số đợc đặt cách dùng method setInt, setFloat, setLong (và method khác) java.sql.CallableSatement Đối tợng java.sql.CallableSatement mở rộng PreparedStatement để hỗ trợ thêm stored procedure Đối tợng trả tham số kiểu OUT Nhng chúng đòi hỏi phải đợc đăng ký đơn giản cách dùng method registerOutParameter Sau đối tợng CallableSatement đợc thực tham số kết đợc đọc cách dùng method getInt, getLong, getFloat method khác java.sql.ResultSet Đối tợng java.sql.ResultSet chứa liệu liên quan kết lệnh SQL Dữ liệu đợc xử lý theo thứ tự hàng nối tiếp Trong hàng liệu, liệu đợc truy cập theo thứ tự cách dùng số số thứ tự theo tên Ví dụ, lệnh sau java.sql.ResultSet.getFloat(5) lấy giá trị cột hàng liệu thời Lệnh sau cho phép lấy liệu cột hàng liệu thời câu lệnh sau java.sql.ResultSet.getFloat("AuthorRoyalty") (ở đây, AuthorRoyalty tên liệu lấy ra) nh cột thứ cột AuthorRoyalty Lệnh java.sql.ResultSet.next() trỏ đến hàng liệu Chú ý: Đối với phiên JDBC 1.0 không cung cấp kiểu gạt cso thể gạt đợc bookmark gạt kiểu ODBC Trang 17 Đồ án tốt nghiệp Giới thiệu Java sở liệu Nếu bạn thực dự án nhỏ (mini-project), để lấy đợc tất yêu cầu khách hàng "SYBEX Computer Books" đoạn chơng trình sau làm điều đó: ResultSet rsOrders = simpleStmt.executeQuery("SELECT Order_ID, Order_Date FROM Orders WHERE Customer_ID = 'SYBEX'"); while (rsOrders.next()) { String OrderID = rsOrders.getString("Order_ID"); java.sql.Date Orderdate = rsOrders.getDate("Order_date"); // In hiển thị ID khách hàng ngày tháng } đây, đối tợng Statement đợc tạo phần đợc dùng để lấy hai cột (Order ID Order Date) tất yêu cầu khách hàng với phần định danh khách hàng (Customer ID) "SYBEX" Method next() chuyển đến hàng liệu tập kết Đễn không liệu trả kết FALSE dừng vòng lặp while Method getString() method getDate() đợc dùng để lấy liệu từ hàng liệu Bây giờ, để có đợc chi tiết cụ thể yêu cầu khách hàng bạn phải truyền Order_ID đến sở liệu đối tợng Statement Quay trở lại sơ đồ hình cho bảng có liên quan Trong tờng hợp này, dùng đối tợng PreparedStatement với tham số PreparedStatement prepStmt = testConn.preparedStatement("SELECT * FROM OrderDetails WHERE Order_ID = ?); prepStmt.setString(1, OrderID); // Đặt giá trị cho tham số ResultSet rsOrdDet = prepStmt.execute(); while (rsOrdDet.next()){ // Xử lý hàng // Lấy liệu cột từ hàng thời // Dùng method getXXX(), hiển thị, vv } Trên đây, đối tợng PreparedStatement đợc tạo với tham số đợc dấu ? SQL Tham số thứ đợc thiết lập (đợc dấu ? lệnh SQL) tơng đơng với OrderID lấy từ lệnh trớc Tiếp theo vấn đề thắc mắc đợc giải Đoạn chơng trình tạo tập kết với tất chi tiết cụ thể yêu cầu khách hàng đợc biến OrderID Hàng chứa toàn cột bảng chứa chi tiết cụ thể yêu cầu khách hàng, từ lệnh SELECT * SQL đợc thực Trang 18 Đồ án tốt nghiệp Giới thiệu Java sở liệu Một ví dụ khác, bạn muốn cập nhật sản phẩm bảng sản phẩm, bạn làm nh sau: PreparedStatement prepStmt = testConn.prepareStatement("UPDATE Products SET Product_Name = ? WHERE Product_ID = ?"); PrepStmt.setString(1, "Mastering Java"); PrepStmt.setString(2,"1935-2"); int upRows = PrepStmt.executeUpdate(); Trên đây, đối tợng PreparedStatement với hai tham số đợc tạo: tham số cho tên sản phẩm, tham số thứ hai cho định danh sản phẩm Trong hai lệnh tiếp theo, tham số thứ đợc thiết lập với tên sách (tên sản phẩm) tham số thứ hai số ISBN sách Method executeUpdate() không trả tập kết mà trả số nguyên bạn biết hàng đợc cập nhật Nh bạn thấy, khái niệm method đơn giản cho nhiệm vụ đơn giản MetaData MetaData thông tin đối tợng bản, chơng trình cần dùng đến để tìm đặc điểm đợc trình điều khiển sở liệu hỗ trợ, để tìm tên cột , kích thớc công việc tơng tự Nh đề cập, tập kết (ResultSet) dòng liệu theo mô hình ống Điều có nghĩa có thông tin mô tả tập kết liệu thực tế Thông tin thêm đợc lấy nhơg method getMetaData() Đối tợng ResultSetMetaData có tập method nh getColumnCount(), getColumnDisdplaySize(), getColumnLabel() getColumnName() Các hàm đợc dùng để lấy thông tin cột liệu Ngoài đối tợng ResultSetMetaData, JDBC hỗ trợ đối tợng DatabaseMetaData, đối tợng cho biết thông tin sở liệu Đối tợng DatabaseMetaData có khoảng 100 method, có getDatabaseProductName(), getDatabaseProductVersion() method từ đặc điểm đợc thực hiện, đến lợc đồ cụ thể, đến tên stored procedure Có method để yêu cầu thông tin thực (implementation), chi tiết cụ thể, hạn chế chẳng hạn nh getDatabaseProductName(), getDatabaseProductVersion(), getMaxConnections(), getTables(), getTableTypes(), getMaxColumnLength(), getMaxCharLiteralLength(), getProcedures() Trang 19 Đồ án tốt nghiệp Giới thiệu Java sở liệu Nh đề cập đây, JDBC API phát triển qua phiên 1.0 vào tháng 6/1996 Hãng Sun hãng Intersolv đa cầu nối JDBC ODBC beta Các nhà cung cấp khác dang cố gắng việc tạo trình điều khiển cho JDBC phần mở rộng riêng họ Để kiểm tra thực JDBC, bạn thấy kết hợp hai lực lợng nhà thiết kế hãng JavaSoft nhà phê bình đặc điểm JDBC ngày phát triển đợc API đơn giản, gọn mạnh mẽ chơng trình Java truy cập vào sở liệu Hình dới miêu tả hệ thống chung cho hệ thống ứng dụng sở liệu Internet/Intranet (hình 4- hình 20.6 trang 823) Trên Web server applet server có đủ applet cần thiết cho hệ thống server sở liệu có liệu Các máy PC Java client thiết bị ngoại vi Java load applet về, chạy chúng kết nối vào server sở liệu thông qua JDBC Một ví dụ, máy in applet cập nhật máy in đặc điểm kỹ thuật đợc lu trữ server lấy thông tin cấu hình thông tin ngời sử dụng server server sở liệu cách dùng kết JDBC Trong tờng hợp máy Java PC client, applet mấu để điền phí tổn mà dùng kết nối JDBC để lấy thông tin (chẳng hạn nh loại, giới hạn phí tổn) từ server sở liệu để gửi toàn chi phí đến bảng chi phí server sở liệu Để loại hệ thống làm việc, bạn cần phải có applet để đảm bảo chúng kết nối với server khác Internet/Intranet, applet server server sở liệu máy Hiện mức an ninh thông dụng applet viết liệu lên server mà từ chúng đợc load Java RMI xếp đối tợng (Object Serialization) RMI đợc viết tắt từ Java Remote Method Invocation cho phép đối tợng tồn nhiều khoảng tên (Multiple namespaces), đợc phân bố thông qua mô hình Java máy ảo (Java Virtual Machine) Mỗi khoảng tên (namespace) máy máy khác mạng Khi mà method gọi qua biên giới Java máy ảo đến khoảng tên khác, biến toàn cục mà cso thể chia sẻ (dùng chung) đối tợng Đây nơi mà RMI API xuất Chúng (RMI API) cho phép đối tợng tồn lâu (over time), dai dẳng Việc xếp đối tợng đợc thiết kế đặc biệt cho đối tợng Java Điều có nghĩa đối tợng Java đợc cất xử lý lại nh đối tợng Kết hợp RMI xếp đối tợng, bạn nhận đợc Trang 20 Đồ án tốt nghiệp Giới thiệu Java sở liệu đối tợng đợc truyền qua biên giới với liệu mà tồn lâu (over time) Các lời gọi RMI cho phép bạn gọi method xa, xếp đối tợng cho phép bạn truyền đối tợng đến method xa Chú ý: Hãy xem xét hệ thống ngân hàng để làm ví dụ cho khái niệm vừa nêu Một client dùng máy tính PC gọi đến thủ tục kiểm tra đợc đặt tài khoản server ngân hàng để lấy thông tin kiểm tra trớc họ trả số tiền điện thoại lớn Máy client PC chạy Windows máy server ngân hàng chạy HPUNIX Trong trờng hợp máy client PC dùng RMI để xác định gọi thủ tục kiểm tra Số tài khoản đợc truyền cho thử tục xa thông qua xếp class method Thủ tục kiểm tra xa chạy lệnh SQL truyền kết trở lại cho máy tính PC nhà bạn thông qua việc dùng xếp đối tợng class method Trong khái niệm trừu tợng RMI Object Serialization hỗ trợ cho trình phát triển hệ thống với đối tợng phân tán Điều có nghĩa vậy? Thông thờng bạn chạy chơng trình tất hàm liệu có sẵn máy tính bạn, chơng trình đơn gọi thủ tục hàm với tham số để thực chúng Nhng giới nhiều client/server, tất thủ tục hày hàm có sẵn máy tính bạn nhiều nguyên nhân có nguyên nhân an ninh, nguyên nhân trạng thái gần liệu nguyên nhân trung tâm logic lu trữ liệu Nếu bạn cho phép thủ tục xa cập nhật/thêm/xoá liệu sở liệu tập trung, chơng trình có lỗi chơng trình kẻ có âm mu phá hoại làm hỏng liệu Nếu bạn muốn làm vài tóm tắt liệu, thực tế bạn nên làm điều server sở liệu thay chuyển liệu đến máy client làm Nếu bạn có kiểu server logic, chẳng hạn nh phần tạo ID phận kiểm tra giới hạn thẻ tín dụng, server nên lớp trung tâm Trong tất trờng hợp này, bạn cần dịch vụ, bạn dùng RMI để gọi đối tợng với tham số yêu cầu Các modul hàm hay applet thực tế mà thực chức nơi Internet Sau xử lý song phần Trang 21 Đồ án tốt nghiệp Giới thiệu Java sở liệu logic, applet gửi kết trở lại cho phía client thông qua RMI Việc đóng mở gói tham số qua trình xử lý đợc gọi marshalling Các RMI API thêm trình giao tiếp Remote class nh RemoteObject, RemoteServer, RemotException UnicastRemoteServer vào API khác Chơng trình Java mở rộng thực trình giao tiếp để phát triển ứng dụng đối tợng trung tâm (object-centric) làm việc qua khoảng tên (namespace) Các API Object Serialization thêm trình giao tiếp nh ObjectOutput ObjectInput class nh ObjectInputStream ObjectOutputStream phép chơng trình ứng dụng có khả lu trữ đọc đợc đối tợng Các method để làm điều readObject writeObject Java IDL Hệ thống Java IDL (Interface Definition Language) khái niệm tơng tự nh Java RMI API Sự khác Java RMI đối tợng method giành cho đối tợng Java, điều hoàn toàn trái ngợc với IDL, IDL không phụ thuộc vào ngôn ngữ hệ điều hành (Operating System) Java IDL dịch theo chuẩn CORBA (CORBA viết tắt Common Object Request Broker Architecture tức theo cấu trúc trung gian yêu cầu đối tợng thông dụng) thông qua nhóm quản lý đối tợng OMG (Object Management Group) hớng đối tợng Java đến chuẩn CORBA Chuẩn CORBA đợc thực từ OMG đợc dùng rộng rãi hệ thống ngân hàng, buôn bán hàng hoá, môi giới hệ thống khác Các hệ thống đợc thiết lập cách hoàn hảo có chức cao Hệ thống Java IDL cung cấp phơng pháp cho chơng trình Java để giao tiếp với hệ thống kể dử dụng hàm logic thơng mại method có Ví dụ, applet làm việc nh hệ thống môi giới hỏi đáp dựa chuẩn CORBA Một chơng trình Java applet encapsulate an ninh phía client có chức giao tiếp với ngời sử dụng qua giao diện đồ hoạ (GUI) Sự tác động qua lại với hệ thống trung gian back-end đợc thực class IDL Hệ thống Java IDL phiên alpha bao gồm module runtime phía client, module runtime phía server công cụ phát triển IDLGEN Run time phía client cho phép chơng trình Java giao tiếp đợc với server CORBA, run time phía server cho phép chơng trình Java đóng vai trò nh server mạng cho IDL client Trang 22 Đồ án tốt nghiệp Giới thiệu Java sở liệu chơng trình IDLGEN tạo định nghĩa giao tiếp Java mẫu (template) cho nhiệm vụ server client Mặc dù hệ thống IDL mở rộng Java platform thành hệ thống CORBA cho phép nhà phát triển Java thực hệ thống mà sử dụng hệ thống có sẵn, Java IDL phiên alpha Một điều chắn đòi hỏi nhiều đặc điểm có ích trớc phiên 1.0 thức đời Nhà cung cấp/ Các giải pháp thành viên thứ ba Mỗi nhà cung cấp có giải pháp để tác động đến Web Hầu hết sở liệu hỗ trợ ODBC; vậy, bạn dùng JDBC để giao tiếp với sở liệu Nếu nh bạn muốn khai thác đặc điểm sở liệu đặc điểm có liên quan đến cấu trúc cụ thể chẳng hạn nh Web Server Oracle kênh mở (Open Channel) Visigenic bạn cần phải áp dụng giải pháp đợc nhà cung cấp phát triển Một giải pháp tốt dùng trình điều khiển API chung cho chơng trình applet đợc sử dụng rộng rãi Internet/Intranet Đối với ứng dụng mang tính tập đoàn Intranet bạn áp dụng cấu trúc trình điều khiển cụ thể cho sở liệu cụ thể giải pháp nhà cung cấp Để lấy ví dụ nhà cung cấp sở liệu cụ thể đó, phần đề cập đến chiến lợc Java nhà cung cấp thị trờng, Oracle giải pháp Visigenic ví dụ phần mềm giao tiếp kiểu thành viên thứ ba cho nhiều hệ thống sở liệu Visigenic đợc biết đến trình điều khiển cho ODBC không phụ thuộc vào platform không phụ thuộc vào sở liệu Oracle Chiến lợc Web Oracle dựa sản phẩm Web Server họ kết hợp với hệ thống sở liệu Oracle Ngôn ngữ truy cập sở liệu PL/SQL thực SQL Oracle Ngôn ngữ SQL tuân theo chuẩn ANSI (American National Standards Institute) có phần mở rộng cho sở liệu Oracle Trong phần này, bạn đợc giới thiệu kết nối Java-PL/SQL Trang 23 Đồ án tốt nghiệp Giới thiệu Java sở liệu Cấu trúc Web Server Oracle Web Server hệ thống dựa cấu trúc component Các component đợc gọi cartridge, cartridge đợc đóng gói chức trình tiện ích Ví dụ cartridge có PL/SQL, xử lý thẻ tín dụng, luật thơng mại, quản lý catalog, kết nối với hệ thống tài sản Các component trung gian Web-request component kiểu front end Internet/Intranet Bạn đóng gói module thơng mại thành cartridge cài vào hệ thống Các cartridge chạy khoảng tên/URL riêng chúng chúng có chức cross-functional chúng tác động với cách sử dụng API chuyển đổi cartridge bên Java cartridge Một cartridge bổ xung mô hình Java máy ảo Oracle phía server đợc gọi Java server Cartridge Java server tơng tác với tất cartridge có có, chẳng hạn nh kết nối qua lại với hệ thống tài sản Điều có nghĩa ứng dụng Java tơng tác với PL/SQL Oracle để thao tác sở liệu Oracle 7, điều tơng tự nh khả có ODBC chơng trình Java từ JDBC API Ơ' Java cartridge cung cấp khả PL/SQL Oracle cho chơng trình Java Bạn phát triển applet cartridge servlet cartridge dùng Java mà thực đợc tập chức well-defined, chẳng hạn nh hỏi đáp sở liệu, cập nhật tơng tác qua lại Hiện Oracle thi hành API quản lý cartridge cartridge component đợc phân phối server thông qua tổ chức trờng hợp thẻ tín dụng ứng dụng thơng mại khác toàn cầu Các class Java riêng Oracle Oracle thêm vào Java package sau đây: oracle.plsql chứa Java class Wrapper ngôn ngữ PL/SQL Oracle Class cho phép chơng trình Java tất khả để thao tác sở liệu Oracle Trang 24 Đồ án tốt nghiệp Giới thiệu Java sở liệu oracle.rdbms chứa class truy cập sở liệu Các class cho phép quản lý sở liệu cách trừu tợng, có việc quản lé an ninh quản lý sở liệu oracle.html chứa class để tạo trang HTML Oracle áp dụng việc tạo trang Web động để đảm bảo trang Web phản ánh liệu thời Các trang Web đợc tạo từ kết việc hỏi đáp chúng trang Web ảnh hởng lẫn Bạn tạo ứng dụng chắn để thêm/sửa đổi/xoá thông tin sở liệu Oracle thông qua việc dùng trình duyệt Web Oracle hỗ trợ JDBC API chung, bạn phát triển ứng dụng chung mf truy cập vào sở liệu Oracle Đối với ứng dụng cho sở liệu lớn Oracle mà phải làm việc với nhiều liệu, chức thơng mại, Java Cartridge API, class PL/SQL class có liên quan phù hợp Trong trờng hợp này, chơng trình làm việc với sở liệu Oracle, áp dụng Oracle, chúng đợc tối u hoá cho việc truy cập vào sở liệu Oracle Do cấu trúc mở không cho ta thuận lợi Chiến lợc Oracle cho bạn nhìn nhận Java đợc mở rộng để hỗ trợ ứng dụng kiểu client/server đợc phát triển cho hệ thống sở liệu mission-critical Visigenic Visigenic công ty chuyên phát triển trình điều khiển không phụ thuộc vào sở liệu không phụ thuộc vào platform Dây truyền sản xuất họ bao gồm trình điều khiển cho ODBC, phần mềm kiểm tra phần mềm ODBC không phụ thuộc vào platform, sản phẩm theo kiểu kênh mở (OpenChannel) sản phẩm đối tợng trung gian cho Java cho hệ thống CORBA Họ hỗ trợ ứng dụng Java dựa đối tợng Đối với khía cạnh truy cập sở liệu có hai công cụ hỗ trợ việc truy cập liệu phân tán cho Java platform: Visigenic OpenChannel Client cho Java Visigenic JDBC cho trình điều khiển ODBC Các sản phẩm cho phép truy cập vào sở liệu từ xa thông qua Internet Intranet cách sử dụng cấu trúc client/server mà có hỗ trợ toàn chức ODBC Quay lại hình 3, cấu trúc trình điều khiển JDBC/ODBC tơng tự nh việc áp dụng JDBC/ODBC Trang 25 Đồ án tốt nghiệp Giới thiệu Java sở liệu hãng Sun cấu trúc OpenChannel gống nh nhà cung cấp sở liệu Visigenic OpenChannel Client cho Java OpenChannel Visigenic lớp phần mềm client server cho phép ứng dụng truy cập vào nhiều loại sở liệu cách hoàn toàn suốt (transparently), chẳng hạn nh sở liệu Oracle, Sybase Microsoft SQL server Hiện Visigenic mở rộng khả cấu trúc OpenChannel (mô hình kênh mở) để hỗ trợ môi trờng Java OpenChannel cho Java cho phép tơng tác qua lại ứng dụng Internet, cho phép ngời sử dụng làm việc với liệu xa OpenChannel phía client cho phép ứng dụng đơn lẻ (standalone application) applet Java truy cập vào nguồn sở liệu ODBC Cấu trúc OpenChannel loại trừ đợc việc giao tiếp với sở liệu thông qua CGI API khác server OpenChannel phía client cho Java truyền trực tiếp yêu cầu đến OpenChannel server đợc đặt platform mà sở liệu đợc lu trữ Không có platform riêng biệt trình điều khiển Java hệ điều hành máy tính (host) OpenChannel client cho Java đợc viết hoàn toàn Java, điều làm cho không phụ thuộc vào platform, có cấu trúc tập trung, chắn có khả network-aware Hơn nữa, client đợc load từ applet server cần thiết để xử lý sở liệu Điều hoàn toàn thuận lợi hệ thống client nhỏ mà chỗ chứa tài nguyên bị giới hạn Quay trở lại hình 1, ví dụ phần áp dụng nhà cung cấp sở liệu, trình quản lý trình điều khiển OpenChannel đợc viết hoàn toàn Java, trình giao tiếp với OpenChannel server thông qua Internet Sau server giao tiếp với sở liệu để truy cập liệu Trình giao tiếp JDBC ODBC Visigenic Trình điều khiển tơng tự nh trình cầu nối JDBC ODBC hãng Sun Intersolv Có điểm thuận lợi lớp cho trình điều khiển sở liệu nhà cung cấp sở liệu Visigenic có trình điều khiển cho nhiều platform (Windows NT/95, ATT GIS, IBM AIX, HP-UX, SCO, Solaris, Sun OS, Macintosh OS/2) mà họ đợc cấp giấy phép để sản xuất trình điều khiển cho, môi trờng kết hợp với hệ thống không đồng lại với Visigenic ý tởng hay Khả không phụ thuộc vào platform sở liệu liệu làm cho Visigenic tốt lớp cầu nối Trang 26 Đồ án tốt nghiệp Giới thiệu Java sở liệu ODBC/JDBC Sun môi trờng hợp môi trờng không đồng Tơng lai Nh bạn thấy phần trình bày đây, JDBC giải pháp khác cho sở liệu kết nối thời kỳ bắt đầu Trong vài năm tới với phát triển Web hữa hẹn nhiều kiểu Web xuất hiện, kiểu Web làm nâng cao thêm khả sở liệu Java Một khái niệm nh giao tiếp với sở liệu hớng đối tợng Hiện nhóm quản lý đối tợng sở liệu hoạt động việc truy cập vào sở liệu từ Java Nh bạn vừa đọc qua, JDBC trình điều khiển có liên quan sở liệu có liên quan Hiện ODMG (Object Database Management Group) có kế hoặch để thi hành kết tiến dần đến trung tâm đối tợng Điều có nghĩa chơng trình Java trực tiếp liên quan đến (đọc, ghi, lấy thông tin về) đối tợng, bỏ qua áp dụng sở liệu Khi đó, chơng trình Java trực tiếp đọc viết đối tợng từ sở liệu mà cso hỗ trợ kế ODMG Khi sở liệu làm việc nh chứa đối tợng lâu dài mà ngời cất nhiều loại đối tợng khác chẳng hạn nh video, âm nhạc hình ảnh Khi bạn truy cập đến chơng trình video thông qua mạng Ti Vi bạn thay phải đến nơi cất giữ chơng trình video Trang 27

Ngày đăng: 11/07/2016, 17:21

Từ khóa liên quan

Mục lục

  • JAVA và các cơ sở dữ liệu

  • Nội dung

    • Giới thiệu về Java truy cập vào các cơ sở dữ liệu

    • Các Java Enterprise API

    • JDBC

    • Sự áp dụng JDBC

      • Giới thiệu cụ thể về các class của JDBC

      • java.sql.DriverManager

      • java.sql.Driver

      • java.sql.Connection

      • java.sql.Statement

      • java.sql.PreparedStatement

      • java.sql.CallableSatement

      • java.sql.ResultSet

      • MetaData

      • Java RMI và sắp xếp đối tượng (Object Serialization)

      • Java IDL

      • Nhà cung cấp/ Các giải pháp thành viên thứ ba

        • Oracle

          • Cấu trúc Web Server của Oracle

          • Java cartridge

          • Các class Java của riêng Oracle

          • Visigenic

            • Visigenic OpenChannel Client cho Java

            • Trình giao tiếp giữa JDBC và ODBC của Visigenic

Tài liệu cùng người dùng

Tài liệu liên quan