Phân tích và thiết kế hệ thống
Khảo sát hiện trạng
Sau khi tiến hành khảo sát hiện trạng, các thông tin đ-ợc ghi nhận lại nh- sau:
* Quá trình mua hàng của khách hàng:
Khách hàng sẽ xem và chọn lựa sản phẩm, trong khi bộ phận bán hàng sẽ hỗ trợ và tư vấn chi tiết về các mặt hàng Sau khi khách hàng quyết định mua, bộ phận bán hàng sẽ lập hóa đơn, thực hiện thanh toán và giao hàng cho khách.
* Quá trình đặt hàng với nhà cung cấp:
Hằng ngày, nhân viên kiểm tra tình trạng hàng hóa và báo cáo lên ban điều hành để đưa ra quyết định đặt hàng hợp lý với nhà cung cấp.
Sau khi nhận yêu cầu đặt hàng từ công ty, nhà cung cấp sẽ tiến hành giao hàng đúng theo đơn hàng đã đặt, kèm theo bảng kê chi tiết các mặt hàng Sau đó, quá trình thanh toán và giao hàng sẽ được thực hiện.
Dựa trên các thông tin khảo sát và yêu cầu của đề tài, chúng tôi tiến hành phân tích và thiết kế hệ thống "website bán hàng" một cách chi tiết.
Biểu đồ phân cấp chức năng
Mặt hàng Đơn đặt hàng Cập nhật HĐơn Cập nhật HĐơn
Biểu đồ luồng dữ liệu
3.1 Biểu đồ luồng dữ liệu mức khung cảnh
TT MH cần tìm Hóa đơn
3.2 Biểu đồ luồng dữ liệu mức đỉnh
TT khách hàng TT NCC Đơn hàng Mặt hàng
MH c ần tì m Hóa đơn
TT MH c ần tì m TT y/c thống kê Kế t quả T h/K TT N C C TT MH C C Hóa đơn
3.3 Biểu đồ luồng dữ liệu mức d-ới đỉnh a/ Phân rã chức năng “Nhập hàng”
TT MHàng CC b/ Phân rã chức năng “Bán hàng”
Hóa đơn Cập nhật hóa đơn
Hóa đơn c/ Phân rã chức năng “Thống kê”
Mô hình thực thể liên kết
Ten DiaChi Tel Mobile Email
MaHDN MaSP DonVi SoLuong DonGia
MaSP MaHDX SoLuong DonVi DonGia
Danh sách các bảng dữ liệu
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaKH int 4 Mã KH (khoá chính)
Username Nvarchar 50 Tên đăng nhập
Pass Nvarchar 50 MËt khÈu ®¨ng nhËp
DiaChi Nvarchar 100 Địa chỉ KH
Tel nvarchar 20 Số điện thoại(có thể rỗng)
Mobile Varchar 20 Di động (có thể rỗng)
Email Varchar 50 Email KH (có thể rỗng)
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaNSX char 20 Mã NCC (khoá chính)
Diachi Nvarchar 50 Địa chỉ NCC
Tel Char 20 Số điện thoại
Mobile char 20 Di động (có thể rỗng)
Fax char 20 Fax (có thể rỗng)
Website nVarchar 50 Email (có thể rỗng)
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaNV int 4 Mãnhânviên(khoá chính)
Username Varchar 50 Tên nhân viên
Pass nvarchar 50 MËt khÈu ®¨ng nhËp
Email nvarchar 50 Điện thoại (có thể rỗng)
DienThoai nvarchar 20 Diện thoại (có thể rỗng)
Mobile Nvarchar 20 Di động (có thể rỗng)
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaSP Int 4 Mã SP (khoá chính)
MaLoaiSP Char 20 Mã loại sản phẩm
MaNSX Char 20 Mã nhà cung cấp
TenSP Nvarchar 50 Tên sản phẩm
Anh Nchar 100 Hình ảnh SP
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaLoaiSP Char 20 Mã LSP (khoá chính)
TenLoaiSP Nvarchar 50 Tên loại SP
Bảng 6: Sản phẩm trong giỏ hàng
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaSP int 4 Mã SP (khoá chính)
MaHDX Int 4 Mã HD xuất
SoLuong Int 4 Số l-ợng mua
DonVi Nchar 10 Đơn vị tính (chiếc)
Bảng 7: Tình trạng đơn hàng
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaHDX int 4 Mã HDX (khoá chính)
MaKH Int 4 Mã khách hàng
TTHoaDon int 4 Tình trạng đơn hàng
Thuộc tính Kiểu dữ liệu Độ rộng Ghi chú
MaHDN int 4 Mã HDX (khoá chính)
MaSP Int 4 Mã SP (khoá chính)
Donvi Nchar 20 Đơn vị tính (chiếc)
SoLuong Int 4 Số l-ợng nhập
Ch-ơng 2 : Các kỹ thuật và công cụ lập trình
I Giới thiệu công nghệ asp
Giới thiệu tổng quan công nghệ NET
1.1 Sự ra đời của NET
Trong lĩnh vực phát triển phần mềm, có hàng ngàn ngôn ngữ lập trình như Delphi, Java, C++, và C# với những ưu và nhược điểm riêng Mặc dù mỗi ngôn ngữ có sức mạnh riêng, việc kết hợp nhiều ngôn ngữ trong một dự án phần mềm là rất khó khăn, ví dụ như không thể sử dụng đồng thời Visual Basic và Java Sự khác biệt giữa các ngôn ngữ cũng khiến cho việc chuyển đổi sang ngôn ngữ mới tốn nhiều thời gian và chi phí, dẫn đến lãng phí và giảm chất lượng phần mềm.
Để khắc phục những hạn chế trong phát triển phần mềm, cần một cách tiếp cận tối ưu, tiết kiệm chi phí chuyển đổi và cho phép nhiều người tham gia dự án mà không cần sử dụng cùng một ngôn ngữ lập trình Đồng thời, ứng dụng cũng phải hoạt động hiệu quả trên môi trường Internet Chính vì vậy, Microsoft đã giới thiệu công nghệ phát triển phần mềm mới NET.
Microsoft NET là nền tảng phát triển ứng dụng tiên tiến nhất, mang lại phong cách lập trình đột phá cho các nhà phát triển Với khả năng tạo ra cả ứng dụng đơn lẻ và ứng dụng phân tán quy mô lớn, NET giúp rút ngắn thời gian phát triển và nâng cao chất lượng sản phẩm phần mềm Phiên bản đầu tiên của NET (v 1.0) được Microsoft ra mắt vào năm 2001.
Mỗi ngôn ngữ lập trình thường có các thư viện riêng, ví dụ như VC++ với msvcrt.dll và Visual Basic với msvbvm60.dll, chứa các hàm và thủ tục cơ bản Mặc dù chúng có ý nghĩa logic tương tự, cú pháp và cách sử dụng lại khác nhau, khiến lập trình viên không thể chuyển giao kiến thức giữa các ngôn ngữ Để giải quyết vấn đề này, Microsoft đã phát triển một bộ thư viện dùng chung, tạo thành một khung (Framework) cho phép lập trình viên xây dựng ứng dụng trên nền tảng sẵn có, đáp ứng nhu cầu phát triển ứng dụng Desktop, Network, Mobile và web.
* Các thành phần và chức năng chính trong NET Framework
Trình thực thi ngôn ngữ chung (Common Language Runtime - CLR) là thành phần quan trọng cho phép các ứng dụng được biên dịch thành file “Exe” tuân theo chuẩn ngôn ngữ chung, bất kể ngôn ngữ lập trình như C# hay VB.NET Để file exe trung gian này có thể chạy trên máy, nó cần được biên dịch thành mã máy tương ứng, và quá trình này được thực hiện nhờ vào CLR.
Thư viện lớp cơ bản (Base Class Library) là bộ sưu tập các thư viện chứa những lớp thiết yếu, phục vụ cho việc sử dụng trong tất cả các ngôn ngữ lập trình NET, bao gồm các lớp xử lý chuỗi và các lớp xử lý toán học.
+ ADO.NET: Là tập các th- viện chuyên dành cho thao tác với Cơ sở dữ liệu
+ ASP.NET: Các th- viện dành cho phát triển các ứng dụng Web (webform
+ Windows Forms: Các th- viện dành cho phát triển các ứng dụng Windows (winform)
Common Language Specification (CLS) là tiêu chuẩn quy định ngôn ngữ chung mà các chương trình viết bằng các ngôn ngữ lập trình khác nhau phải tuân theo Điều này có nghĩa là CLS cho phép biên dịch các chương trình từ nhiều ngôn ngữ khác nhau thành một ngôn ngữ thống nhất, tạo điều kiện thuận lợi cho việc tích hợp và tương tác giữa các ngôn ngữ lập trình.
Giới thiệu ASP.NET
ASP.NET là công nghệ phát triển ứng dụng web, là thế hệ kế tiếp của ASP (Active Server Page) Nó là một phần của NET Framework, cho phép tận dụng sức mạnh và tính năng của nền tảng này.
* ASP.NET cã mét sè -u ®iÓm chÝnh:
+ Có thể sử dụng để phát triển các ứng dụng web đủ mọi kích cỡ, từ ứng dụng nhỏ nhất cho đến ứng dụng toàn doanh nghiệp (Enterprise)
Ứng dụng viết bằng ASP.NET có khả năng tương thích dễ dàng với nhiều loại trình duyệt khác nhau Điều này nhờ vào việc framework tự động render mã tương ứng, giúp người dùng có trải nghiệm duyệt web mượt mà và hiệu quả.
+ Khi sử dụng bộ IDE của Visual Studio, cách thức lập trình sẽ giống hệt nh- lËp tr×nh winform
+ Truy xuất dữ liệu bằng công nghệ ADO.NET có sẵn của NET Framework
+ Chạy ứng dụng cực nhanh bởi cơ chế biên dịch và Cached
+ Có thể tăng tốc ứng dụng bằng cách Cache các điều khiển, các trang + Bảo mật v-ợt trội
+ Tốn ít dòng lệnh hơn so với ASP/PHP/Perl khi thực hiện cùng một công việc
Việc tách biệt code và giao diện không chỉ giúp dễ dàng bảo trì mà còn làm cho nội dung dễ đọc hơn Điều này nâng cao tính chuyên biệt hóa, cho phép một người tập trung vào việc lập trình phần xử lý nghiệp vụ trong khi người khác chỉ cần chú trọng vào phần giao diện.
+ ASP sử dụng ngôn ngữ lập trình VB.NET hoặc C# hoặc cả hai để phát triển ứng dụng.
ASP.NET và Web Form
3.1 Mô hình lập trình phía máy chủ
Trong thế giới web, giao tiếp giữa Client (trình duyệt) và Server (web server) diễn ra theo cơ chế "Request and Response" Cụ thể, máy khách sẽ gửi yêu cầu đến Server và sau đó Server sẽ hồi đáp lại yêu cầu đó Có hai cách tiếp cận để xử lý "request trang web" từ máy khách.
Khi máy khách yêu cầu một trang như trang abc, máy chủ sẽ đọc toàn bộ nội dung của trang và gửi trả về mà không thực hiện bất kỳ xử lý nào Máy chủ không quan tâm đến ý nghĩa bên trong của trang abc, và nội dung này sẽ được trình duyệt xử lý sau đó.
Khi máy khách yêu cầu một trang, máy chủ sẽ đọc và xử lý toàn bộ nội dung trang đó trước khi gửi kết quả về cho máy khách Kết quả trả về có thể bao gồm các phần tử HTML, câu lệnh JavaScript và định nghĩa kiểu CSS, sau đó sẽ được trình duyệt của máy khách tiếp tục xử lý như trong cách 1.
Cách 1 không cho phép xử lý dữ liệu trên server, do đó trang web không thể đọc hoặc ghi thông tin như danh sách khách hàng hay danh mục sản phẩm Phương pháp này chỉ phù hợp với các trang web đơn giản, không yêu cầu xử lý phức tạp.
Mô hình lập trình phía máy chủ cho phép xử lý thông tin trực tiếp trên server, giúp người dùng có khả năng đọc và ghi dữ liệu ngay tại đó Phương pháp này rất phù hợp cho các dự án lớn và yêu cầu tính bảo mật cao.
* D-ới đây là hình ảnh minh họa cho 2 mô hình này:
3.2 3.2 T×m hiÓu cÊu tróc trang ASP.NET
Một trang ASP.NET bao gồm cả phần giao diện ng-ời dùng và phần xử lý logic bên trong
Giao diện người dùng đóng vai trò quan trọng trong việc hiển thị thông tin và tiếp nhận dữ liệu từ người dùng, trong khi phần xử lý (lập trình) đảm nhiệm việc điều khiển tương tác của người dùng với trang web.
Giao diện người dùng bao gồm một file ngôn ngữ đánh dấu như HTML hoặc XML cùng với các server controls File này được gọi là Trang (Page) và có đuôi mở rộng là aspx.
Phần đáp ứng tương tác của người dùng với trang web được thực hiện thông qua các ngôn ngữ lập trình như Visual Basic.NET và C# Chúng ta có thể viết mã bằng bất kỳ ngôn ngữ nào được hỗ trợ bởi CLR, có thể tích hợp trực tiếp trong trang ASPX hoặc tách ra thành một file riêng File tách riêng này được gọi là file Code Behind, hay còn được biết đến gần đây với tên gọi Code file.
Code file là VB (Nếu dùng ngôn ngữ Visual Basic) hoặc CS (nếu dùng ngôn ng÷ C#)
3.3 Code behind và viết code phía Server
Các file chứa mã code trong VB.NET hoặc C# được gọi là Code file (cách gọi mới) hoặc Code behind (cách gọi cũ) Mã lệnh trong các file này thường thực hiện các tác vụ nghiệp vụ và bao gồm các câu lệnh gửi kết quả về trình duyệt, đặc biệt là phương thức write của đối tượng Response Để trả một xâu S về trình duyệt, ta sử dụng: Response.write(S) Kỹ năng sử dụng phương thức write để tạo ra các phần tử cho trình duyệt hiểu là rất quan trọng.
Các web form thường được chia thành hai phần: trang giao diện (aspx) và trang mã code (.vb; cs), nhằm đảm bảo tính chuyên môn hóa và dễ dàng bảo trì.
3.4 Tạo và sử dụng Custom Control
3.4.1 Giới thiệu User Custom Control
Thực chất của User Custom Control (UCC) chính là một "trang con", trong đó có thể chứa bất kỳ nội dung nào (trừ các thẻ
ASP.NET cho phép tạo ra các "trang con" với thẻ và , giúp chúng ta chèn chúng vào nhiều trang khác nhau Khi cần cập nhật nội dung, chỉ cần sửa đổi một lần tại UCC ban đầu Tính năng này giúp xây dựng ứng dụng nhanh chóng và dễ bảo trì hơn.
Mỗi UCC được lưu trữ trong tệp có phần mở rộng *.ascx, không thể truy cập trực tiếp từ trình duyệt mà chỉ được chèn vào các trang aspx.
3.4.2 Các b-ớc tạo User Custom control
Việc thực hiện tạo User custom control trải qua 3 b-ớc chính nh- sau: B-ớc 1: Thêm một web form vào Project hiện hành
+ Vào menu website, chọn Add new item Chọn loại Web user control + Đặt tên cho web user control
B-ớc 2: Soạn nội dung của trang
B-ớc 3: L-u lại nội dung của trang.
Các đối t-ợng trong ASP.NET
Trong bất kỳ ứng dụng nào, dù là dựa trên Winform hay Webform, việc giao tiếp giữa người dùng và các webform là điều cần thiết Chẳng hạn, cần lấy thông tin đặt hàng từ người dùng và hiển thị các thông tin hữu ích như kết quả thanh toán Để thực hiện việc truyền dữ liệu giữa các webform, ASP.NET cung cấp các điều khiển tiện lợi như đối tượng Request và Response Ngoài ra, các đối tượng Server, Application và Session cũng rất hữu ích trong quá trình xây dựng ứng dụng.
Request là một đối t-ợng của ASP.NET, nó cho phép đọc các thông tin do các trang khác gửi (Submit) đến
* Các thành phần (thuộc tính và ph-ơng thức) chính
+ Ph-ơng thức Request.QueryString.Get("Tên_Phần tử cần đọc"): Để đọc giá trị của một phần tử đ-ợc gửi theo ph-ơng thức Get (Method = "Get")
+ Ph-ơng thức Request.Form.Get("Tên_Phần tử cần đọc"): Để đọc giá trị của một phần tử đ-ợc gửi theo ph-ơng thức Post (Method = "Post")
Chú ý: Có thể dùng Request.Form.GetValues và Request.Form.GetValues để đọc
4.2 Response Object Đối t-ợng này đ-ợc dùng để gửi nội dung (một xâu) bất kỳ về cho trình duyệt
* Các thành phần (thuộc tính và ph-ơng thức) chính
+ Ph-ơng thức: Response.write() dùng để gửi giá trị biều thức truyền vào cho phía trình duyệt
+ Ph-ơng thức: Flush dùng để đ-a dữ liệu còn trong bộ đệm phía server về cho phía trình duyệt
+ Phương thức Response.Redirect(“địa chỉ URL”): Chuyển tới một trang khác
+ Dùng để tạo các đối t-ợng COM
+ Lấy thông tin về tên máy
+ ánh xạ đ-ờng dẫn ảo thành đ-ờng dẫn vật lý
* Các thành phần (thuộc tính và ph-ơng thức) chính
+ CreateObject(“COM Specification”) # ít dùng trong ứng dụng NET + MachineName: String; Trả về tên của máy tính server đang chạy
+ Mappath(“Virtual path”): Trả về đường dẫn vật lý của đường dẫn ảo t-ơng ứng
+In ratêncủamáychủhiệnhành:Response.Write(Server.MachineName); + Cho biết đ-ờng dẫn thực sự trên ổ cứng (th- mục vật lý) của trang hiện hành (trang default.aspx) : Server.Mappath(“default.aspx”);
Đường dẫn vật lý của tệp QLCB.Mdb nằm trong thư mục con "App_Data" có thể được xác định bằng cú pháp Server.MapPath("App_Data/QLCB.MDB").
Khi truy cập vào một website, người dùng có thể duyệt qua nhiều trang khác nhau Để lưu trữ thông tin về khách truy cập trong suốt phiên làm việc, có thể sử dụng các biến gọi là biến Session Biến Session cho phép mọi trang trong cùng một phiên truy xuất thông tin này.
Là đối t-ợng dùng để quản lý (tạo, đọc, ghi) các biến sesstion và một số thông số khác
+ Cú pháp để tạo biến Session nh- sau:
Session.Add("Tên_Biến","Giá trị khởi tạo");
L-u ý: Tên biến phải đặt trong cặp dấu nháy kép có thể là xâu ký tự hoặc số
+ Cú pháp để đọc giá trị của một biến sesstion nh- sau:
Session.Contents[“Tên_Biến”] hoặc dùng chỉ số: Session.Contents[i]; + Cú pháp để ghi (thay đổi) giá trị của biến session:
Session.Contents[“Tên_Biến”] =
Đối với đối tượng Session, có hai sự kiện quan trọng là On_Start và On_End, tự động được gọi khi một phiên làm việc mới được tạo ra Các sự kiện này được định nghĩa trong file Global.asax.
Dùng để quản lý các biến có phạm vi toàn ứng dụng Có tác dụng đến mọi ng-ời dùng
* Khái niệm biến toàn ứng dụng
Biến toàn ứng dụng là loại biến có tác dụng với tất cả người dùng truy cập vào website, cho phép mọi trang aspx.cs có thể truy cập vào biến này bất kể thời điểm nào.
Dùng để quản lý (Tạo, đọc, ghi) các biến có phạm vi toàn ứng dụng + Cú pháp tạo biến Application:
Application.Add(“Tên_Biến”, );
+ Truy xuất đến biến Application:
Đối tượng Application trong lập trình web cung cấp hai phương thức chính là Application.Lock() và Application.UnLock(), cho phép quản lý quyền truy cập vào các biến toàn cục Khi sử dụng Application.Lock(), các ứng dụng sẽ không thể thay đổi giá trị của các biến Application, trong khi Application.UnLock() cho phép thay đổi trở lại Ngoài ra, đối tượng này cũng có hai sự kiện quan trọng: Application_OnStart, được kích hoạt một lần duy nhất khi có yêu cầu đầu tiên, và Application_OnEND, diễn ra khi dịch vụ web dừng Mã lệnh cho các sự kiện này được lưu trữ trong file Global.asa.
Truyền dữ liệu giữa các WebPage
5.1 Truy xuất đến các phần tử bằng ph-ơng thức FindControl
Phương thức FindControl cho phép tìm kiếm và truy xuất đến một nút nhấn Khi người dùng nhấp vào nút này, một thông báo sẽ hiển thị: "Bạn đã dùng FindControl để truy xuất!"
5.2 Truy xuất đến trang gửi thông qua thuộc tính PreviousPage
Khi một trang X post (gửi) dữ liệu đến một trang Y, thì thuộc tính PreviousPage trong trang Y sẽ trỏ tới trang X Hay có thể viết hình t-ợng là: Y.PreviousPage = X.
Công nghệ ADO.NET
Khi phát triển ứng dụng web, việc xử lý nghiệp vụ, đặc biệt là quản lý cơ sở dữ liệu, là rất quan trọng Trong môi trường Microsoft NET, tất cả các ứng dụng webform và winform đều sử dụng ADO.NET (Active Data Object) để truy xuất và thao tác với cơ sở dữ liệu ADO.NET bao gồm một tập hợp các lớp trong bộ thư viện cơ sở của NET Framework, giúp các ứng dụng Windows (như C#, VB.NET) và ứng dụng web (như ASP.NET) dễ dàng tương tác với các nguồn dữ liệu.
* Mục tiêu chính của ADO.NET là:
+ Cung cấp các lớp để thao tác CSDL trong cả hai môi tr-ờng là phi kết nối (Disconected data) và kết nối (Connected data)
+ Tích hợp chặt chẽ với XML (Extensible Markup Language)
+ T-ơng tác với nhiều nguồn dữ liệu thông qua mô tả dữ liệu chung + Tối -u truy cập nguồn dữ liệu (OLE DB & SQL server)
+ Làm việc trên môi tr-ờng Internet
Các lớp của ADO.NET đ-ợc đặt trong Namespace là System.Data/ System.Data.oledb
ADO.NET có hai Provider chính để thao tác với cơ sở dữ liệu: OLE DB Provider trong System.Data.OLEDB cho phép truy xuất đến bất kỳ cơ sở dữ liệu nào hỗ trợ OLE DB, và SQL Provider trong System.Data.SQLClient chuyên dụng cho việc truy xuất dữ liệu từ SQL Server, mang lại hiệu suất nhanh hơn do không cần qua OLE DB.
Hiện nay, nhiều nhà cung cấp thứ ba như MySQL và Oracle đã cung cấp các provider cho phép ứng dụng NET truy cập vào các cơ sở dữ liệu không phải của Microsoft.
ADO.NET là một thành phần nội tại của NET framework, cho phép sử dụng đồng nhất trong các ngôn ngữ hỗ trợ NET như C# và VB.NET Điều này đảm bảo rằng các chức năng và cách sử dụng của ADO.NET không có sự khác biệt giữa các ngôn ngữ này.
6.2 Kiến trúc của ADO.NET
ADO.NET operates in both Connected and Disconnected modes The combination of Connection, Command, and DataReader facilitates operations in Connected mode, while DataAdapter, Connection, Command, and Dataset are used for Disconnected mode.
Trong chế độ Connected, mọi thao tác như sửa, xóa, hay thêm dữ liệu đều yêu cầu ứng dụng phải kết nối trực tiếp với cơ sở dữ liệu (CSDL) Ngược lại, chế độ Disconnected cho phép người dùng thực hiện các thao tác này trên đối tượng cục bộ mà không cần kết nối ngay với CSDL.
6.3 Các lớp thao tác với CSDL
Là đối t-ợng có nhiệm vụ thực hiện kết nối đến Cơ sở dữ liệu để các đối t-ợng nh- Command thao tác với CSDL thông qua Connection này
* Một số ph-ơng thức:
+ Open: Dùng để mở kết nối:
Cnn.Open(): Mở kết nối đến CSDL do ta chỉ định trong ConnectionString
+ Close(): Dùng để đóng kết nối:
+ GetSchema: Lấy thông tin về CSDL (Ví dụ tên các bảng, các tr-ờng trong bảng…)
+ State: Cho biết trạng thái kết nối (ConnectionState.Open # kết nối đã đ-ợc mở)
+ ConnectionString: Chứa các thông tin để kết nối
Để thực hiện các thao tác trên cơ sở dữ liệu như Insert, Update, Delete và Select, cần phải thông qua một kết nối đang mở.
* Một số ph-ơng thức dùng để thực thi câu lệnh SQL:
+ int ExecuteNonQuery(): Sử dụng khi CommandText ở trên thuộc dạng Insert, Delete, Update… Hàm này trả về số bản ghi bị tác động (affected)
Hàm ExecuteScalar() được sử dụng khi CommandText là câu lệnh SQL chỉ trả về một kết quả đơn, chẳng hạn như câu lệnh đếm tổng số bản ghi với cú pháp Select Count(*) Hàm này sẽ trả về giá trị của hàng và cột đầu tiên trong kết quả của truy vấn, trong khi các hàng và cột khác sẽ bị bỏ qua.
The sqlDataReader ExecuteReader() method is utilized when the CommandText is a SELECT statement This function returns an sqlDataReader object that contains the results of executing the command, typically a SELECT query.
+ XMLReader ExecuteXMLReader(): Dùng để đọc dữ liệu là một tệp XML Ph-ơng thức này chỉ áp dụng cho một số Provider (ví dụ SqlClient)
+ CommandText: Chứa câu lệnh SQL cần thực thi, ví dụ: "Select * from Employees", "Insert into Employees (….) values (….)", "Delete from Employees where …"
To specify the connection used by the Command object, the Connection property is utilized Additionally, the CommandType property indicates whether the CommandText contains a stored procedure, a table name, or an SQL statement, with its default value set to Text.
Đối tượng Command sử dụng phương thức ExecuteReader để nhận kết quả, tương tự như Recordset trong ADO, nhưng dữ liệu chỉ có thể đọc theo chiều tiến và ở chế độ Readonly.
* Một số ph-ơng thức:
Hàm Bool Read() cho phép đọc một bản ghi trong kết quả và chuyển sang bản ghi tiếp theo Hàm này trả về true khi còn dữ liệu để đọc và false khi đã hết dữ liệu.
+ DataTable: GetTableSchema() # Trả về một dataTable mô tả thông tin về DataReader nh- tên các cột
+ String: GetName(int i) # Trả về tên của cột i
+ GetInt(int i), GetString(int i),…, GetXXX(int i) # Trả về giá trị của cột i và chuyển về dạng Int, String,…
+ Boolean: HasRows cho biết là DataReader có chứa dữ liệu hay không ? + int FieldCount # Cho biết số tr-ờng (Cột) của DataReader
+ Biến DataReader –ví dụ Dr – cho phép đọc dữ liệu của từng ô (cột/ tr-ờng) của hàng hiện hành nh- sau: Dr["Tên tr-ờng"/ hoặc chỉ số]
Quản lý dữ liệu dạng bảng 2 chiều (Các hàng và các cột)
Dt=new DataTable(); hoặc Dt = new DataTable("Tên_Bảng");
* Một số ph-ơng thức:
+ DataRow NewRow() : Trả về một đối t-ợng DataRow;
+ Clear(): Xóa tất cả các dữ liệu trong DataTable
+ Columns: Là một tập hợp, quản lý toàn bộ các cột (Thêm, xóa, sửa…) của DataTable Columns lại có các ph-ơng thức để thêm/xóa cột
+ Rows: Là một tập hợp, quản lý toàn bộ các hàng trong DataTable Rows cũng có các ph-ơng thức để thêm/xóa hàng
Lớp DataSet trong System.Data là một đối tượng chứa các DataTable, dùng để lưu trữ dữ liệu tạm thời cho ứng dụng trong quá trình xử lý.
+ Tables: Chứa tất cả các bảng chứa trong Dataset
+ Tables[i] hoặc Tables[Tên_Bảng] : Tham chiếu đến một bảng cụ thể trong Dataset
6.3.6 Líp DataAdapter Đóng vai trò cầu nối / Chuyển đổi dữ liệu giữa Nguồn dữ liệu (DataSource) và các đối t-ợng thao tác dữ liệu (nh- DataSet chẳng hạn)
* Một số ph-ơng thức:
Để điền dữ liệu vào DataSet, sử dụng phương thức Fill(DataSet, Tên_Cho_DataSet) Để cập nhật dữ liệu trong DataSet hoặc DataTable và gửi ngược trở về cơ sở dữ liệu, áp dụng phương thức Update(DataSet/DataTable…).
+ SelectCommand, UpdateCommand, DeleteCommand, InsertCommand: trả về hoặc cho phép thiết lập các câu lệnh SQL để Chọn (Select), Cập nhật
(Update), Delete, Insert vào Cơ sở dữ liệu
6.4 Tìm hiểu và ứng dụng cơ chế Data Binding
ASP.NET cung cấp nhiều điều khiển để hiển thị và tiếp nhận thông tin từ người dùng, bao gồm các điều khiển cho lập trình và những điều hiển thị thông tin động Để đơn giản hóa và tăng tốc độ hiển thị thông tin động, ASP.NET giới thiệu tính năng "Data Binding" (Gắn kết dữ liệu).
Giới thiệu SQL Server 2000
Giới thiệu
SQL Server 2000 is a Relational Database Management System (RDBMS) that utilizes Transact-SQL for data exchange between client computers and SQL Server An RDBMS consists of databases, a database engine, and applications designed to manage data and various components within the system.
SQL Server 2000 is optimized to operate in very large database environments, handling data up to terabytes while simultaneously serving thousands of users It seamlessly integrates with other servers such as Microsoft Internet Information Server (IIS), E-Commerce Server, and Proxy Server.
SQL Server có 7 ấn bản (editions):
Phiên bản Enterprise của SQL Server sở hữu đầy đủ các tính năng và có khả năng hoạt động hiệu quả trên hệ thống với tối đa 32 CPU và 64GB RAM Ngoài ra, nó còn cung cấp các dịch vụ phân tích dữ liệu mạnh mẽ thông qua Analysis Services, giúp tối ưu hóa quy trình phân tích.
The Standard Edition is highly suitable for small and medium-sized businesses due to its lower cost compared to the Enterprise Edition, although it lacks some advanced features This edition operates efficiently on systems with up to 4 CPUs and 2 GB of RAM.
+ Personal: đ-ợc tối -u hoá để chạy trên PC nên có thể cài đặt trên hầu hết các phiên bản Windows, kể cả Windows 98
The Developer Edition of SQL Server includes all the features of the Enterprise Edition but is specifically designed with limitations, such as restricting the number of simultaneous connections to the server This edition is essential for individuals looking to learn SQL Server and can be installed on Windows 2000 Professional or Windows NT Workstation.
The Desktop Engine (MSDE) is a desktop-based engine that lacks a user interface, making it suitable for deploying applications on client machines It has a database size limitation of approximately 2GB.
+ Win CE: dùng cho các ứng dụng chạy trên Windows CE
+ Trial: có các tính năng của Enterprise Edition, download free, nh-ng giới hạn thời gian sử dụng
2 Các thành phần quan trọng trong SQL Server 2000
SQL Server 2000 is composed of several components, including the Relational Database Engine, Analysis Services, and English Query When these components work together, they form a comprehensive solution that simplifies data storage and analysis.
2.1 Relational Database Engine (cái lõi của SQL Server) Đây là một engine có khả năng chứ a data ở các quy mô khác nhau d-ới dạng table và support, tất cả các kiểu kết nối (data connection) thông dụng của Microsoft nh- ActiveX Data Object (ADO), OLE DB và Open Database Connectivity (ODBC) Ngoài ra, nó còn có khả năng tự điều chỉnh (tune up), ví dụ nh- sử dụng thêm các tài nguyên (resource) của máy khi cần và trả lại tài nguyên cho hệ điều hành khi một user log off
2.2 Replication (Replica-Cơ chế tạo bản sao)
Khi bạn cần tạo một database báo cáo giống hệt như database chính để tránh ảnh hưởng đến hiệu suất của server chính, việc sử dụng cơ chế replication của SQL Server là cần thiết Điều này giúp đảm bảo rằng dữ liệu giữa hai database luôn được đồng bộ và cập nhật thường xuyên, từ đó đảm bảo tính chính xác cho các báo cáo mà bạn thực hiện Hệ thống sao lưu và khôi phục không phù hợp trong trường hợp này, vì vậy replication là giải pháp tối ưu.
Dịch vụ chuyển dịch dữ liệu DTS là giải pháp hiệu quả cho các công ty lớn, nơi dữ liệu được lưu trữ ở nhiều định dạng và hệ thống khác nhau như Oracle, DB2, SQL Server và Microsoft Access Nếu bạn cần di chuyển dữ liệu giữa các máy chủ (migrate hay transfer) và định dạng lại dữ liệu trước khi lưu vào cơ sở dữ liệu khác, DTS sẽ giúp bạn thực hiện công việc này một cách dễ dàng.
Microsoft cung cấp dịch vụ phân tích dữ liệu mạnh mẽ, giúp người dùng dễ dàng trích xuất thông tin hữu ích từ cơ sở dữ liệu Công cụ này sử dụng khái niệm hình khối nhiều chiều và kỹ thuật đào mỏ dữ liệu, mang lại hiệu quả cao trong việc phân tích và khai thác dữ liệu.
Là dịch vụ giúp cho việc truy vấn data bằng tiếng anh (plain English)
Dịch vụ này hỗ trợ việc quản lý và xử lý meta data một cách dễ dàng hơn Meta data là thông tin mô tả cấu trúc của dữ liệu trong cơ sở dữ liệu, chẳng hạn như loại dữ liệu (string hay integer) và việc xác định cột nào là khóa chính Mặc dù những thông tin này được lưu trữ trong cơ sở dữ liệu, chúng được phân loại riêng biệt với dữ liệu nguồn, vì vậy được gọi là meta data.
Là cuốn sách hữu dụng và không thể thiếu mà Microsoft đã đính kèm theo SQL Server
Là bộ công cụ cho ng-ời quản trị cơ sở dữ liệu (DBA) Có thể kể đến một vài công cụ sau:
+ Đầu tiên là Enterprise Manager Đây là một công cụ cho ta thấy toàn cảnh hệ thống cơ sở dữ liệu một cách rất trực quan
Query Analyzer là công cụ quan trọng giúp quản trị viên cơ sở dữ liệu quản lý hiệu quả hệ thống database Với khả năng thực thi ngay lập tức bất kỳ câu lệnh SQL nào, nó không chỉ đơn giản hóa quy trình quản lý mà còn hỗ trợ đắc lực trong việc debug stored procedure.
SQL Profiler là một công cụ mạnh mẽ cho phép theo dõi và ghi lại tất cả các sự kiện và hoạt động trên SQL Server, giúp quản lý và kiểm soát hiệu suất của hệ thống Dữ liệu được lưu trữ dưới dạng tệp văn bản, cung cấp thông tin hữu ích cho việc phân tích và tối ưu hóa hoạt động của SQL Server.
+ Ngoài một số công cụ trực quan nh- trên, chúng ta th-ờng hay dùng: osql và bcp (bulk copy) trong command prompt
SQL là ngôn ngữ chính được sử dụng cho các hệ quản trị cơ sở dữ liệu quan hệ, được tiêu chuẩn hóa bởi ANSI và ISO, với phiên bản mới nhất là SQL-92 Dù có nhiều ngôn ngữ khác, SQL vẫn là lựa chọn phổ biến trong các hệ thống cơ sở dữ liệu thương mại như Oracle, SQL Server, DB2 và Microsoft Access Ngôn ngữ này cho phép người dùng dễ dàng định nghĩa và thao tác với dữ liệu, nhờ vào tính khai báo và dễ sử dụng, điều này góp phần làm tăng sự phổ biến của nó.
3.1 Các ràng buộc trong các bảng dữ liệu
Structured Query Language (SQL)
SQL là ngôn ngữ chính được sử dụng cho các hệ quản trị cơ sở dữ liệu quan hệ, với tiêu chuẩn do ANSI và ISO ban hành, phiên bản mới nhất là SQL-92 Mặc dù có nhiều ngôn ngữ khác, SQL vẫn là lựa chọn phổ biến trong các hệ thống cơ sở dữ liệu thương mại như Oracle, SQL Server, DB2 và Microsoft Access Ngôn ngữ này cho phép người dùng dễ dàng định nghĩa và thao tác với dữ liệu, nhờ vào tính khai báo của nó, làm cho SQL trở nên thân thiện và dễ sử dụng.
3.1 Các ràng buộc trong các bảng dữ liệu
Ràng buộc CHECK được sử dụng để xác định các giá trị hoặc định dạng dữ liệu hợp lệ cho một cột trong cơ sở dữ liệu Mỗi cột có thể có nhiều ràng buộc CHECK khác nhau Để khai báo một ràng buộc CHECK cho cột, bạn cần sử dụng cú pháp phù hợp.
Expression là một biểu thức logic xác định giá trị hoặc khuôn dạng dữ liệu được phép Chỉ những giá trị dữ liệu làm cho expression trả về giá trị đúng mới được chấp nhận.
Ràng buộc DEFAULT được sử dụng để xác định giá trị mặc định cho một cột trong cơ sở dữ liệu Giá trị này sẽ tự động được gán khi người dùng thêm một bản ghi mà không chỉ định giá trị cho cột đó Mỗi cột chỉ có thể có một ràng buộc DEFAULT, tức là chỉ có tối đa một giá trị mặc định Để khai báo giá trị mặc định cho cột, bạn cần sử dụng cú pháp chỉ định ràng buộc DEFAULT cho cột.
Ràng buộc PRIMARY KEY được sử dụng để xác định khóa chính của bảng, đảm bảo không có giá trị trùng lặp trong các cột Giá trị của khóa chính giúp xác định duy nhất một dòng (bản ghi) trong bảng dữ liệu và không chấp nhận giá trị NULL Ràng buộc PRIMARY KEY là cơ sở cho việc đảm bảo tính toàn vẹn thực thể và toàn vẹn tham chiếu.
Để khai báo ràng buộc PRIMARY KEY, bạn cần sử dụng cú pháp chỉ định danh sách các cột nếu nó là một tập hợp từ hai cột trở lên, thực hiện ràng buộc ở mức bảng.
Thay vì sử dụng khoá chính, có thể áp dụng ràng buộc UNIQUE để đảm bảo tính toàn vẹn thực thể trong cơ sở dữ liệu Ràng buộc UNIQUE yêu cầu các giá trị dữ liệu trong một hoặc nhiều cột không được trùng lặp Để khai báo ràng buộc UNIQUE, ta sử dụng cú pháp cụ thể.
Trong một cơ sở dữ liệu, các bảng thường có mối quan hệ với nhau, được xác định bởi sự tương đồng giữa các trường Khi một hoặc nhiều cột trong bảng chứa giá trị liên kết với các trường khóa của bảng khác, chúng được gọi là ràng buộc khóa ngoại (foreign key) Các ràng buộc FOREIGN KEY hoạt động cùng với PRIMARY KEY và UNIQUE để đảm bảo tính toàn vẹn tham chiếu giữa các bảng Để khai báo khóa ngoại, ta sử dụng cú pháp nhất định.
3.2 Câu lệnh SELECT Để truy xuất dữ liệu từ các dòng và các cột của một hay nhiều bảng, khung nhìn, ta sử dụng câu lệnh SELECT Câu lệnh này có thể dùng để thực hiện phép chọn (truy xuất một tập hợp con các dòng trong một hay nhiều bảng), phép chiếu (truy xuất một tập hợp con các cột trong một hay nhiều bảng) và phép nối (liên kết các dòng trong hai hay nhiều bảng để truy xuất dữ liệu)
Cú pháp chung của câu lệnh SELECT có dạng nh- sau:
Chú ý: Các thành phần trong câu lệnh SELECT phải đ-ợc sử dụng theo thứ tự đ-ợc nên trên
Mệnh đề FROM trong câu lệnh SELECT được sử dụng để chỉ định các bảng và khung nhìn từ đó truy xuất dữ liệu Danh sách tên các bảng và khung nhìn tham gia vào truy vấn được đặt sau mệnh đề FROM, với các tên được phân cách bởi dấu phẩy.
Mệnh đề WHERE trong câu lệnh SELECT xác định các điều kiện truy xuất dữ liệu Chỉ những dòng dữ liệu thoả mãn biểu thức logic sau WHERE mới được hiển thị trong kết quả truy vấn Mệnh đề WHERE thường được sử dụng để lọc dữ liệu hiệu quả.
+ Giới hạn (BETWEEN và NOT BETWEEN)
+ Danh sách (IN, NOT IN)
+ Khuôn dạng (LIKE và NOT LIKE)
+ Các giá trị ch-a biết (IS NULL và IS NOT NULL)
+ Kết hợp các điều kiện (AND, OR)
+ Các toán tử so sánh: =, >, =, , !<
3.3 Câu lệnh INSERT Để bổ sung dữ liệu vào trong một bảng, ta sử dụng câu lệnh INSERT Dạng đơn giản nhất của câu lệnh này có cú pháp nh- sau:
Trong câu lệnh SQL, table_name đại diện cho tên bảng mà bạn muốn thao tác Số lượng giá trị được chỉ định phải tương ứng với số lượng cột trong bảng và kiểu dữ liệu của các giá trị này cần phải phù hợp với kiểu dữ liệu của các cột tương ứng.
Khi chỉ nhập dữ liệu cho một số cột trong bảng, cần chỉ định danh sách các cột cần nhập ngay sau tên bảng Cú pháp của câu lệnh INSERT trong trường hợp này như sau:
Trong trường hợp không nhập dữ liệu cho các cột, những cột này sẽ nhận giá trị mặc định (nếu có) hoặc giá trị NULL Nếu một cột không có ràng buộc DEFAULT và không cho phép giá trị NULL mà không được cung cấp dữ liệu, câu lệnh sẽ gặp lỗi.
Câu lệnh UPDATE cho phép ng-ời sử dụng thay đổi dữ liệu đã tồn tại bên trong bảng dữ liệu Câu lệnh này có cú pháp nh- sau:
Trong đó, updated_table_name là tên bảng cần cập nhật dữ liệu
Mệnh đề FROM trong câu lệnh UPDATE đ-ợc sử dụng khi cần chỉ định các điều kiện cập nhật liên quan đến các bảng khác
3.5 Câu lệnh DELETE Để xoá các bản ghi dữ liệu ra khỏi bảng dữ liệu, ta sử dụng câu lệnh DELETE có cú pháp nh- sau:
Trong đó, delete_table_name là tên bảng dữ liệu cần thao tác
Ch-ơng 3: Cài đặt hệ thống Một số giao diện của ch-ơng trình
3 Trang chi tiết sản phẩm
7 Trang h-ớng dẫn mua hàng
9 Trang đăng nhập quản trị
10 Giao diện trang quản trị bán hàng
12 Trang thống kê khách hàng
13 Trang sửa, xoá sản phẩm
14 Trang cập nhật thông tin nhân viên
15 Trang thêm hãng sản xuất