intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chuẩn bị cho Kỳ thi 733 về Phát triển ứng dụng DB2 9, Phần 6: Lập trình .NET DB2 giao diện liên tục với các khung công tác .NET (.NET framework)

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:42

79
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Peter Atthem, Chuyên gia IT, IBM Tóm tắt: Tìm hiểu về cách viết các ứng dụng .NET có giao diện với IBM® DB2®. Bạn sẽ được giới thiệu về mô hình đối tượng ADO.NET và sẽ thấy làm thế nào để thi hành các câu lệnh SQL với ADO.NET. Đây là bài thứ sáu trong một loạt bài gồm chín hướng dẫn mà bạn có thể sử dụng để giúp chuẩn bị cho kỳ thi lấy chững chỉ phát triển ứng dụng Họ IBM DB2 9 (kỳ thi 733). ...

Chủ đề:
Lưu

Nội dung Text: Chuẩn bị cho Kỳ thi 733 về Phát triển ứng dụng DB2 9, Phần 6: Lập trình .NET DB2 giao diện liên tục với các khung công tác .NET (.NET framework)

  1. Chuẩn bị cho Kỳ thi 733 về Phát triển ứng dụng DB2 9, Phần 6: Lập tr ình .NET DB2 giao diện liên tục với các khung công tác .NET (.NET framework) Peter Atthem, Chuyên gia IT, IBM Tóm tắt: Tìm hiểu về cách viết các ứng dụng .NET có giao diện với IBM® DB2®. Bạn sẽ được giới thiệu về mô hình đối tượng ADO.NET và sẽ thấy làm thế nào để thi hành các câu lệnh SQL với ADO.NET. Đây là bài thứ sáu trong một loạt bài gồm chín hướng dẫn mà bạn có thể sử dụng để giúp chuẩn bị cho kỳ thi lấy chững chỉ phát triển ứng dụng Họ IBM DB2 9 (kỳ thi 733). Trước khi bạn bắt đầu Về loạt bài viết này Chứng chỉ Nhà phát triển ứng dụng được IBM công nhận xác nhận với những người khác rằng bạn là một nhà phát triển ứng dụng mức trung cấp hoặc cao cấp về IBM DB2 với Linux™, UNIX® và Windows® và cho biết rằng bạn có các kỹ năng giỏi trong tất cả các công việc lập trình chung cũng như lập trình SQL nhúng, lập trình ODBC/CLI, lập trình .NET hoặc lập trình Java™. Loạt bài gồm chín hướng dẫn miễn phí này được thiết kế để giúp bạn chuẩn bị cho kỳ thi lấy chứng chỉ Phát triển ứng dụng DB2 9 cho Linux, UNIX và Windows (kỳ thi 733). Mỗi hướng dẫn bao gồm một liên kết đến một bản tải về dùng thử miễn phí DB2 9 cho Linux, UNIX và Windows. Các hướng dẫn này cung cấp một cơ sở vững chắc cho mỗi phần của kỳ thi. Tuy nhiên, bạn không nên dựa vào các hướng dẫn này như là sự chuẩn bị duy nhất của bạn cho kỳ thi này.
  2. Hướng dẫn này trình bày về cái gì? Trong hướng dẫn này, bạn sẽ tìm hiểu về cách viết các ứng dụng .NET có giao diện với DB2 IBM. Bạn sẽ thấy làm thế nào để: Kết nối với một cơ sở dữ liệu DB2 từ một ứng dụng .NET.  Sử dụng ADO.NET để đọc và cập nhật dữ liệu trong một cơ sở dữ liệu  DB2. Sử dụng ADO.NET để làm việc với các kết quả.  Xây dựng một ứng dụng ADO.NET.  Sửa lỗi một ứng dụng DB2 .NET.  Các tư liệu trong hướng dẫn này trình bày các mục tiêu trong Phần 6 của kỳ thi cấp chứng chỉ Nhà phát triển ứng dụng DB2 9 (kỳ thi 733), mang tên " Lập trình .NET". Ai nên tìm hiểu hướng dẫn này? Để tham dự kỳ thi Phát triển ứng dụng Họ DB2 9, bạn đã phải vượt qua được kỳ thi Cơ bản về họ DB2 9 (kỳ thi 730). Bạn có thể sử dụng loạt b ài hướng dẫn Cơ bản về họ DB2 (DB2 9 Family Fundamentals tutorial series) để chuẩn bị cho kỳ thi đó. Đây là một loạt hướng dẫn rất phổ biến đã giúp cho nhiều người hiểu về các khái niệm cơ bản về họ các sản phẩm DB2.
  3. Ngoài nền tảng DB2 này, bạn cũng nên có kiến thức cơ bản về nền tảng SQL và .NET trước khi bạn bắt đầu hướng dẫn này. Hướng dẫn này là một trong những công cụ có thể giúp bạn chuẩn bị cho kỳ th i 733. Bạn cũng nên xem lại phần Tài nguyên ở phần cuối của hướng dẫn này để biết thêm thông tin. Các yêu cầu hệ thống Bạn không cần phải dùng một bản sao của Cơ sở dữ liệu đa năng DB2 (DB2 Universal Database) để hoàn thành hướng dẫn này. Tuy nhiên, bạn có thể tải về một phiên bản dùng thử miễn phí của Ấn bản doanh nghiệp DB2 9, nếu bạn muốn. Nếu bạn có kế hoạch để phát triển các ứng dụng .NET cho DB2 hoặc bạn có kế hoạch tự mình chạy thử các mã ví dụ mẫu của hướng dẫn này, bạn cần phải hoàn thành các nhiệm vụ sau: Cài đặt DB2 9 cho Linux, UNIX và Windows.  Tạo cơ sở dữ liệu mẫu bằng cách chạy db2sampl từ DB2 CLP. Mã mẫu  trong bài viết này đã được viết để làm việc với cơ sở dữ liệu này. Cài đặt Microsoft® Visual Studio .NET 2003 hoặc mới hơn.  Giới thiệu về lập trình .NET cho DB2 Khung công tác .NET (.NET framework)
  4. Khung công tác .NET đã được Microsoft thúc đẩy như là một nền tảng phát triển phần mềm mới cho Windows để thay thế công nghệ Component Object Model (COM – Mô hình đối tượng thành phần). Các tính năng quan trọng của khung công tác này như sau: Bạn có thể mã các ứng dụng .NET trong hơn bốn mươi ngôn ngữ lập trình  khác nhau. Các ngôn ngữ phổ biến nhất cho việc phát triển .NET là C# và Visual Basic .NET. Thư viện lớp khung công tác .NET cung cấp các khối xây dựng để bạn xây  dựng các ứng dụng .NET. Thư viện lớp này là không cần đến ngôn ngữ lập trình (language agnostic) và cung cấp các giao diện cho hệ điều hành và các dịch vụ ứng dụng. Bất kể bạn viết ứng dụng .NET của bạn bằng ngôn ngữ nào, nó sẽ biên dịch  thành Ngôn ngữ trung gian (Intermediate Language - IL), một kiểu mã byte (bytecode). Common Language Runtime (CLR – Thời gian chạy ngôn ngữ chung) là  trung tâm của khung công tác .NET. Nó biên dịch mã IL trong lúc đang chạy và sau đó chạy nó. Trong lúc đang chạy mã IL đã biên dịch, CLR kích hoạt các đối tượng, kiểm tra chúng về đảm bảo an ninh, cấp phát bộ nhớ cho chúng, chạy chúng và dọn sạch bộ nhớ ngay sau khi thi hành xong. Khung công tác .NET cung cấp các hỗ trợ truy cập dữ liệu rộng lớn thông qua ADO.NET. ADO.NET hỗ trợ cả việc truy cập được kết nối lẫn truy cập đã ngắt kết nối. Thành phần then chốt của việc truy cập đã ngắt kết nối trong ADO.NET là lớp DataSet, các cá thể của lớp này hoạt động như một bộ nhớ sẵn (cache) cơ sở dữ liệu, nằm trong bộ nhớ ứng dụng của bạn. Việc truy cập đ ã kết nối trong ADO.NET không yêu cầu thêm lớp bổ sung nào.
  5. Đối với cả hai cách truy cập đã kết nối lẫn truy cập đã ngắt kết nối, các ứng dụng .NET truy cập cơ sở dữ liệu thông qua cái gọi là trình cung cấp dữ liệu .NET (.NET data provider). Nhiều sản phẩm cơ sở dữ liệu khác nhau bao gồm sẵn các trình cung cấp dữ liệu .NET riêng của chúng, kể cả DB2 cho Windows. Một trình cung cấp dữ liệu .NET triển khai thực hiện các lớp cơ bản sau đây: Connection: Thiết lập và quản lý một kết nối cơ sở dữ liệu.  Command:Thi hành một câu lệnh SQL đối với một cơ sở dữ liệu.  DataReader: đọc và trả về dữ liệu của bộ kết quả từ một cơ sở dữ liệu.  DataAdapter: Liên kết một cá thể DataSet tới một cơ sở dữ liệu. Thông qua  một cá thể DataAdapter, DataSet có thể đọc và ghi các dữ liệu bảng cơ sở dữ liệu. Trình cung cấp dữ liệu .NET cho DB2 Trình cung cấp dữ liệu .NET cho DB2 mở rộng sự hỗ trợ DB2 cho các giao diện ADO.NET và mang lại hiệu suất cao, truy cập an toàn tới dữ liệu DB2. DB2 cho Windows bao gồm ba trình cung cấp dữ liệu .NET: Trình cung cấp dữ liệu DB2 .NET: Một trình cung cấp dữ liệu ADO.NET  được quản lý, có hiệu suất cao. Đây là trình cung cấp dữ liệu ADO.NET được khuyến khích sử dụng với họ các cơ sở dữ liệu DB2. Việc truy cập cơ sở dữ liệu ADO.NET bằng cách sử dụng Trình cung cấp dữ liệu DB2 .NET có ít hạn chế hơn và cung cấp hiệu năng cao hơn so với các trình cung cấp dữ liệu cầu nối .NET OLE DB và .NET ODBC. Trình cung cấp dữ liệu .NET OLE DB: Một trình cung cấp dữ liệu cầu  nối để cung cấp các yêu cầu ADO.NET cho trình cung cấp OLE DB của IBM (qua mô đun interop của COM). Trình cung cấp dữ liệu .NET này không được khuyến
  6. khích để truy cập vào các cơ sở dữ liệu họ DB2. Trình cung cấp dữ liệu DB2 .NET là trình cung cấp dữ liệu nhanh hơn và có nhiều tính năng phong phú hơn. Trình cung cấp dữ liệu .NET ODBC: Một trình cung cấp dữ liệu cầu nối  để cung cấp các yêu cầu ADO.NET cho trình điều khiển (driver) IBM ODBC. Trình cung cấp dữ liệu .NET này không được khuyến khích để truy cập vào các cơ sở dữ liệu họ DB2. Trình cung cấp dữ liệu DB2 .NET là trình cung cấp dữ liệu nhanh hơn và có nhiều tính năng phong phú hơn. Để phát triển và chạy các ứng dụng có sử dụng Trình cung cấp dữ liệu DB2 .NET, bạn cần .NET Framework phiên bản 1.1 hoặc 2.0. .NET Framework phiên bản 1.0 và Visual Studio .NET 2002 không được hỗ trợ để sử dụng với Trình cung cấp dữ liệu DB2 .NET của DB2 9. Kết nối đến một cơ sở dữ liệu Trong phần này, bạn sẽ tìm hiểu làm thế nào để kết nối đến một cơ sở dữ liệu DB2 từ một ứng dụng .NET. Tạo một kết nối khi sử dụng Trình cung cấp dữ liệu .NET DB2 Khi bạn đang sử dụng Trình cung cấp dữ liệu DB2 .NET, bạn có thể thiết lập một kết nối cơ sở dữ liệu thông qua lớp DB2Connection. Trước tiên, bạn phải tạo một chuỗi ký tự để lưu trữ các tham số kết nối. Dưới đây là một ví dụ về một chuỗi ký tự kết nối có thể dùng:: String connectString = "Database=SAMPLE";
  7. Khi chuỗi này được sử dụng, nó cố gắng để kết nối vào cơ sở dữ liệu SAMPLE: Liệt kê 1. Chuỗi kết nối String cs = "Server=draco:50000;Database=SAMPLE;UID=db2admin;PWD=1a2b3c4d; Connect Timeout=30"; // When used, attempts to connect to the SAMPLE database on the server // 'draco' through port 50000 using 'db2admin' and '1a2b3c4d' as the user id // and password respectively. If the connection attempt takes more than thirty // seconds, the attempt will be terminated and an error will be generated.
  8. Để tạo kết nối cơ sở dữ liệu, hãy chuyển connectString đến hàm tạo của lớp DB2Connection. Sau đó, sử dụng phương thức Open() của đối tượng DB2Connection để chính thức kết nối vào cơ sở dữ liệu được xác định trong connectString. Đây là cách làm thế nào để bạn kết nối đến một cơ sở dữ liệu bằng C#: Liệt kê 2. Kết nối đến một cơ sở dữ liệu bằng C# String connectString = "Database=SAMPLE"; DB2Connection conn = new DB2Connection(connectString); conn.Open(); return conn; Tạo một kết nối với các lớp cơ sở chung ADO.NET
  9. Phiên bản 2.0 của .NET framework đưa ra một vùng tên được gọi là System.Data.Common; vùng tên này đưa ra một bộ các lớp cơ bản có thể được chia sẻ bởi bất kỳ trình cung cấp dữ liệu .NET nào. Điều này tạo điều kiện thuận lợi cho một cách tiếp cận phát triển ứng dụng cơ sở dữ liệu ADO.NET đặc trưng chung, đưa ra một giao diện lập trình không đổi. Các lớp chính trong Trình cung cấp dữ liệu DB2 .NET với .NET Framework 2.0 được thừa kế từ các lớp cơ sở System.Data.Common. Kết quả là, các ứng dụng ADO.NET đặc trưng chung làm việc với các cơ sở dữ liệu DB2 thông qua Trình cung cấp dữ liệu.NET DB2. Mã C# dưới đây giải thích một cách tiếp cận đặc trưng chung để thiết lập một kết nối cơ sở dữ liệu: Liệt kê 3. Thiết lập một kết nối cơ sở dữ liệu DbProviderFactory factory = DbProviderFactories.GetFactory("IBM.Data.DB2"); DbConnection conn = factory.CreateConnection(); DbConnectionStringBuilder sb = factory.CreateConnectionStringBuilder(); if( sb.ContainsKey( "Database" ) ) { sb.Remove( "database" ); sb.Add( "database", "SAMPLE" ); } conn.ConnectionString = sb.ConnectionString;
  10. conn.Open(); Đối tượng DbProviderFactory là điểm bắt đầu của bất kỳ ứng dụng ADO.NET đặc trưng chung nào. Đối tượng này tạo ra các cá thể đặc trưng chung của các đối tượng trình cung cấp dữ liệu .NET, chẳng hạn như các kết nối, các bộ thích ứng dữ liệu (data adapter), các lệnh và các bộ đọc dữ liệu, sẽ làm việc với một sản phẩm cơ sở dữ liệu cụ thể. Trong trường hợp của ví dụ trong Liệt kê 3, chuỗi IBM.Data.DB2 được chuyển vào trong phương thức GetFactory() xác định Trình cung cấp dữ liệu .NET DB2 duy nhất và các kết quả trong việc khởi tạo của một cá thể DbProviderFactory để tạo ra các cá thể đối tượng của trình cung cấp cơ sở dữ liệu cụ thể cho Trình cung cấp cơ sở dữ liệu DB2 .NET. Đối tượng DbConnection có thể kết nối đến các cơ sở dữ liệu họ DB2, đúng như một đối tượng DB2Connection, nó thực sự được thừa kế từ DbConnection, là có thể thực hiện được. Khi sử dụng lớp DbConnectionStringBuilder, bạn có thể xác định các từ khóa của chuỗi kết nối cho một trình cung cấp dữ liệu và tạo ra một chuỗi kết nối tùy chỉnh của khách hàng. Mã trong Liệt kê 3 kiểm tra để xem liệu một từ khóa có tên là database có tồn tại trong Trình cung cấp dữ liệu DB2 .NET không; nếu có mặt một từ khóa có mặt, mã lệnh tạo ra một chuỗi kết nối để kết nối vào cơ sở dữ liệu SAMPLE. Tạo nhóm kết nối (pooling)
  11. Khi một kết nối đầu tiên được mở dựa vào một cơ sở dữ liệu DB2, một nhóm kết nối sẽ được tạo ra. Khi các kết nối được đóng lại, chúng nhập vào nhóm, sẵn sàng để được các kết nối cần thiết của các ứng dụng khác sử dụng. Trình cung cấp dữ liệu DB2 .NET cho phép tạo nhóm kết nối theo mặc định. Bạn có thể tắt việc tạo nhóm kết nối bằng cách sử dụng cặp từ khóa/ giá trị chuỗi kết nối Pooling=false. Bạn có thể kiểm soát hành vi của nhóm kết nối bằng cách thiết lập các từ khóa trong chuỗi kết nối cho các thuộc tính sau: Kích thước nhóm tối đa và tối thiểu (min pool size, max pool size).  Khoảng thời gian một kết nối có thể ở trạng thái không hoạt động tr ước khi  nó được trả về nhóm (vòng đời của kết nối - connection lifetime). Có hay không đặt trở lại kết nối hiện tại vào trong nhóm kết nối khi nó  được đóng lại (thiết lập lại kết nối - connection reset). Kết nối Cơ sở dữ liệu: Mã mẫu Liệt kê 4 giải thích làm thế nào để kết nối tới DB2 từ một ứng dụng ADO.NET: Liệt kê 4. Kết nối tới DB2 từ một ứng dụng ADO.NET
  12. using System; using System.Data; using System.IO; using IBM.Data.DB2; class ConnDb { public static void Main(String[] args) { DB2Connection conn = null; try { String dbName = "SAMPLE"; String connectString = "Database=" + dbName;
  13. conn = new DB2Connection(connectString); //Connecting to the database conn.Open(); Console.WriteLine("Connected to the " + dbName + " database"); } catch (Exception e ) { Console.WriteLine(e.Message); } finally { //Close the connection if (conn != null) {
  14. conn.Close(); } } } } Trước khi bạn có thể biên dịch chương trình, bạn phải bảo đảm rằng biến môi trường INCLUDE có chứa thư mục %DB2PATH%\INCLUDE như là thư mục đầu tiên. Để làm điều này, cập nhật các tệp tin thiết lập môi trường cho Microsoft Visual C/C++ .NET, mà bạn có thể tìm thấy tại C:\Program Files\Microsoft Visual Studio .NET\Common7\Tools\vsvars32.bat. Tệp tin này có chứa các lệnh sau: @set INCLUDE=%MSVCDir%\ATLMFC\INCLUDE;...; %FrameworkSDKDir%\include;%INCLUDE%
  15. Di chuyển %INCLUDE%, nó thiết lập đường dẫn %DB2PATH%\INCLUDE, từ cuối danh sách tới tới đầu danh sách, như sau: @set INCLUDE=%INCLUDE%;%MSVCDir%\ATLMFC\INCLUDE;...; %FrameworkSDKDir%\include Để biên dịch mã, đặt chương trình trong thư mục %DB2PATH%\samples\.NET\cs, thư mục này có chứa các tập lệnh bldapp.bat. Sau đó đưa ra lệnh sau đây: bldapp ConnDb Để chạy chương trình, đưa ra lệnh sau đây: ConnDb
  16. Đọc và cập nhật dữ liệu với ADO.NET Trong phần này, bạn sẽ học cách làm thế nào để sử dụng đối tượng ADO.NET DB2Command thực hiện câu lệnh SQL trong một ứng dụng .NET. Sau khi hoàn tất phần này, bạn sẽ biết: Một đối tượng DB2Command là gì.  Làm thế nào để sử dụng phương thức ExecuteReader() để đọc dữ liệu từ  DB2. Làm thế nào để sử dụng phương thức ExecuteNonQuery() để chèn và xóa  dữ liệu. Làm thế nào để sử dụng phương thức ExecuteScalar() để trả về một giá trị.  Đối tượng DB2Command Một đối tượng DB2Command cho phép bạn chỉ rõ bạn muốn tương tác với DB2 như thế nào. Ví dụ, bạn có thể thực hiện các lệnh SELECT, INSERT, MODIFY và DELETE trên dữ liệu trong DB2. Khi sử dụng Trình cung cấp dữ liệu DB2 .NET, bạn thực hiện các câu lệnh SQL thông qua một lớp DB2Command khi sử dụng của các phương thức ExecuteReader() và ExecuteNonQuery() của nó và các thuộc tính CommandText, CommandType và Transaction. Với các câu lệnh SQL có tạo ra kết quả đầu ra, bạn nên sử dụng phương thức ExecuteReader(), kết quả của nó có thể được lấy ra từ một đối tượng DB2DataReader. Đối với tất cả các câu lệnh SQL khác, bạn nên sử dụng phương thức ExecuteNonQuery().Thuộc tính Transaction của đối tượng DB2Command cần được khởi tạo cho một DB2Transaction. Một đối tượng
  17. DB2Transaction chịu trách nhiệm về việc khôi phục lại và cam kết các giao dịch cơ sở dữ liệu. Các đối tượng DB2Command được tạo ra bằng cách sử dụng phương thức DB2Connection.CreateCommand(). Dưới đây là một ví dụ: DB2Command cmd; ... //assume conn is a DB2Connection object cmd = conn.createCommand(); Để thực hiện một câu lệnh SQL INSERT, UPDATE hoặc DELETE từ một đối tượng DB2Command, thiết lập CommandContext cho câu lệnh SQL và gọi phương thức cmd.ExecuteNonQuery(). Ví dụ: Liệt kê 5. Thực hiện câu lệnh SQL không truy vấn // assume a DB2Connection conn DB2Command cmd = conn.CreateCommand(); DB2Transaction trans = conn.BeginTransaction();
  18. cmd.Transaction = trans; cmd.CommandText = "INSERT INTO STAFF (ID,NAME,DEPT,JOB) VALUES (401, 'Peter', 99,'Mgr')"; cmd.ExecuteNonQuery(); Để thực hiện một truy vấn từ một đối tượng DB2Command, hãy thiết lập CommandContext cho truy vấn và gọi phương thức cmd.ExecuteReader(): Liệt kê 6. Thực hiện truy vấn // assume a DB2Connection conn DB2Command cmd = conn.CreateCommand(); DB2Transaction trans = conn.BeginTransaction(); cmd.Transaction = trans; cmd.CommandText = "SELECT ID, NAME, JOB FROM STAFF WHERE DEPT = 99"; DB2DataReader reader = cmd.ExecuteReader();
  19. Sau khi ứng dụng của bạn đã thực hiện một giao dịch cơ sở dữ liệu, bạn phải hoặc khôi phục lại nó hoặc cam kết nó. Bạn có thể làm điều này khi sử dụng các phương thức Commit() và Rollback() của một đối tượng DB2Transaction. Dưới đây là cách bạn khôi phục lại hoặc cam kết một giao dịch bằng C#: // assume a DB2Transaction object trans trans.Rollback(); ... trans.Commit(); Để phân tích cú pháp các bộ kết quả, sử dụng một đối tượng DB2DataReader. Sử dụng Read() để tiến đến hàng tiếp theo của bộ kết quả, sau đó, sau mỗi lần tìm nạp, hãy lấy ra các giá trị cột bằng cách sử dụng các phương thức áp dụng cho kiểu dữ liệu. Các phương thức GetString(), GetInt32(), GetDecimal() và v.v (có các phương thức tương tự cho các kiểu dữ liệu có sẵn khác) được sử dụng để trích xuất dữ liệu từ các cột riêng lẻ của đầu ra. Phương thức DB2DataReader.Close() được sử dụng để đóng DB2DataReader; bạn nên luôn luôn làm điều này khi bạn đã đọc xong đầu ra. Liệt kê 7 hiển thị cách đọc một bộ kết quả bằng C# như thế nào: Liệt kê 7. Đọc một bộ kết quả bằng C#
  20. // assume a DB2DataReader reader Int16 id = 0; String name = ""; string job = ""; // Output the results of the query while(reader.Read()) { id = reader.GetInt16(0); name = reader.GetString(1); job = reader.GetString(2); Console.WriteLine(" " + id + " " + name + " " + job); } reader.Close();
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2