Xây dựng và sử dụng thủ tục lưu trữ SQL/PL với Visual Studio 2005
Hỏi: Cách tạo thủ tục lưu trữ sử dụng trình thiết kế SQL/PL Stored Procedure và
áp dụng chúng trong một ứng dụng WinForm đơn giản làm thế nào?
Đáp:
Để thực hiện được các bước sau trong bài này, trước hết bạn phải tạo một cơ sở dữ
liệu SAMPLE (mẫu) bằng cách nhập lệnh db2sampl từ cửa sổ lệnh Command
Promp của hệ điều hành. Đồng thời bạn cũng phải thêm một kết nối tới cơ sở dữ liệu này trong
bảng ảo Server Explorer.
Xây dựng thủ tục SQL/PL sử dụng designer
Để xây dựng thủ tục lưu trữ SQL/PL, chọn ra các nhân viên của một phòng ban nào đó dựa trên
công cụ designer DB2 9 SQL/PL Stored Procedure trong Visual Studio 2005, thực hiện theo các
bước sau:
1, Mở rộng nút cơ sở dữ liệu SAMPLE trong Server Explorer, chọn thư mục Procedures, sau đó
là Add New SQL/PL Procedure with Designer.
2, Hộp thoại Procedure designer mở. Gọi thủ tục SELECTSTAFFBYDEPT trong khu vực
Procedure identification của designer này. Bạn có thể lựa chọn mô tả tên schema bên dưới hoặc
không. Thường trình này sẽ được tạo với một comment mô tả nó.
Bạn có thể sử dụng các thiết lập của mô hình Debug (trình gỡ rối), hoặc đặt chế độ Allow trong
ô “Debug mode” nếu muốn sử dụng các chức năng xử lý lỗi tích hợp của IDE cho thường trình
này.
3, Trong cửa sổ Procedure Parameters, thêm một tham số vào thường trình bằng cách click lên
nút Add parameter ().
4, Bấm chọn trường Name và thay đổi tên cho tham số này thành DEPTNUME.
5, Kích vào nút Import Parameters () để biết kiểu dữ liệu của tham số dùng để truy vấn thông
tin nhân viên trong bảng STAFF, dựa theo cột DEPT.
6, Cửa sổ Import mở. Bạn có thể dùng tên Schema để lọc các bảng trong cửa sổ, tìm bảng
STAFF, chọn cột DEPT, chuyển nó tới danh sách chọn bằng cách kích vào Add column to
selected list () và ấn OK.
Các add-in IBM bổ sung cho Visual Studio 2005 cung cấp cho bạn một số thành phần độc nhất,
nâng cao khả năng phát triển ứng dụng nhanh chóng (RAD) trong Visual Studio 2005 IDE. Khả
năng biết được kiểu dữ liệu tham số là một trong số đó. Thực hiện chức năng này, bạn sẽ không
bị lỗi sai trong chọn kiểu dữ liệu cho tham số đầu vào trong thủ tục lưu trữ đang xây dựng và
giảm thiểu khả nă
ng lỗi mã hoá.
Có một số thành phần DB2 9 RAD độc nhất khác cũng được tích hợp trong Visual Studio 2005,
như chức năng xác định cột trong tạo bảng của IntelliSense, móc nối với DB2 schema bên dưới.
Hay như IBM Output Message Pane, mô tả chi tiết hoạt động server dữ liệu DB2 và các thông
báo lỗi ….
Procedure Parameters (các tham số thủ tục) của designer này có dạng như sau:
7, Xoá tham số DEPTNUMB bằng cách bấm chọn nó và kích nút Delete Parameter (). Đổi tên
tham số DEPT thành DEPTNUMB.
Rõ ràng, bạn có thể chọn mô tả hoặc phát hiện tham số chính xác ngay lập tức. Sở dĩ chúng tôi
muốn đưa ra các bước này là để minh hoạ cho bạn khả năng đa thành phần của designer.
8, Thu gọn các phần Procedure Identification và Procedure Parameters bằng cách kích chuột
lên biểu tượng (). Lúc này, designer có dạng:
9, Thay thế
select ROUTINENAME, ROUTINESCHEMA from SYSIBM.SYSROUTINES;
bằng
select * from STAFF where dept = deptnumb;
Chú ý: Khi nhập lệnh mới này, bạn có thể tác động để IntelliSense móc nối với schema của
server dữ liệu bằng cách đưa ra tên của schema trước tên bảng STAFF, và đưa tên schema, các
tên bảng trước cột DEPT như hình bên dưới:
10, Xây dựng thủ tục lưu trữ này bằng cách ấn Ctrl+S, sau đó là Yes.
Còn nhiều thành phần khác nữa trong designer SQL/PL Stored Procedure, nhưng vượt ra ngoài
phạm vi của bài này. Bạn nên xây dựng một số thường trình khác nếu muốn tìm hiểu sâu hơn khả
năng của công cụ tuyệt vời và độc nhất này.
11, Refresh lại bảng ảo của thư mục Procedures trong Server Explorer bằng cách kích chuột lên
folder này và chọn Refresh nếu thấy cần.
12, Kiểm tra lại thủ tục lưu trữ với giá trị 20 cho tham số DEPTNUMB như sau:
a. Kích phải chuột lên thủ tục SELECTSTAFFBYDEPT, chọn Run. Cửa sổ Run Options
mở ra.
b. Bỏ chọn trong ô Null.
c. Kích chọn Value và nhập 20 vào ô.
d. Ấn Run.
Các bước này được minh hoạ như bên dưới:
Chú ý rằng, khi chạy thủ tục sử dụng add-in IBM trong Visual Studio 2005, bạn có thể sử dụng
các tuỳ chọn cho tiếng trình pre-run (chạy trước) hoặc post-run (chạy bổ sung). Ví dụ, có thể bạn
muốn sử dụng một script pre-run để tạo và đưa dữ liệu vào bảng, một script post-run để xoá
bảng. Lệnh Commit sau khi chạy script sẽ kiểm tra độ an toàn của mã thường trình trong Visual
Source …. Ngoài ra, trong lần tiếp theo, thủ tục lưu trữ sẽ ghi lại giá trị tham số được nhập để
việc chạy thường trình dễ dàng hơn.
Kết quả được trả về trong lưới dữ liệu DB2 và tương tự như sau:
Lưới dữ liệu DB2 trong Visual Studio 2005 là thành phần giàu tính năng với nhiều hoạt động
khác nhau. Như xuất, nhập dữ liệu (gồm cả định dạng XML), dự án, giới hạn, lọc mức hàng, sắp
xếp ….
Sử dụng thủ tục lưu trữ SQL/PL trong ứng dụng
Chúng ta đã có được thủ tục DB2 SQL/PL, bây giờ là tới nhiệm vụ sát nhập nó vào ứng dụng của
bạn.
Chú ý: Trong bài, chúng tôi chỉ giới thiệu cách xây dựng thủ tục lưu trữ trên server dữ liệu DB2
chạy trong hệ điều hành Linux, UNIX hay Windows. Nhưng bạn hoàn toàn có thể dễ dàng mở
rộng khả năng này cho cơ sở dữ liệu DB2 treen i5/OS hoặc z/OS, sử dụng kết nối DB2 Connect.
Quá trình hoàn toàn tương tự.
1, Tạo một chương trình ứng dụng Visual Basic mới có tên CallMySPProject: vào File > New
Project > Windows Application, chọn Visual Basic (có thể được đặt bên dưới Other
Languages). Gõ tên dự án trong trường Name và bấm OK.
Chú ý: Không giống như các chương trình ứng dụng khác, chương trình ứng dụng này được xây
dựng trong Visual Basic.NET.
2, Đảm bảo rằng khung nhìn Add Data Source đã được thể hiện trong IDE. Nếu chưa, ấn
Shift+Alt+Delete hoặc chọn Data > Show Data Sources từ thanh menu.
3, Bấm chọn Add New Data Source trong cửa sổ Data Sources, chọn Database và bấm Next.
4, Chọn cơ sở dữ liệu SAMPLE từ danh sách xổ xuống “Which data connection should your
application use to connect to the database?” (Kiểu kết nối dữ liệu nào ứng dụng sẽ sử dụng để
kết nối tới cơ sở dữ liệu?).
5, Bấm chọn ô “Yes, include sensitive data in the connection string" (Sử dụng cả dữ liệu nhạy
cảm trong xâu ký tự) và kích Next. (Giả sử bạn đang làm việc trên một máy kiểm tra riêng và
chú ý rằ
ng Visual Studio 2005 thu gọn trường Connection String một cách tự động).
6, Chấp nhận các thiết lập mặc định trên trang tiếp theo. Kích Next.
7, Mở rộng nút Stored Procedure, chọn thủ tục lưu trữ SELECTSTAFFBYDEPT và kích
Finish.
Chú ý: Bước này hơi khác hơn một chút so với một số bài đã được giới thiệu trước đây. Chúng ta
đang tạo ra một tập hợp dữ liệu từ thủ tục lưu trữ thay vì trực tiếp từ một bảng.
Bảng màu designer bây giờ tương tự như hình bên dưới. (Có thể bạn cần mở rộng
SAMPLEDataSet một cách thủ công).
8, Kéo thủ tục lưu trữ SELECTSTAFFBYDEPT từ Data Sources rồi thả xuống WinForm của
bạn. Nó sẽ tự động thêm một data grid và các phần công cụ tương tự như sau:
Bạn có thể thấy rằng, hai mảnh công cụ khác nhau được tự động tạo saukhi thực hiện chức năng
này.
9, Kích chọn lên menu kéo xuống ở bên phải công cụ Fill, chọn Label.
Chú ý: Nếu không có thực đơn kéo xuống nào bên cạnh Fill, kích chuột vào Fill, thực đơn sẽ
xuất hiện.
Thành phần toolStripLabell (trong IDE có thể được đặt tên khác đi một chút) xuất hiện:
10, Kích phải chuột lên đối tượng toolStripLabel1, chọn Properties, sau đó thay đổi từ dạng
Text sang Department Number.
11, Tạo một trường mô tả tham số đầu vào cho thủ tục lưu trữ bằng cách kích vào hộp Fill xổ
xuống và chọn Textbox.
12, Kích đúp vào Fill, bạn sẽ thấy tất cả mã đã được tạo:
Bạn có thể thấy, biến DEPTNUMB được tự động xác định kích thước (DIM) trong Visual Studio
2005.
13, Thay đổi mã sau:
Dim DEPTNUMB As Object = New Object
thành
Dim DEPTNUMB As Object = ToolstripTextBox1.Text
14, Ấn F5 để xây dựng ứng dụng. Chương trình ứng dụng mở ra.
15, Nhập mã số phòng ban hợp lệ cho bảng STAFF trong trường Department Number rồi ấn
Fill. WinForm sẽ đưa giá trị tham số trong trường Department Number vào thủ tục lưu trữ
SELECTSTAFFBYDEPT và đưa kết quả vào data grid.
Bạn có thể dùng bất kỳ tham số hợp lệ nào cho mã số phòng ban trong bảng STAFF. Nếu đưa ra
cho ứng dụng một số không có trong bảng STAFF, nó sẽ trả ra tập hợp rỗng.
Phần minh hoạ bên dưới đưa ra mã số phòng là 20 vào thủ tục lưu trữ SELECTSTAFFBYDEPT:
Tóm tắt
Trong bài này chúng tôi đã hướng dẫn các bạn cách dùng SQL/PL designer để tạo thủ tục lưu
trữ, trong đó một tham số đầu vào được dùng để thể hiện cột DEPT trong bảng STAFF. Chúng ta
đã tham khảo một số thành phần nâng cao của SQL/PL. Và designer thực hiện thủ tục với
IntelliSense móc nối lược đồ cơ sở dữ liệu cùng khả năng xuất/nhập tham số đầu vào từ bản thân
b
ảng (cả hai đều giảm được thời gian thiết kết và giúp loại bỏ các lỗi tai hại). Cuối cùng là hoạt
động của thủ tục lưu trữ trong chương trình ứng dụng được sử dụng như thế nào. Hy vọng bạn
đọc đã có được đầy đủ thông tin cơ bản về xây dựng và sử dụng thủ tục SQL/PL trong Visual
Studio 2005, làm cơ sở để tiếp tục tìm hiểu vấn đề chuyên sâu hơn trong các tài liệu nâng cao về
sau