Xây dựng ứng dụng CSDL bằng Microsoft Visual Studio 2005.
Trang 1PHẠM QUANG HOÀ
Trang 2Giới thiệu về NET.
Giới thiệu về Visual Studio 2005 và SQL Server 2005.Tạo ứng dụng tạo bằng Visual Studio 2005
Thiết kế cơ sở dữ liệu
Hiển thị dữ liệu lên lưới
Sửa đổi dữ liệu bằng hộp nhập
Lập báo các báo cáo với CrystalReports
Đóng gói và phân phối ứng dụng
Trang 3Microsoft Visual Studio 2005 là một môi trường phát
triển rất mạnh Tất cả các công việc, từ thiết kế CSDL, thiết kế giao diện hay viết mã đều có thể thực hiện trong môi trường phát triển này
Trang 4 Quản lý bộ nhớ các chương trình NET.
Bẫy lỗi và xử lý lỗi.
Bảo mật.
.NET Framework cung cấp một thư viện đầy đủ, bao phủ hầu hết các lĩnh vực như: hệ thống, giao diện, đồ hoạ, toán học, đa
phương tiện, mạng, mã hoá và bảo mật.
Hiện nay, các phiên bản NET Framework 1.1 và NET Framework 2.0 được sử dụng phổ biến Bộ cài đặt các phiên bản này có thể tải
về tại website của Microsoft.
Trang 5Microsoft NET Languages
Các ngôn ngữ lập trình NET của Microsoft bao gồm:
C# - Là một ngôn ngữ mới , cú pháp ngôn ngữ này mang nhiều đặc điểm của Java và C++.
Visual Basic NET – Là ngôn ngữ sử dụng cú pháp của Visual Basic, được thiết kế cho NET.
J#, Managed C++ – Các ngôn ngữ ít sử dụng hơn, sử dụng cú pháp của Java, C++.
Các ngôn ngữ này đều được xây dựng trên một kiến
trúc thống nhất, do đó các module chương trình có thể xây dựng bằng các ngôn ngữ khác nhau
Các ngôn ngữ NET hội tụ nhiều điểm mạnh của các
ngôn ngữ khác, đặc biệt là Java Ngoài ra còn có rất
nhiều cải tiến được đưa vào nên có thể nói đây là các ngôn ngữ tiên tiến nhất hiện nay
Trang 6Microsoft Visual Studio 2005
Microsoft Visual Studio 2005 là một môi trường phát triển rất mạnh
và được thiết kế rất tốt.
Với môi trường VS 2005, có thể thực hiện các công việc:
Thiết kế CSDL: Tốt nhất với MS SQL Server 2005.
Thiết kế giao diện ứng dụng.
Thiết kế web.
Thiết kế biểu tượng, hình ảnh.
Viết mã cho hầu hết các ngôn ngữ: VB.NET, C#, C/C++, Java, HTML, XML
Các phiên bản phổ biến của Visual Studio 2005:
Visual Studio 2005 Express Edition: Là một phiên bản nhỏ gọn nhưng khá
đầy đủ các tính năng Phiên bản này có thể tải về miễn phí từ website của Microsoft.
Visual Studio 2005 Professional Edition: Là phiên bản với đầy các đủ tính
Trang 7Tuỳ theo mục đích mà ta có thể lựa chọn các phiên bản khác nhau của MS SQL Server 2005 Tiêu biểu là:
SQL Server 2005 Express được cung cấp miễn phí, tích hợp sẵn
trong bộ cài Visual Studio 2005 Professional, hoặc có thể tải về từ website của Microsoft Phiên bản này thích hợp cho việc thử nghiệm ứng dụng, hoặc các ứng dụng chỉ chạy trên một máy với Windows XP.
SQL Server Enterprise thích hợp cho doanh nghiệp, hỗ trợ nhiều kết
nối và kế nối xa Phiên bản này chạy tốt trên hệ điều hành Windows
2003 Server, không hỗ trợ Windows XP Bộ cài của SQL Server 2005 Enterprise đặt trên một đĩa DVD, dung lượng khoảng 800MB.
Các phiên bản này có thể chạy song song với các phiên bản SQL Server cũ hơn như SQL Server 2000
Trang 8Trong bài này, tôi sẽ hướng dẫn các bạn các kỹ thuật
cơ bản và nâng cao trong việc xây dựng một ứng dụng
Để minh hoạ, chúng ta sẽ xây dựng một chương trình
cụ thể tên là Contact Me, với các tính năng chính sau:
Quản lý danh sách khách hàng, phân theo từng nhóm.
Ghi nhận thông tin trao đổi với khách hàng qua từng lần gặp.
Chương trình được xây dựng bằng ngôn ngữ VB.NET
Trang 9Khởi động môi trường phát triển Visual Studio 2005.
Vào File | New Project
Chọn Project type: Visual Basic | Windows.
Chọn Template: Windows Application.
Nhập Name: ContactMe.
Ứng dụng mẫu được tạo ra với một cửa sổ chính tên là Form1 Trong Solution Explorer, đổi tên cửa sổ này
thành MainForm
Trang 10Đổi tiêu đề cửa sổ thành Contact Me.
Thêm vào MainForm một MenuStrip và thiết kế các
chức năng như sau:
Hệ thống | Thoát.
Quản lý | Danh sách khách hàng, Ghi chú.
Nếu muốn thực hiện lệnh dùng thanh công cụ, thêm vào một ToolStrip và thiết kế các chức năng tương ứng
Trang 11Lưu tệp dưới định dạng Unicode
Ngầm định, tất cả các tệp được lưu dưới định dạng
ANSI Trong trường hợp cửa sổ có ký tự tiếng Việt có dấu, cần lưu tệp dưới định dạng Unicode
Vào File | Save MainForm.vb As
Nhấn vào mũi tên cạnh nút Save và chọn Save with
Encoding Nhấn Yes trong hộp thoại xác nhận ghi đè
Trong hộp Advanced Save Options, chọn Encoding là Unicode (UTF-8 with signature) – Codepage 65001
Nhấn OK để ghi
Trang 12Thêm một cơ sở dữ liệu vào dự án
Vào Project | Add New Item Trong hộp New New Item:
Template: SQL Database.
Name: ContactMe.mdf.
Nhấn Add để thêm, nhấn Cancel để đóng hộp
Datasource Configuration Wizard
Sau bước này, dự án đã có một CSDL tên là
ContactMe, đồng thời chuỗi kết nối tới CSDL cũng được tạo ra để sẵn sàng kết nối tới CSDL
CSDL sẽ được tự động gắn vào SQL Server khi
chương trình chạy, và được gỡ ra khi chương trình kết thúc
Trang 13Nhấn phải chuột vào Database Diagrams và chọn Add New Diagram Nhấn Yes nếu có hộp cảnh báo xuất
hiện
Nhấn Close ở hộp thoại Add Table, vì hiện thời chưa có bảng nào
Nhấn phải chuột, chọn New Table để thêm vào một
bảng Đặt tên bảng là Customers (chú ý tên số nhiều).Nhấn File | Save Diagram1 (Ctrl + S) để ghi và đặt tên
sơ đồ là ContactMe
Trang 14CustomerID int NoteTime datetime
Column Name Data Type Allow Nulls
Trang 15Tên bảng và các trường nên đặt bằng tiếng Anh.
Nếu bảng là một danh sách các sự vật, thì tên bảng là một danh từ số nhiều (tên sự vật) Ví dụ: Customers, Notes
Viết hoa chữ cái đầu của các từ trong tên
Trường khoá chính nên đặt là ID
Khoá ngoại nên đặt gồm tên bảng (số ít) và ID Ví dụ CustomerID trong bảng Notes
Kiểu dữ liệu văn bản nên chọn là nvarchar (kiểu xâu ký
tự Unicode có độ dài thay đổi)
Trang 16Nhấn phải chuột vào trường ID, chọn Set Primary Key.
Nhấn phải chuột vào ID, chọn Properties Trong hộp
Properties, mục Identity Specification:
(Is Identity): Yes
Identity Increment: 1
Identity Seed: 1Lần lượt tạo khoá chính cho tất cả các bảng
Trang 17 Nhấn chuột vào trường CustomerID trong bảng Notes.
Kéo và thả vào bảng Customers.
Trong hộp Table and Columns, kiểm tra lại các khoá Nhấn OK để xác nhận.
Để đặt quan hệ sao cho khi xoá một khách hàng, thì sẽ xoá hết toàn bộ các ghi chú liên quan:
Trong hộp Foreign Key Relationship, mục INSERT and UPDATE Specification, chọn Delete Rule là Cascade.
Trang 18Các lớp quan trọng của ADO.NET
Connection: tạo kết nối tới CSDL.
Command: thực hiện một truy vấn tới CSDL.
Parameter: Biểu diễn các tham số cho truy vấn.
DataAdapter: cầu nối để trao đổi dữ liệu giữa nguồn dữ liệu và Dataset.
Trang 19Một Dataset có thể coi như là một
CSDL trong bộ nhớ Trong Dataset
Chọn hai bảng Customers và Notes
từ Server Explorer và thả vào trong
Dataset
Sau bước này, chúng ta đã có một
Dataset chứa hai bảng Customers
và Notes
Trang 20BindingSource
Trang 21Tạo dữ liệu mẫu
Mở bảng Customers trong Server Explorer bằng cách nhấn chuột phải và chọn Show Table Data
Nhập một vài dữ liệu mẫu, chú ý trường ID tự động
tăng, không cần nhập
Trang 22Xây dựng cửa sổ hiện thị danh sách khách hàng
Chúng ta sẽ tạo một cửa sổ để hiển thị danh sách khách hàng.
Vào Project | Add Windows Form, nhập tên là CustomerListForm
và nhấn Add.
Vào Build | Rebuild Solution để dịch toàn bộ dự án.
Sau khi dịch, trong Toolbox, nhóm ContactMe Component bạn sẽ thấy xuất hiện những lớp mới của dự án.
Ở cửa sổ CustomerListForm:
Thêm đối tượng ContactMeDataset và đổi tên thành CustomersDataset.
Mở Toolbox, nhóm Data, thêm một DataGridView và đặt tên là CustomersDataGridView.
Thêm vào một đối tượng BindingSource và đặt tên là CustomersBindingSource.
Đặt thuộc tính Anchor cho CustomersDataGridView là Top, Bottom, Left, Right.
Trang 23Gắn kết dữ liệu cho các đối tượng
Bây giờ chúng ta sẽ gắn kết dữ liệu giữa Dataset và DataGridView thông qua BindingSource.
Chọn CustomersBindingSource và đặt thuộc tính DataSource là Other Data Sources | CustomerListForm List Instances | CustomersDataSet.
Đặt thuộc tính DataMember của CustomersBindingSource là Customers.
Đặt thuộc tính DataSource của CustomersDataGrid là CustomersBindingSource.
Sau khi hoàn thành các thao tác trên, trên lưới đã xuất hiện các cột tương ứng với các trường dữ liệu Chúng ta sẽ sửa lưới bằng cách nhấn phải chuột và chọn Edit Columns.
Xoá các cột không cần thiết.
Sắp xếp lại thứ tự hiện thị nếu muốn.
Sửa lại tiêu đề các cột, dùng tiếng Việt.
Đặt lại độ rộng các cột.
Trang 24Thường thì thủ tục xử lý sự kiện Load của Form đã
được sinh tự động Nếu chưa có, thêm vào đoạn mã:
Private Sub CustomerListForm_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me CustomersTableAdapter.Fill( Me CustomersDataSet.Customers)
End Sub
Trang 25Thêm lệnh hiển thị cửa sổ
Mở cửa sổ MainForm, nháy đúp vào mục menu Quản lý
| Danh sách khách hàng và cài đặt sự kiện như sau:
Chú ý: Khác với VB, trong VB.NET, tất cả các đối tượng
phải dùng toán tử new để tạo ra trước khi sử dụng.
Private Sub DanhSáchKháchHàngToolStripMenuItem_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles DanhSáchKháchHàngToolStripMenuItem.Click
Dim CustomerListForm As New CustomerListForm
CustomerListForm.ShowDialog()
End Sub
Trang 26Chạy thử và xem kết quả
Nhấn Ctrl + F5 để chạy chương trình Vào Quản lý |
Danh sách khách hàng để hiển thị cửa sổ danh sách
Trang 27Cửa sổ chi tiết khách hàng
Để thêm hoặc sửa một bản ghi, cần thiết kế một cửa sổ nhập
Thêm một cửa sổ vào dự án và đặt tên là
CustomerDetailForm
Thiết kế các cửa sổ với các hộp nhập tương ứng
Trang 28Đặt tên các đối tượng trên cửa sổ
Để dễ quản lý, tất cả các đối tượng trên cửa sổ đều
phải đặt tên có ý nghĩa, thay cho các tên ngầm định
Quy tắc chung: Tên của đối tượng là ghép giữa ý nghĩa
và kiểu Ví dụ nút OK có tên OKButton, nút Cancel có tên là CancelBtn (*)
Với các đối tượng gắn với các trường dữ liệu, tên của đối tượng là ghép giữa tên trường và kiểu đối tượng
Hộp nhập trường Name có tên: NameTextBox.
Hộp chọn trường Category có tên: CategoryComboBox.
Trang 29Gắn dữ liệu vào các đối tượng
Thêm vào cửa sổ CustomerDetailForm các đối tượng CustomerDataSet và CustomerBindingSource
Gắn nguồn dữ liệu của CustomerBindingSource là
CustomerDataSet tương tự như trong cửa sổ
CustomerListForm
Trong Properties của các đối tượng, mục
(DataBindings), gắn trường Text của các đối tượng với các trường dữ liệu tương ứng của
CustomerBindingSource
Trang 30Đổ dữ liệu vào cửa sổ CustomerDetailForm
Cửa sổ chi tiết sẽ không lấy trực tiếp dữ liệu từ
Database, mà dữ liệu được lấy từ DataSet của cửa sổ CustomerListForm
Mở mã của CustomerDetailForm, xoá thủ tục Load
được sinh sẵn
Thêm vào một Constructor mới với một tham số là
DataSource Tham số này chính là bản ghi cần sửa
Để đổ dữ liệu lên các đối tượng, dùng lệnh gán:
Me.CustomerBindingSource.DataSource = DataSource
Trang 31Chấp nhận và huỷ bỏ thay đổi
Khi người dùng nhấn nút Chấp nhận, dữ liệu được cập nhật vào DataSet
Khi người dùng nhấn nút Huỷ bỏ, dữ liệu cũ được phục hồi
Để ghi nhận thay đổi, dùng lệnh:
Me.CustomerBindingSource.EndEdit()
Để huỷ bỏ thay đổi, dùng lệnh:
Me.CustomerBindingSource.CancelEdit()
Trang 32Quy tắc để sửa như sau:
1 Kiểm tra xem danh sách có bản ghi nào không bằng
biểu thức:
Me.CustomersBindingSource.Current Is Nothing
2 Nếu có bản ghi, tạo cửa sổ chi tiết và hiển thị Dữ liệu
truyền vào cửa sổ chi tiết là bản ghi hiện thời, lấy ra bằng biểu thức:
Me.CustomersBindingSource.Current
3 Nếu kết quả trả về của hộp thoại là OK, cập nhật dữ
liệu vào database bằng lệnh:
Me.CustomersTableAdapter.Update( _
Trang 33Thêm mới một bản ghi
Quy tắc để thêm một bản ghi là:
1 Thêm mới một bản ghi trắng bằng lệnh:
Me.CustomersBindingSource.AddNew()
2 Sửa bản ghi vừa thêm mới giống như là các bản ghi đã
có sẵn
Trang 34Xoá bản ghi hiện thời
1 Kiểm tra xem có bản ghi nào không
2 Nếu có, xoá bản ghi hiện thời bằng lệnh:
Me.CustomersBindingSource.RemoveCurrent()
3 Cập nhật vào CSDL bằng lệnh:
Me.CustomersTableAdapter.Update(Me.CustomersData Set.Customers)
Trang 36Truy cập bản ghi hiện thời
Định nghĩa một thuộc tính như sau:
Private ReadOnly Property CurrentItem() As
Trang 37Hiển thị tên thay vì ID
Danh sách các ghi chú được hiển thị ngay trên cửa sổ chính Các bước thực hiện giống như danh sách khách hàng
Có một vấn đề, đó là ta không muốn hiển thị trường CustomerID mà muốn hiển thị tên khách hàng
1 Trong Solution Explorer, Mở ContactMeDataset.xsd
2 Nhấn phải chuột vào bảng Notes và chọn Configure
3 Sửa câu SQL như sau:
SELECT ID, CustomerID, (SELECT Name FROM Customers WHERE Customers.ID = CustomerID)[CustomerName], NoteTime, Note FROM dbo.Notes
4 Nhấn Finish để kết thúc Khi đó bảng Notes sẽ có thêm
trường CustomerName
Trang 38Nhập khoá ngoại như thế nào?
1 Thông thường các trường khoá ngoại được nhập thông qua các
ComboBox.
2 Ngoài DataSet và BindingSource chính, cần có DataSet và
BindingSource làm nguồn dữ liệu cho ComboBox.
3 Gắn các trường của ComboBox như sau:
DataSource: gắn với BindingSource làm nguồn dữ liệu cho ComboBox.
DisplayMember: gắn với trường cần hiển thị.
ValueMember: gắn với trường ID.
(Data Bindings) | Text: gắn với trường hiển thị của khoá ngoại.
(Data Bindings) | SelectedValue: gắn với khoá ngoại.
Chú ý: Việc đổ dữ liệu từ bản ghi hiện thời phải thực hiện sau khi nguồn dữ liệu cho ComboBox được điền.
Trang 39Đặt định dạng ngày tháng, số kiểu Việt Nam
Định dạng kiểu Anh - Mỹ có khác so với của Việt Nam,
ví dụ như tháng trước, ngày sau hay dùng dấu chấm để phân cách phần thập phân
.NET cho phép đặt định dạng cho riêng chương trình bằng lệnh:
My.Application.ChangeCulture("vi-VN")
My.Application.ChangeUICulture("vi-VN")
Các lệnh này thường được đặt trong sự kiện Startup
của MyApplication
Trang 40Lưu thông tin thiết lập như thế nào?
Khi muốn lưu các thiết lập, hoặc một thông tin nào đó
để sử dụng cho lần chạy sau, dùng tiện ích có sẵn của chương trình
1 Trong SolutionExplorer, nhấn đúp vào My Project
2 Chọn tab Settings và thêm một biến vào danh sách, ví
dụ: MyParameter
3 Khi đó có thể truy cập biến này từ đâu trong chương
trình bằng lệnh: My.Settings.MyParameter Việc ghi lại giá trị khi kết thúc chương trình và phục hồi giá trị khi bắt đầu được thực hiện tự động
Chú ý: Các thông tin này được lưu trong một tệp XML đi kèm chương trình Do đó có thể thay đổi được bằng một
Trang 41Chuỗi kết nối được lưu ở đâu
Chuỗi kết nối được lưu trong phần Settings, và do đó ta
có thể thay đổi được ngay cả khi chương trình đã được dịch
Khi bàn giao chương trình, trong trường hợp thay đổi các thông tin về SQL Server, có thể mở tệp XML lưu
các thiết lập của chương trình để sửa đổi chuỗi kết nối
Trang 42Vào File | New Project
Project Type: Setup and Deployment.
Template: Setup Project.
Đưa các tệp cần thiết vào bộ cài và dịch Kết quả thu
được một bộ cài hoàn chỉnh
Trang 43Cần cài đặt những gì cho một máy mới?
Khi đưa chương trình vào một máy mới, để chương trình có thể chạy được, cần cài đặt những thứ sau:
1 .NET Framework 2.0
2 SQL Server 2005
3 CrystalReports (trong trường hợp có báo cáo)
4 Setup của chương trình
Trang 44và làm được các chương trình đơn giản.
Ngoài ra, bài học còn cung cấp những kỹ thuật nâng
cao, mặc dù chỉ mang tính chất giới thiệu Những kỹ
thuật này phù hợp với những bạn đã có cơ bản về
Visual Studio 2005