Day 03

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 318

1

1. Windows Form
▪ Controls

2. ADO.Net
▪ Data Classes

3. Reports
Link:
http://fit.hcmute.edu.vn/ArticleId/6648c7b9-bb3e-49fc-b6c5-
8667aa61fd1f/de-cuong-chi-tiet-lap-trinh-windows

2
1. Quá trình
➢ Nộp bài thu hoạch hằng ngày qua LMS
➢ Thi / báo cáo giữa kỳ
➢ Nộp kết quả trong file word, chụp màn hình kết quả với đầy đủ tên và
MSSV (khi tạo project, đặt tên Project theo cấu trúc
“MSSV_TenSV_Tên Project”)

2. Cuối kỳ:
➢ Báo cáo đồ án theo nhóm

3
➢ Cách xây dựng ứng dụng Window form sử dụng .NET FrameWork.
➢ Cách sử dụng Visual studio.NET để xây dựng ứng dụng Window form.
➢ Thêm những menu hỗ trợ vào một ứng dụng.
➢ Các tài nguyên Utilizing custom và common dialog trong một đề án
➢ Cách sử dụng Visual inheritance để xây dựng ứng dụng Window Form.
➢ Cách sử dụng Window Form để điều khiển một ứng dụng
➢ Cách tạo và mở rộng những điều khiển cho những chức năng đặc biệt.
➢ Các sự kiện từ custom control

4
▪ Trước .NET, các nhà phát triển có vài chọn lựa trong việc xây dựng
một ứng dụng Window. Họ có thể có nhiều cách đi xuống lớp API và
xây dựng một ứng dụng C hay C++ sử dụng Win32 API
▪ Microsoft Foundation Classes (MFC) là một thư viện lớp sử dụng
C++ được gói gọn trong Win32 API.
▪ Visual Basic là một công cụ phát triển ứng dụng nhanh chóng, sử
dụng một nguồn gốc của ngôn ngữ lập trình Basic cho phép mọi nhà
phát triển tạo các ứng ụng Window tương đối nhanh chóng.
▪ Tuy nhiên, các giải pháp này đều không sử dụng .NET Framework
hay CLR.
▪ Thin client không yêu cầu quá nhiều cài đặt và hình thể trước khi sử
dụng những ứng dụng của nó.
▪ Rich clients, yêu cầu một vài mẫu cài đặt và hình thể trên máy client.
Các rich client khi chạy trên client, thì chúng có thể đạt được thuận
lợi đầy đủ của môi trường và năng lượng xử lý của máy client.
▪ Vấn đề này cho phép các nhà phát triển tạo một sự tác động qua lại
và thân thiện với người dùng hơn.
5
▪ .NET Framework chứa một tầng lớp năng xuất mới gói gọn trong
Win32 API, và giống như MFC và Visual Basic
▪ Nó cho phép phát triển hiệu suất cao hơn và dễ dàng hơn của các ứng
dụng Window. Môi trường này được gọi là Windows Forms.
▪ System.Windows.Forms namespace. Đây là một namespaces
lớn chứa nhiều lớp và các namespace phụ vào, tất cả chúng
làm cho ta dễ dàng tạo các ứng dụng Window.

6
7
▪ Các ứng dụng Windows Forms bao gồm nhiều
contrrol khác nhau.
▪ Các control này có thể đơn giản như các control
Button và TextBox, hay chúng có thể tinh vi và
phức tạp hơn như các control Toolbars hay
TreeView.
▪ Các control trong Windows Forms bao gồm
những cái mà một nhà phát triển sẽ muốn tìm
trong một thư viện lớp được thiết kế cho các giao
diện người dùng đồ hoạ:

8
▪ System.Windows.Forms.Control - hành động này như lớp cơ bản cho phần lớn các
lớp trong namespace. Nó chứa chức năng cơ bản của thao tác xử lý bàn phím và
nhập từ chuột và xử lý tin nhắn window.
▪ System.Windows.Forms.ButtonBase - Lớp này hỗ trợ chức năng cơ bản của một
nút mà mọi lớp thừa hưởng sử dụng trong các cách khác nhau.
▪ System.Windows.Forms.TextBoxBase - một lần nữa, lớp này là một lớp cơ sở
được sử dụng để cung cấp chức năng và thuộc tính thông thuờng cho các lớp thừa
hưởng. Cả hai lớp TextBox và RichTextBox sử dụng chức năng cung cấp bởi
TextBoxBase.
▪ System.Windows.Forms.ScrollableControl - đây là một lớp cơ bản khác cung cấp
hỗ trợ cho các lớp thừa hưởng. Lớp này quản lý sự phát sinh và hiển thị của các
thanh cuộn đến người dùng để truy cập đến gốc của một hiển thị.
▪ System.Windows.Forms.ContainerControl - Lớp này quản lý chức năng yêu cầu
cho một control để hành động như một sự chứa đựng những control khác.
▪ System.Windows.Forms.Panel - đây là control khác có thể chứa các control thêm
vào, nhưng khác với lớp ContainerControl, nó phân loại các control một cách đơn
giản.
▪ System.Windows.Forms.Form - Đây là lớp mà phân phát với việc tạo ra và
hiển thị các cửa sổ. Lớp này có thể đuợc dùng để tạo bất kỳ loại cửa sổ nào:
standard, toolbox, borderless, even modal dialog boxes và multi-document
interfaces.
▪ System.Windows.Forms.UserControl - Đây là lớp có thể được dùng để thừa
hưởng từ việc tạo một custom control đến việc được dùng trong một nơi phức
tạp trong một ứng dụng hay tổ chức
9
▪ Custom controls là khía cạnh rất quan trọng của việc phát triển Windows
Forms.
▪ Các loại control này được gọi là ActiveX control hay UserControls
trong Visual Basic.
▪ Khái niệm cơ bản là để cho phép một nhà phát triển tạo ra chức năng
mới và/hoặc gộp các control đang tồn tại vào một control chung, control
này có thể dễ dàng sử dụng lại ở bên kia ứng dụng hay trong các đa ứng
dụng.
▪ Mọi custom controls thừa kế từ lớp
System.Windows.Forms.UserControl

10
▪ Form gồm ba loại chính:
▪ Multiple Document Interface (MDI) : hay còn gọi là MDI Form (Form
cha) cho phép trình bày các Form khác bên trong Parent Form.
▪ Form nằm trong Parent Form là Child Form
▪ Normal Form : là các form khi mở ra và không nằm trong Parent
Form.

11
▪ MDI Form: form được gọi là MDI form khi properties
IsMdiContainer được đặt là TRUE.
▪ TypeOfForm.shn

12
▪ Child Form:
▪ Là Form khi được Load, nó sẽ nằm trong vùng làm việc của MDI
Form.
▪ Để trở thành Child Form, thuộc tính MdiParent phải được khai báo
trong code (không có trong cửa sổ Properties)
▪ Kích thước và không gian hoạt động phụ thuộc vào MDI Form.

13
▪ Normal Form: là form khi load không là MDI hay Child form.
▪ Dùng Show() cho phép form chuyển sang các form mở trước đó.
▪ ShowDialog() sẽ mở dạng Modal, không cho phép chuyển sang
các form khác đang mở

14
▪ Khi có nhiều form định dạng tương tự, các form có thể được thiết
kế, tạo code và sau đó cho kế thừa vào các form khác.
▪ Ví dụ: tạo form dùng để trình bày một list các file của một folder. Khi
trình bày danh sách các mẫu tin, chỉ cần khai báo kế thừa từ Form
trên và chỉ cần thay đổi định dạng.
▪ Tạo form tên frmInherit, và 3 thành phần control như ListView,
TextBox và Button.

15
16
▪ Một form kế thừa từ form Inherite :

17
▪ Mặc định của form là hình chữ nhật, nhưng chúng có thể được
thay đổi tùy theo hình thức xuất hiện như hình tròn, ellipse
hay hình bất kỳ.
▪ Dùng thuộc tính Region và đối tượng thuộc GraphicsPath
▪ Trong namespace : System.Drawing.Drawing2D

18
19
▪ Yêu cầu:
1. Nhập số thực và ảo
2. Add, Sub, Mul
➔ Thiết giao diện
(Note: D:\HK1_2018\OOP\OOPC#\day5\Confuse)
1. Đổi tên Form trong Property panel

2. Trong phần Tools, đưa các chứa năng cần:


Button,
Text Box,
Label.
3. Vào Property đặt lại tên cho các Chức năng vừa đưa vào
4. Vì các thành phần này cũng được xem như đối tượng. Do đó
trong Property panel, ta cũng đổi lại tên đối tượng cho phù hợp
chức năng khi viết hàm
5. Ví dụ nút Set No 1, trong Property, Design , Name. ta chuyển
thành firstButton
➢ Set No2 : secondButton
➢ Add : addButton
➢ Substract: subtractButton
➢ Multify :mutiplyButton
6. Đối với Lable, ta có 3 Label:
➢ Real : realLabel
➢ Imaginary: imaginaryLabel
➢ Notice : statusLabel
7. Ta có 2 textbox:
➢ realTextBox cho phần Real
➢ imaginaryTextBox cho Imaginary

TextBo
x
➔ Code: double click/ F7/ R-Click– View code để viết hàm cho
từng chức năng
1. Lớp xữ lý dữ liệu: ComplexNumber
2. Viết hàm cho các chức năng trên Form
Ví dụ hàm cho firstButton:

Khi nhập đủ 2 số thì Lable Notice xuất hiện kết quả khi nhất
Add/Substract hay Multify
3. Hàm Main sẽ tự được tạo code để xử lý

4. Kết quả:
▪ Nhập 2, 3 và nhấn Set No 1; 4 và 7➔ Set No 2
▪ Nhấn Add

▪ Substract
▪ Form và các tính năng của Form
▪ Project: Student management
▪ Log-in page

30
▪ CheckBox :dùng cho chọn lựa Yes/No hay True/False.
▪ Thuộc tính:
Flat Style : Kiểu đường viền
Apprearance : Hình dạng của Control
Checked : Trạng thái chọn True hay False
CheckState: Trạng thái đang chọn như Checked, Unchecked và
Indeterminatte.
ThreeState : cho phép hay không 3 trạng thái trên

31
32
▪ Event :
MouseClick: Khi user điều khiển bằng click Mouse.
CheckedChanged : khi User click vào checkBox
CheckStateChanged : khi CheckState thay đổi
EnabledChanged : khi thuộc tính Enabled thay đổi từ True sang False
hay ngược lại
VisibleChanged : khi thuộc tính visible thay đổi từ True sang False hay
ngược lại.

33
▪ CheckedListBox : dùng để hiển thị danh sách phần tử mà bên
cạnh có biểu tượng CheckBox ứng với mỗi phần tử.
▪ CheckedListBox cũng có 3 trạng thái : Checked, Indeterminate(
trạng thái này dùng trong code), Unchecked.
▪ Thuộc tính :
BorderStyle : Kiểu đường viền.
Multicolumn : Trình bày danh sách gồm nhiều cột.
ColumnWidth : Chiều rộng cột.
Item : Tập các phần tử, dùng method Add hay AddRange để thêm
thành phần.

34
SelectionMode : Chọn một hay nhiều phần tử.
Sorted : True thì sẽ theo kiểu tăng dần.
SelectedItems :Trả về tập các phần tử được chọn.
SelectedItem : Gán hay lấy giá trị object ứng với phần tử đang chọn.
SelectedValue : Gán hay lấy giá trị ứng với phần tử kiểu object đang
chọn
SelectedIndex : Gán hay lấy index ứng với phần tử đang chọn.
CheckedItems : Trả về tập phần tử được check

35
36
37
▪ Events:
ItemChecked : Khi user Click vào CheckBox control
SelectedIndexChanged : Khi index của phần tử bị thay đổi.
SelectedValueChanged : khi giá trị của phần tử được thay đổi trên
control.
EnabledChanged : Khi thuộc tính Enabled đổi từ True sang False hay
ngược lại
VisibleChanged : Khi thuộc tính Visible thay đổi giá trị từ True sang
False hay ngược lại.

38
▪ RadioButton : Khi CheckBox cho phép user chọn nhiều thành
phần, thì control này chỉ cho phép chọn một trong các tùy chọn.
▪ Thuộc tính :
FlatStype : Kiểu đường viền.
Appearance : Hình dạng của control
Checked : Trạng thái chọn True /False

39
40
▪ Event :
EnabledChanged : Khi thuộc tính Enabled đổi từ True sang False hay
ngược lại
VisibleChanged : Khi thuộc tính Visible thay đổi giá trị từ True sang
False hay ngược lại.

41
▪ Menustrip
▪ Datetime picker
▪ MonthCalendar
▪ PictureBox

42
▪ MenuStrip: dùng để thiết kế Menu trên Form với các điều
khiển:
▪ ToolStripMenuItem- menu con
▪ ToolStripComboBox,
▪ ToolStripTextBox- TextBox

43
▪ AllowItemReorder : sắp xếp các phần tử trên Menu khi nhấn Alt
▪ TextDirection : chọn hình thức trình bày : nằm ngang, thẳng đứng
hay ngược
▪ Items : chứa danh sách các menu khác như ToolStripMenuItem,
ToolStripComboBox…
▪ RightToLeft : “No” trình bày từ trái sang phải.

44
▪ DateTime : tạo các thể hiện về thời gian như giờ và ngày
tháng

45
46
▪ DateTimePicker control cho phép người điều khiển làm việc
với thời gian như ngày và giờ.
▪ Thuộc tính :
▪ customFormat: định dạng do người dùng tùy biến.
▪ Format : Định dạng do hệ thống cung cấp
▪ MaxDate : 31/12/9998 là max có thể chọn
▪ Mindate : chọn giá trị nhỏ nhất của ngày tháng năm
▪ Check : True khi CheckBox sẽ check nếu ShowCheckBox xác
định là True
▪ showCheckBox: True sẽ kích hoạt chức năng CheckBox
▪ ShowUpDown: False nếu muốn theo hình thức DropDown.
▪ Value : gán hay lấy giá trị về thời gian của DateTimePicker

47
48
49
50
▪ Event :
▪ CloseUp : khi user kết thúc chọn giá trị
▪ FormatChanged : khi user thay đổi định dạng
▪ ValueChanged : khi user chọn giá trị khác với giá trị trước đó.

51
▪ MonthCalendar cho phép trình bày tương tự DateTimePicker,
cho phép user chọn giá trị thời gian như một lịch tháng và thể
hiện với các giá trị cho trước.

52
▪ Thuộc tính :
▪ FirstDayofWeek : Ngày đầu tiên mặc định là ngày khai báo trong
hệ thống.
▪ MaxDate : tối đa là 31/12/9998
▪ MinDate : chọn ra tối thiểu của lịch
▪ SelectionRange : Khoảng thời gian từ lúc bắt đầu đến kết thúc.
▪ ShowToday : True thì biểu tượng và ngày hiện tại sẽ xuất hiện.
▪ ShowTodayCircle : Đường viền ngày hiện tại
▪ ToDayDate : Gán hay lấy giá trị hiện tại

53
▪ DateChanged : Khi user dùng giá trị khác với trị trước đó.
▪ DateSelected : Khi chọn giá trị trên Control

54
▪ PictureBox control hữu dụng của C# .NET. Nó cung cấp một vùng để
chèn ảnh bất kỳ và kích cỡ có thể tùy chỉnh bằng nhiều cách khác nhau.
▪ Picturebox hỗ trợ nhiều định dạng ảnh: BMP, GIF, JPEG, EXIF, PNG
và TIFF, ICO

▪ BackgroundImage
▪ Image

55
▪ SizeMode:
▪ AutoSize - Tự động điều chỉnh kích cỡ ảnh.
▪ CenterImage - Căn giữa ảnh.
▪ Normal - Đặt góc trái phía trên của ảnh vào vị trí góc trái phía trên của
PictureBox.
▪ StretchImage - Giãn nở kích thước theo PictureBox

▪ Ví dụ: lấy file từ 1 nguồn:

56
▪ Ví dụ:

57
58
▪ ????
▪ Chuẩn bị db, tạo 1 table chứa thông tin sinh viên

59
▪ Tiếp theo???
▪ Kết nối???

▪ Thiết kế màn hình main: MenuStrip control

60
▪ Kết nối???

61
▪ Thiết kế và viết lệnh cho Add form

62
▪ Data Grid view

▪ Data Table

▪ SQL Data Adaptor

▪ SQL Command

63
Microsoft's ActiveX Data Objects

Trong các ứng dụng bên cạnh sử dụng cho các tính năng tính toán,
nó còn xây dựng cho các công việc tương tác với một cơ sở dữ liệu.
Các cơ sở dữ liệu giải quyết các mục đích truy tìm và lưu trữ dữ
liệu.
Hầu như các ứng dụng đều tương tác với một hay nhiều cơ sở dữ
liệu.
Mọi ứng dụng trong .Net đòi hỏi chức năng cơ sở dữ liệu phụ thuộc
vào ADO.NET.

64
▪ ADO.NET là một kỹ thuật truy xuất dữ liệu cho phép truy xuất
đến các dữ liệu nằm ở các nguồn khác nhau.
▪ Là một tập hợp các lớp có các service truy cập dữ liệu cho
người lập trình, cung cấp một tập hợp các thành phần
(component) để tạo các ứng dụng chia sẽ và phân phối dữ
liệu.
▪ Cho phép kết nối với các hệ thống cơ sở dữ liệu như Microsoft
SQL Server, Oracle, Ms-Access… dùng Open DataBase
Connectivety (ODBC) hay Object Linking And Embedding
Database (OLE DB).
▪ ADO.NET là một phần không thể thiếu của .Net FrameWork,
cung cấp truy vấn đến các dữ liệu quan hệ, dữ liệu XML cũng
như các dữ liệu ứng dụng.

65
▪ DataSet (một đối tượng DataSet) có thể chứa một lượng lớn dữ
liệu:
▪ Dạng bảng (đối tượng DataTable)
▪ Và mối quan hệ của chúng.(đối tượng DataRelation)
▪ Các ràng buộc (đối tượng Constraint).

trong cache bộ nhớ và sau đó có thể được xuất sang một file
bên ngoài hay một dataset khác với sự hổ trợ của XML..

66
▪ System.Data : class, interface, delegate, enumeration định
nghĩa và thực thi một phần cấu trúc ADO.NET
▪ SQL.Data.Common : các lớp được chia sẻ bởi các Data
Provider ( bộ cung cập dữ liệu)

CÁC
▪ System.Data.Design : các lớp được sử dụng tạo dataset định
kiểu tùy ý.
▪ Sytem.Data.Odbc : dataprovider .Net FrameWork cho ODBC

NAMESPACE
▪ System.Data.Oledb: dataprovider .Net FrameWork cho
OLEDB
▪ System.Data.Sql : các lớp hỗ trợ chức năng riêng biệt của
SQL server

TRONG ▪ System.Data.OracleClient : dataprovider .Net FrameWork


cho Oracle.

ADO.NET
▪ System.Data.SqlClient dataprovider .Net FrameWork cho
SQL server.
▪ System.Data.SqlTypes : các lớp cho các kiểu dữ liệu riêng
của SQL Server.

➔ Từ các namespace trên, cho thấy ADO.Net có thể làm với các
công nghệ cũ như : OLE DB và ODBC. Tuy nhiên Data Provider SQL
Server sẽ giao tiếp trực tiếp với SQL Server mà không cần thêm lớp
OLE DB (Object Linking and Embedding in Data Base)hay Open
DataBase Connectivity nên đây là một kết nối hiệu quả nhất.

67
▪ .Net FrameWork cho phép truy xuất các dữ liệu
từ máy cục bộ hay từ xa.

▪ Mô hình ADO.net và các thành phần của nó dùng


để xử lý các dữ liệu trong cơ sở dữ liệu.

▪ Hai thành phần quan trọng trong ADO.net là :


▪ Data Provider
▪ DataSets.

68
▪ DataProvider:
▪ Kết nối với một nguồn dữ liệu và hỗ trợ việc truy cập
và xử lý dữ liệu.
▪ Mỗi data provider có namespace riêng của nó.
▪ Ví dụ chúng ta sử dụng SQL Server thì dùng Data
Provider SQL Server(System.Data.SQLClient) để cho
hiệu quả truy xuất.
▪ Data Provider OLE DB hỗ trợ truy cập cho các phiên
bản củ hơn SQL Server như Access, DB 2…
▪ Trong trường hợp ứng dụng dùng nhiều cơ sở dữ liệu
đồng thời như Access và Oracle cùng lúc thì nên dùng
OLE DB cho hiệu quả truy xuất.
▪ Chức năng:
1. Cung cấp truy cập đến dữ liệu với một kết nối hiện
hành đến nguồn dữ liệu
2. Cung cấp chuyển dữ liệu qua lại và các table không
kết nối (disconnected data)

▪ DataSet: hỗ trợ việc lưu trữ dữ liệu không kết nối, độc
lập bằng một kiểu quan hệ, cập nhật dữ liệu được yêu
cầu.

69
▪ ADO thế hệ trước sử dụng cơ chế Connected
Data, trong cơ chế này, kết nối sẽ được thiết
lập khi có yêu cầu bởi ứng dụng.
▪ Kết nối sẽ duy trì cho tới khi ứng dụng được
đóng lại.
▪ Cơ chế này thể hiện điểm yếu trong bảo mật
dữ liệu cũng như làm giảm lưu lượng mạng
không cần thiết khi số lượng truy cập nhiều.
▪ Để khác phục ADO.Net giới thiệu cơ chế
DisConnected Data.

70
▪ Trong cơ chế này, kết nối đến cơ sở dữ liệu sẽ được thiết lập khi được yêu
cầu bởi ứng dụng.
▪ Một khi yêu cầu được xử lý, kết nối trên đến cơ sở dữ liệu sẽ tự động đóng
lại.
▪ Vì thế ADO.Net sẽ tiết kiệm được tài nguyên cũng như tăng cường đáng kể
cho bảo mật dữ liệu khi kết nối chỉ được duy trì trong một thời gian rất
ngắn.

71
▪ DataProvider cho SQL Server nằm trong
namespace System.Data.SqlClient.
▪ Các lớp thường dùng :
▪ Sqlcommand: thực thi các query, câu lệnh hoặc thủ tục lưu trữ SQL
▪ SlqConnection: tượng trưng cho một kết nối với cơ sở dữ liệu SQL Server.
▪ SQLDataAdapter: thể hiện cho một cầu nối giữa một dataset và nguồn dữ
liệu.
▪ SqlDataReader: Cung cấp một luồng dữ liệu chỉ hướng về phía trước
(forward only) và chỉ đọc (read-only).
▪ SqlError : Lưu trữ thông tin về các lỗi và cảnh báo SQL Server.
▪ SqlException : định nghĩa một ngoại lệ(exception) đưa ra trên một lỗi.
▪ SqlParameter : tượng trưng cho tham số lệnh.
▪ SqlTransaction : thể hiện cho một giao tác SQL Server.

72
▪ Chương trình truy xuất dữ liệu từ NorthWind.
▪ Lấy tên và họ của thành viên trong table.

73
▪ Thiết kế giao diện :
▪ Dùng ListView và Button control tạo ra giao diện

74
▪ Xác định chuỗi kết nối đến database
▪ string strCon = "Data
Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SQL Server 2000
Sample Databases\\NORTHWND.MDF;Integrated
Security=True;Connect Timeout=30;User Instance=True";
▪ Mã query để lấy dữ liệu được lưu vào trong chuỗi :
▪ string SQL = "select * from "

SQL += "Customers";
▪ Khai báo các biến kết nối và datareader :
▪ SqlConnection Con = new SqlConnection();
▪ SqlDataReader dr= null;

75
▪ Tạo kết nối và mở trong khối try-catch :
▪ try

{
SqlDataReader dr;
Con.Open();
Con.ConnectionString = strCon;
▪ Để thực thi query, đầu tiên tạo một đối tượng lệnh và sau đó tạo một
datareader bằng cách gọi ExecuteReader(); trên đối tượng lệnh trên
▪ SqlCommand Com;

Com = new SqlCommand(strSQL, Con);


dr = Com.ExecuteReader();
▪ Sau cùng khối finally sẽ được dùng để đóng các kết nối.
▪ finally

Con.Dispose();
}
76
CONNECTION
▪ Trước khi có thể tương tác với một database, ta cần thiết lập một session
hay còn gọi là một phiên làm việc với database server.
▪ Để đạt được mục đích bằng cách sử dụng một đối tượng được gọi là
Connection bản chất là một instance của lớp thực thi giao diện
System.Data.IDbConnection cho một dataprovider cụ thể nào đó.
▪ Một số lớp kết nối :
▪ ODBC // System.Data.ODBC // OdbcConnection
▪ Oracle // System.Data.Oracle.Client// OracleConnection
▪ SQL Server // System.Data.SQLServer // SQLConnection.

77
78
▪ Lớp SQL Connection được dùng để kế nối với cơ sở dữ liệu SQL Server.
▪ Một số phương thức và thuộc tính thường dùng
▪ ConnectionString : thuộc tính chỉ ra chuỗi được dùng để mở một cơ sở dữ
liệu của SQL Server
▪ State : thuộc tính chỉ trạng thái hiện hành của kết nối
▪ Close : phương thức đóng kết nối hiện hành
▪ Open : phương thức mở kết nối đến database với thược tính được cài đặc
trong ConnectionString
▪ StateChange : event xảy ra khi trạng thái kết nối thay đổi.

79
80
COMMAND
▪ Đối tượng này cho phép ta thực thi các lệnh đến dữ liệu nguồn.
▪ Một khi đã có kết nối với database, đối tượng command cho phép chứa và
thực thi các câu lệnh SQL đến database này.
▪ Nó có thể được dùng để thực thi các câu lệnh như :
▪ Update
▪ Delete
▪ Insert
▪ Select

▪ Để thực thi các câu lệnh trong SQL server, namespace


System.Data.SqlClient.SqlCommand được dùng đến.

81
82
▪ Lớp SQLCommand cho phép thực thi các lệnh đến cơ sở dữ liệu SQL
Server
▪ Các thuộc tính, phương thức và event thường dùng :
▪ CommandText : thuộc tính chỉ các lệnh đã được thực thi tại dữ liệu nguồn
▪ Connection : thuộc tính kết hợp lệnh với một kết nối
▪ CommandTimeout : phương thức chỉ ra thời gian chờ trước khi kết thúc một lệnh
và đưa ra thông báo lỗi.
▪ CommandType :phương thức trả về giá trị liên quan tới thuộc tính CommandText
▪ ExecuteNonQuery: phương thức thực hiện các câu lệnh SQL đến dữ liệu nguồn và
nhận về số lượng hàng bị tác động ví dụ Update, Delete…
▪ ExecuteReader: phương thức gởi CommandText đến Connection và trả về của
đối tượng data reader và hiển thị
▪ ExecuteScalar: phương thức thực thi các câu lệnh truy vấn và trả về 1 giá trị
đơn.

83
84
85
▪ Dataset :
▪ ADO.NET chứa dữ liệu trong DataSet cùng với mối quan hệ giữa các dữ
liệu đó.
▪ DataSet giống như một hình ảnh về database trong bộ nhớ, có thể có
nhiều DataTable và các mối quan hệ giữa chúng đại diện bởi các
DataRelation.
▪ Dataset được dùng để thể hiện và cập nhật dữ liệu có thể lấy từ nhiền
nguồn.
▪ Dataset hổ trợ cơ chế truy xuất kiểu disconnect.
▪ Các phương thức hổ trợ kiểm soát sự thay đổi hay cập nhật dữ liệu :
1. HasChanges()
2. HasErrors()
3. GetChanges()
4. AcceptChanges()
5. RejectChange()

86
▪ DataTable : Là một thành phần trong DataSet, DataTable chứa dữ
liệu của một bảng trong DataSet và thuộc lớp DataTable.
▪ DataTable bao gồm :
▪ Tập hợp Columns thuộc lớp DataColumnCollection trong đó mỗi cột là
một đối tượng thuộc lớp DataColumn.
▪ Tập hợp Rows thuộc lớp DataRowCollection trong đó mỗi dòng là một
đối tượng thuộc lớp DataRow.
▪ DataRelation : DataSet bao gồm tập hợp các table đại diện bởi các
đối tượng DataTable và quan hệ giữa các table đó đại diện bởi các đối
tượng DataRelation.

87
▪ DataAdaptor :DataAdapter được ADO.NET cung cấp như một công
cụ giúp kết nối dữ liệu của một table trong DataSet với database trên
Server.
▪ Để lấy dữ liệu cho một table trong DataSet, sử dụng phương thức
Fill()
▪ Để cập nhật dữ liệu cho DataSet, sử dụng phương thức Update().
▪ Để đọc dữ liệu, DataAdapter cùng SELECT query thông qua thuộc
tính SelectCommand.
▪ Để cập nhật dữ liệu, DataAdapter dùng các câu truy vấn UPDATE,
INSERT, DELETE thông qua các thuộc tính UpdateCommand,
InsertCommand và DeleteCommand.

88
▪ Các bước thường thấy khi sử
dụng DataAdapter như sau:
1. Tạo một đối tượng
DataAdapter.
2. Tạo Select query cho đối
tượng SelectCommand.
3. Tạo ConnectionString cho đối
tượng Connection của
DataAdapter.
4. (Có hoặc không) Tạo các đối
tượng Command cập nhật dữ
liệu.
5. Gọi phương thức Fill() để lấy
dữ liệu cho một DataSet.
6. Gọi phương thức Update()
của DataAdapter để cập nhật
dữ liệu từ DataSet.

89
ds
Datatable
dt(product)

Fill(ds, product)

Adapter

da

90
▪ Đối tượng DataGridView dùng để trình bày dữ liệu trong đối
tượng DataSet, DataTable, DataView.
▪ Dùng để định nghĩa các cột trên DataGridView Control và
thêm các control khác như: Button, TextBox, ComboBox,
CheckBox, Image, Link…

91
▪ DataSource dùng để điền dữ liệu từ đối tượng DataSet,
DataTable, DataView.

92
▪ Các ô trong DataGridView được xem như là một TextBox.
▪ Để thêm một TextBox hay một ô trong control DataGridView :
chọn Control và R-Click-Add Column.
▪ Định nghĩa lại tên cho cột.

93
▪ Thêm tên cho các trường mới.
▪ Lấy dữ liệu cho các trường mới
▪ R-Click– Edit Column
▪ Khai báo DataPropertyName tương ứng với tên cột.

94
95
96
▪ Tooltip, HelpProvider, ErrorProvider
▪ ProgressBar
▪ ListView
▪ TreeView
▪ DateTimePicker, MonthCalendar

97
▪ Tooltip : sẽ trình bày một window nhỏ cho các diễn giải ngắn
gọn khi người dùng đưa mouse vào control

98
▪ Thuộc tính :
BackColor : màu nền.
AutomaticDelay : tính bằng ms áp dụng cho 3 thuộc tính
AutoPopDelay, InitialDelay, ReshowDelay
IsBalloon : mặc định là False, nếu là True thì window có các góc
tròn.
AutoPopDelay : thời gian là ms từ khi window ToolTip xuất hiện cho
đến khi kết thúc, nếu user đưa mouse vào controls.
InitialDelay : Thời gian là ms mà window ToolTip xuất hiện từ khi
user đưa mouse vào Control
ReshowDelay : Thời gian là ms mà window ToolTip tắt từ khi user
đưa mouse ra Control.
ToolTipTitle : Chuỗi xuất hiện bên cạnh biểu tượng.
ToolTipIcon :Biểu tượng xuất hiện bên cạnh chuỗi khai báo trong
thuộc tính ToolTipTitle.

99
100
101
▪ Chúng ta có thể dùng code để thể hiện ToolTip thay vì trong
phần điều khiển Properties bằng các method sau :
SetToolTip : Khai báo chuỗi cho control tương tự thuộc tính ToolTip
on toolTip1
GetToolTip : Nhận chuỗi trã về từ thuộc tính ToolTip on toolTip1
RemoveAll : Loại bỏ các ToolTip text.

102
▪ ErrorProvider : cung cấp các giao tiếp với user các thông tin
lỗi của Control trên form.

103
▪ Thuộc tính :
Icon : Biểu tượng sẽ xuất hiện bên cạnh control
BlinkRate : thời gian là ms áp dụng cho khoảng cách giữa 2 lần nhấp
nháy.
IsBalloon : Nếu là True thì window hiển thị có các góc tròn.
BlinkStyle : default là BlinkIfDifferentError, biểu tượng chỉ nhấp nháy
khi lổi xảy ra khác với lỗi trước. Nếu để nhấp nháy liên tục
AlwaysBlink

104
105
▪ Phương Thức :
▪ SetError : Khai báo chuỗi cho control tương tự như thuộc tính
Error on ErrorProvider.
▪ GetError : Nhận chuỗi từ thuộc tính Error on ErrorProvider của
control
▪ Clear : bỏ các thông tin.

106
▪ HelpProvider : cung cấp cửa sổ trợ giúp bằng file hay URL.

107
▪ Mỗi đối tượng của HelpProvider nắm giữ tập các tham chiếu
đến các control.
▪ HelpNameSpace chứa các khai báo để kết hợp sử dụng các
file trợ giúp tương ứng với HelpProvider
▪ Ngoài ra còn sự kết hợp của phương thức SetHelpProvider và
HelpNavigator,
▪ HelpProvider thể hiện các tiện ích thông qua nút ? Hay F1.
▪ Thuộc tính HelpNameSpace chỉ định tên file trợ giúp dạng
.chm hay HTML

108
▪ Với HelpString cho phép hiện chuỗi khi user dùng nút ?
▪ Để có nút ?

109
▪ HelpNameSpace : chứa các thông tin đường dẫn như đến các
file .chm hay HTML
▪ Chọn F1 HelpProvider .
▪ Đưa đường dẫn vào HelpNameSpace.
▪ Khi F1, sẽ chạy file trong đường dẫn

110
▪ HelpKeyWord chứa chức năng giúp đở theo KeyWord
▪ Ví dụ tại TextBox PassWord khi cần Help sẽ tìm theo KeyWord
là Password

111
▪ Như vậy khi dùng nút ? Sẽ đưa ra thông báo tương ứng với
những gì được nhập trong HelpString on helpProvider1

112
▪ Phương Thức :
▪ SetHelpKeyword :Khai báo chuỗi từ khóa dùng để tìm kiếm khi
cửa sổ Help kích hoạt, tương tự thuộc tính HelpKeyword on
helpProvider1
▪ SetHelpString : Khai báo chuỗi trình bày khi người sử dụng trỏ
đến control sau khi nhấn nút ? Tương tự thuộc tính HelpString on
helpProvider1
▪ SetHelpNavigator : Khai báo được chọn khi của sổ Help kích hoạt
tương tự HelpNavigator on helpProvider1.

113
▪ PROGRESSBAR: thể hiện thời lượng đã thực hiện bằng 3 loại :
▪ Blocks : từng khối xanh từ trái qua phải
▪ Continuous : khối xanh từ trái qua phải
▪ Marquee : cuộn từng khối xanh từ trái qua phải.

114
▪ Thuộc tính :
▪ Maximum : Giới hạn phần trên của ProgressBar
▪ Minimum: Giới hạn phần dưới
▪ Value: Giá trị hiện hành đang xử lý của ProgressBar control.
▪ Style : kiểu trình bày.
▪ Step : giá trị ứng với lần nhảy khi xử lý control

115
116
▪ LISTVIEW: Dùng để trình bày phần tử dạng danh sách với
nhiều dạng khác nhau.

117
▪ Thuộc tính :
▪ AllowColumnReorder : Cho phép sắp xếp cột trên ListView ở chế
độ thực thi.
▪ CheckBoxes: Xuất hiện CheckBox bên cạnh từng phần tử của
ListView
▪ Columns: Khai báo số cột (có tiêu đề)
▪ FullRowSelect : True sẽ cho phép tô màu theo hàng của phần tử
được chọn.
▪ Group : Khai báo nhóm để phân tách loại phần tử sau khi trình
bày trên ListView
▪ Label Edit : True nếu cho phép user thay đổi chuỗi của mỗi phần
tử.
▪ LabelWrap : True thì chuỗi sẽ tự động xuống hàng khi hết chiều
dài.
▪ MultiSelect : True cho phép chọn nhiều phần tử,

118
▪ LargeImageList :Đối tượng ImageList chứa danh sách các Image
theo index từ 0--- N-1 (N là số lượng hình) dùng trong trường hợp
thuộc tính View là LargeIcon
▪ SmallImageList : tương tự trên nhưng View là SmallIcon
▪ Sorting: Asccending khi sắp xếp theo tăng dần.
▪ View: Chế độ trình bày gồm : List; Details; LargeIcon; SmallIcon;
Title.
▪ SelectedItems : Trả về danh sách các phần tử được chọn.
▪ CheckedItems : Trả về danh sách các phần tử được Check.

119
 Ví dụ : Liệt kê danh sách tập tin

120
121
▪ Chọn hình thức trình bày :

122
123
124
▪ Nhóm phần tử :

125
126
▪ Phương thức :
▪ Clear : Xóa các phần tử và cột trên ListView
▪ ArrangeIcons: Sắp xếp phần tử trình bày trên ListView theo giá
trị.

127
▪ Event :
▪ SelectedIndexChanged : Khi user thay đổi phần tử được chọn
trên ListView.
▪ ItemActivate: Khi chọn phần tử trên ListView
▪ ItemChecked: Khi Check vào CheckBox trên ListView.
▪ Ví dụ dùng ItemActivate để lấy giá trị của phần tử đang chọn.

128
▪ Sử dụng thuộc tính CheckBoxes và CheckItems trong
ListView.

129
130
▪ Điều khiển TreeView dùng để trình bày danh sách phần tử
phân theo Node- hình cây. Trong đó mỗi đối tượng TreeView
nắm giữ danh sách các Node con.

131
▪ Thuộc tính :
▪ CheckBox : cho phép CheckBox xuất hiện tại các node
▪ Nodes : Khai báo số Node và tiêu đề.
▪ FullRowSelected : True sẽ cho phép tô màu theo hàng của phần
tử được chọn.
▪ ShowLine : True sẽ cho phép đường viền đi theo các node
▪ LabelEdit: True thi user sẽ có khả năng thay đổi nhản của Node.
▪ ShowPlusMinus : True sẽ xuất hiện + và –
▪ ShowRoorLine : True sẽ cho phép xuất hiện từ gốc.
▪ ImageList : Đối tượng ImageList chứa danh sách các Image đánh
số từ 0---N-1.
▪ ImageIndex : Chỉ mục Image từ 0—N-1 tương ứng với Node.
▪ SelectImageIndex : Chỉ mục Image từ 0—N-1 tương ứng với
Node được chọn.

132
 CheckBox : cho phép CheckBox xuất hiện tại các node

133
 Nodes : Khai báo số Node và tiêu đề.

134
 ImageList : Đối tượng ImageList chứa danh sách các Image đánh số
từ 0---N-1. Đi kèm với điều khiển ImageList

135
136
▪ Phương thức :
▪ CollapseAll : Thu gọn các node lại
▪ ExpandAll : Triển Khai các node

137
▪ Event :
▪ AfterCheck : Xảy ra sau khi user check vào CheckBox.
▪ AfterCollapse: Xảy ra sau khi thu gọn các nodes
▪ AfterExpand : Xảy ra sau khi mở rộng các nodes
▪ AfterSelect : Xảy ra sau khi user click trên node
▪ BeforeCheck : Xảy ra trước khi user check vào CheckBox
▪ BeforeCollapse:
▪ BeforeExpand:
▪ BeforeSelect:
▪ Click : Xảy ra khi user click trên node
▪ DoubleClick : Xảy ra khi double-click trên node

138
▪ Ví dụ dùng AfterSelect

139
▪ RichTextBox cung cấp khả năng nhập và chỉnh sửa các đoạn
text.
▪ Control này cũng cung cấp khả năng và các đặc tính định
dạng cao hơn dạng TextBox cơ bản.
▪ Text có thể được gán trực tiếp cho Control này hay có thể
được nạp từ dạng Rich Text Format (.rtf) hay dạng văn bảng
dạng thường (.txt).
▪ Text trong Control có thể được gán ký tự hay được định dạng.

140
▪ RichTextBox cung cấp các thuộc tính giúp tùy biến và thay
đổi định dạng Text như :
▪ SelectionFont
▪ SelectionBullet
▪ SelectedText
▪ SelectionColour

▪ Ví dụ: richTextBox.cs

141
142
▪ RichTextBox cũng cung cấp các method thực hiện các chức
năng như đọc (LoadFile) và ghi file (SaveFile) dưới dạng
(.rtf) và ASCII text file.
▪ Phương thức nạp chồng Find cũng được cung cấp nhằm tìm
kiếm chuỗi hay các ký tự trong Text
▪ ví dụ:
▪ richTextBox1.cs

143
144
145
146
147
▪ Note : DialogResult : trả về các giá trị từ Dialog control hay
các hộp thoại.

148
▪ DateTime : tạo các thể hiện về thời gian như giờ và ngày
tháng

149
150
▪ DateTimePicker control cho phép người điều khiển làm việc
với thời gian như ngày và giờ.
▪ Thuộc tính :
▪ customFormat: định dạng do người dùng tùy biến.
▪ Format : Định dạng do hệ thống cung cấp
▪ MaxDate : 31/12/9998 là max có thể chọn
▪ Mindate : chọn giá trị nhỏ nhất của ngày tháng năm
▪ Check : True khi CheckBox sẽ check nếu ShowCheckBox xác
định là True
▪ showCheckBox: True sẽ kích hoạt chức năng CheckBox
▪ ShowUpDown: False nếu muốn theo hình thức DropDown.
▪ Value : gán hay lấy giá trị về thời gian của DateTimePicker

151
152
153
154
▪ Event :
▪ CloseUp : khi user kết thúc chọn giá trị
▪ FormatChanged : khi user thay đổi định dạng
▪ ValueChanged : khi user chọn giá trị khác với giá trị trước đó.

155
▪ MonthCalendar cho phép trình bày tương tự DateTimePicker,
cho phép user chọn giá trị thời gian như một lịch tháng và thể
hiện với các giá trị cho trước.

156
▪ Thuộc tính :
▪ FirstDayofWeek : Ngày đầu tiên mặc định là ngày khai báo trong
hệ thống.
▪ MaxDate : tối đa là 31/12/9998
▪ MinDate : chọn ra tối thiểu của lịch
▪ SelectionRange : Khoảng thời gian từ lúc bắt đầu đến kết thúc.
▪ ShowToday : True thì biểu tượng và ngày hiện tại sẽ xuất hiện.
▪ ShowTodayCircle : Đường viền ngày hiện tại
▪ ToDayDate : Gán hay lấy giá trị hiện tại

157
▪ DateChanged : Khi user dùng giá trị khác với trị trước đó.
▪ DateSelected : Khi chọn giá trị trên Control

158
159
160
▪ Dùng để hiện thị cũng như tính toán thời gian trong Window
form
▪ Thuộc tính :
▪ Enable : xác định Timer đang chạy
▪ Interval: xác định bằng ms giữa các khoảng thời gian đánh dấu

▪ Method :
▪ Start/Stop : bắt đầu hay dừng Timer

▪ Event :
▪ Tick : Khi giờ được trôi qua

161
162
▪ ImageList : Quản lý Image cho các điều khiển khác như :
ListView, TreeView hay ToolBar.

163
▪ Thuộc tính :
▪ Images : Tập hợp danh sách Image dạng bitmap hay icon
▪ ImageSize: Kích thước Image
▪ ví dụ thêm image vào collection

164
▪ MenuStrip: dùng để thiết kế Menu trên Form với các điều
khiển:
▪ ToolStripMenuItem- menu con
▪ ToolStripComboBox,
▪ ToolStripSeparator- gạch phân tách
▪ ToolStripTextBox- TextBox

165
▪ Thuộc tính :
▪ AllowItemReorder : sắp xếp các phần tử trên Menu khi nhấn Alt
▪ TextDirection : chọn hình thức trình bày : nằm ngang, thẳng đứng
hay ngược
▪ Items : chứa danh sách các menu khác như ToolStripMenuItem,
ToolStripComboBox…
▪ RightToLeft : “No” trình bày từ trái sang phải.

166
▪ ToolStripMenuItem : trình bày các tùy chọn trên MenuStrip

167
▪ Event :
▪ CheckedChange : khi trạng thái của CheckBox thay đổi.
▪ Click : Khi click vào Control
▪ DoubleClick : Khi click hai lần vào Control.

▪ Ví dụ khai báo và tạo đối tượng của Control:

168
▪ ToolStripComboBox : Cho phép trình bày menu như một
dạng ComboBox.

169
▪ Thuộc tính :
▪ DropDownStyle: hình thức trình bày danh sách phần tử.
▪ MaxDropDownListItem : số lượng phần tử cần thêm, mặc định
là 8 phần tử.
▪ Items : danh sách các phần tử trong Control
▪ SelectedItems : Phần tử được chọn trên control
▪ SelectedText: Text của item được chọn trên control
▪ TooltipText : Chuỗi Tip xuất hiện khi di chuột vào thành phần của
control.

170
▪ ContextMenuStrip: thiết kế dạng pop-up cho phép xuất hiện
điều khiển ToolStripMenuItem dạng shortcut khi chuột phải
vào Control hay Form.

171
▪ Thuộc tính :
▪ Items : danh sách các điều khiển như ToolStripMenuItems,
ToolStripComboBox…
▪ RightToLeft : Trình bày menu từ trái sang phải.
▪ ShowImageMargin :Che giấu hay trình bày hình ảnh.

▪ Ví dụ : tạo hai control cho Form và RichTextBox


▪ Khi R_Click vào Form
▪ R_Click vào TextBox

172
173
▪ Dialog box là một cửa sổ đặc biệt cho phép chúng ta lấy và
thể hiện các thông tin bằng cách sử dụng các loại control
khác nhau.
▪ Cho phép nhóm các thành phần có chung chức năng trong
một cửa sổ và có thể triển khai nó.
▪ Ví dụ như một Dialog thiết lập Font bao gồm các chức năng
liên quan tới Font.

174
▪ Dialog được dùng để nhập hay lấy các thông tin quan trong
khi làm việc với ứng dụng, thông thường nó gồm các thành
phần cơ bản sau :

175
▪ Vì dialog là một cửa sổ đặc biệt nên nó khác với các Form thông
thường do các đặc tính sau:
▪ Non-resizeable : Dialog thường không có khả năng resize hay
maximize và minimize.
▪ Modal type : kiểu của dialog thường la Modal, tức là nó không cho
phép người dùng chuyên focus sang các cửa sổ khác cho tới khi nó
kết thúc.
▪ Tập các Button và icon chung : Dialog thường bao gồm các nút cơ
bản như Ok, Cancel cũng như các ký hiệu Help và Close ở phần
phải trên của cửa sổ.

176
▪ Dialog Box thường được chia làm hai loại :
▪ Modal
▪ Modaless

▪ Modal dialog không cho phép user kích hoạt các cửa sổ
khác cho tới khi nó đóng.
▪ Các dialog này thường được dùng cho các mục đích lấy và
thể hiện dữ liêu quan trọng khi làm việc với ứng dụng
▪ Nó cũng được dùng khi các thông tin cần được hoàn thành
cho một thao tác nào đó.
▪ Ví dụ trong Win Word, màn hình Save As, dùng để nhập tên
file và lưu file.
▪ Trong trường hợp này ta không thể quay lại màn hình soạn
thảo văn bản cho đến khi Save As kết thức.
▪ Cửa sổ Save As là một Modal Dialog.

177
▪ Modaless dialog cho phép user focus và làm việc cùng lúc
trong cùng một ứng dụng mà không cần phải đóng Dialog.
▪ Nó cho phép chuyển giửa màn hình ứng dụng và dialog. Nó
được dùng trong các trường hợp cần thao tác các nhiệm vụ
lập lại nhiều lần.
▪ Lấy ví dụ Find and Replace dialog, có thể đồng thời tìm
kiếm các từ cần thiết và màn hình soạn thảo.

178
▪ Dialog box có thể chia làm hai loại :
▪ Common dialog là các dialog được cung cấp bởi hệ thống như
Open, Save , Print,…
▪ Custom dialog là do user tạo ra, nó hữu dụng khi các dialog hệ
thống không thỏa mãn yêu cầu công việc.

179
▪ Lớp CommonDialog là lớp cơ sở cho tất cả các dialog boxes
được định nghĩa bởi hệ thống.
▪ Nó tồn tại trong System.Windows.Forms namespace.
▪ Nó bao gồm các thuộc tính, phương thức và event sau :
▪ Tag : cho phép lấy các đối tượng chứa data của control
▪ Reset : phương thức này sẽ reset lại các thuộc tính thành default
▪ ShowDialog : chạy một dialog box
▪ HelpRequest : event này xảy ra khi nút Help được click
▪ Ví dụ :

180
▪ Colordialog cho phép chọn màu của hệ thống từ bảng màu
và cũng cho phép người dùng tự tạo ra màu sắc riêng từ các
giá trị RGB trong khoảng (0-255).

181
▪ Các thuộc tính và Phương thức :
▪ AllowFullOpen : True sẽ cho phép user định nghĩa màu.
▪ AnyColor : True thì bảng Color sẽ trình bày các màu cơ bản.
▪ Color : Màu mặc định chọn của Control
▪ CustomColor : thuộc tính này cho phép tập các màu để cho người
dùng tạo màu.
▪ ShowHelp :True thì sẽ xuất hiện nút Help.
▪ Reset : phương thức này sẽ reset lai các lựa chọn về giá trị default
của chúng.

182
▪ FontDialog cho phép lựa chọn các
loại Font chữ khác nhau được cài đặt
từ hệ thống.
▪ Cũng cho phép làm thay đổi dạng
Text trong ứng dụng.
▪ Đưa ra một danh sách các Font, kiểu
Font và kích thước Font cho người
dùng lựa chon
▪ Cũng cung cấp các hiệu ứng như
subscripts, superscript, shadow…

183
▪ Các thuộc tính và event của lớp FontDialog
▪ ShowColor : True sẽ xuất hiện bảng màu
▪ Color : đặt màu cho Font.
▪ Font : đặc loại Font chữ
▪ MaxSize/MinSize : đặt kích thước tối đa và tối thiểu.
▪ ShowApply : đặt nút Apply lên dialog box
▪ ShowEffects : đưa ra các hiệu ứng như gạch ngang text, gạch
dưới…
▪ Apply: sự kiện xảy ra khi nút Apply được Click

184
▪ Màu của Font được set là Red bằng thuộc tính Color.
▪ Kiểu Font là Verdana ,kích thước là 18
▪ Max và Min được set là 20 và 5
▪ Nút Apply sẽ xuất hiện trên dialog box.
▪ Hiệu ứng được đặt là False nên sẽ không xuất hiện

185
▪ Đây là hai thành phần được dùng nhiều trong Dialog box,
OpenFile cho phép mở file và SaveFile cho phép lưu file như
trong Win Word.

186
▪ Các thuộc tính, method và event thường gặp:
▪ CheckFileExists : True cho phép xuất hiện hộp thoại thể hiện
thông báo sự tồn tại của File.
▪ FileName : trả về chuỗi chứa tên file
▪ Filter : lọc các tập tin bằng các chuổi như : (*.txt)|*.txt|All files
(*.*)|*.* xuất hiện trong hộp thoại “Save as file type” hay “File of
type”.
▪ MultiSelect : thuộc tính cho phép chọn nhiều file
▪ Title : tiêu đề của hộp thoại
▪ OpenFile : phương thức mở file với chế độ read-only
▪ FileOk : event này xuất hiện khi nút Save/Open được click

187
188
▪ SaveFileDialog cho phép lưu thông tin đang tồn tại hay lưu
mới.
▪ Các thuộc tính, method và event thường dùng.
▪ CreatePrompt : đưa ra thông tin nhắc khi tạo file chưa tồn tại.
▪ OverwritePrompt: nhắc khi file sẽ ghi đang tồn tại.
▪ OpenFile : phương thức mở một file với read/write permission
▪ FileName : chuỗi trã về tên file.
▪ FileOk : sự kiện xảy ra khi nút Save được click

189
▪ PageSetupDialog là thành phần
được định nghĩa từ hệ thống cho
phép đặc các định dạng cho
công việc in ấn.
▪ Cung cấp các cách thức như :
canh lề, viền, headers và
footers, portrait và landscapre
cho trang cần được in. tương tự
PageSetup trong Win Word

190
▪ AllowOrientation : cho phép chọn chiều trang in, có 2 lựa
chọn là : Portrait và Lanscape
▪ AllowPrinter : Trả về giá trị cho phép enable hay disable nút
Printer
▪ Document : trả về giá trị chỉ đối tượng của lớp PrintDocument
▪ PageSettings :trả về tập giá trị chỉ khai báo các cài đặc hay
thuộc tính của trang cần in
▪ PrinterSettings : trả về tập giá trị khai báo thuộc tính của máy
tin.

191
▪ Tương tự PageSetupDialog,
PrintDialog cũng là một
dialog box được định nghĩa
bởi hệ thống
▪ Cho phép lựa chọn printer,
các trang cần in và các cài
đặt liên quan. Cung cấp các
tính năng tương tự Print
dialog box trong Win Word.

192
▪ AllowPrintToFile : trả về giá trị CheckBox cho phép chọn để
in ra thành file thay vì văn bản
▪ Document : đối tượng Document của lớp PrintDocument
được dùng để giữ thông tin cần xem trước khi in
▪ PrinterSettings : các cài đặc của printers có thể được thay đổi
bởi dialog box.
▪ PrintToFile : CheckBox cho phép chỉ định in ra file

193
▪ Control cho phép thể hiện văn
bản sẽ xuất hiện sau khi in.
▪ Control chứa các biểu tượng
cho phép in ấn, zoom, thể hiện
một hay nhiều trang và đóng
control. Tương tự chức năng
PrintReview trong Win Word.

194
▪ CancelButton : đặt nút Cancel trên PrintPreviewDialog
▪ Document : trả về đối tượng PrintDocument thể hiện
document cần review
▪ PrintPreviewControl : chỉ định sự xuất hiện của
PrintPreviewControl trên Form.

195
▪ Trong một số trường hợp, các dialog dựng sẳn của hệ thống
không phù hợp với yêu cầu của người lập trình và người dùng.
▪ Do đó, người lập trình viên cần tạo ra các dialog để thỏa mản
các yêu cầu riêng.
▪ Để làm điều này, ta có thể chuyển đổi một Form thông thường
sang một User-Defined dialog box như sau :
▪ thuộc tính FormBorderStype chuyển thành FixedDialog, có nghĩa là
chuyển border của Form thành của Dialog box.

196
▪ Các thuộc tính ControlBox, MinimizeBox và MaximizeBox
được đặt là False để cửa sổ làm việc chỉ thể hiện nút Close.
▪ Form cung cấp 2 nút là Ok và Cancel để đóng và hủy trong
dialog.
▪ Thuộc tính AcceptButton được dùng để đặt nút Ok cho dialog
box.
▪ Thuộc tính CancelButton được dùng đặt cho nút Cancel

197
198
▪ Form gọi dialog box có thể nhận thông tin từ dialog khi được
đóng lại bằng cách tham chiếu đến thuộc tính DialogResult và
thể hiện bằng cách gọi phương thức ShowDialog().
▪ Lấy ví dụ một MessageBox là một Modal dialog box, gồm có
2 nút là OK va Cancel. Khi Form cho ra một MessageBox thì
có thể biết được khi nào user click và thực thi một yêu cầu
nào đó.
▪ Ví dụ : DialogAndCustom.cs

199
▪ WinForm cung cấp nhiều control giao tiếp với user như :
CheckBox, TextBox, RichTextBox…
▪ Custom control là những control được tạo ra do user khi nhưng
control dựng sẵn không cung cấp được hay không phù hợp
cũng như tính tái sử dụng trong các ứng dụng.
▪ Các Custom control có thể được ghép lại, mở rộng, hay biến đổi
phụ thuộc vào yêu cầu.
▪ Nó có thể được tạo ra bằng kế thừa từ Control class hay
UserControl class, cũng như từ các control trong WinForm.

200
▪ Ưu điểm của custom control là một khi nó được tạo ra, nó có
thể được tái sử dụng nhiều lần trong các ứng dụng. Nó bao
gồn hai đặc tính sau:
▪ User-defined Validation :
▪ Cho phép tạo các form hợp lệ sử dụng trên các ứng dụng khác nhau.
▪ Cho phép định nghĩa các kiểu control hợp lệ khác nhau để thực thi một
công việc chuyên biệt ví dụ như TextBox chấp nhận các ký tự đặc biệt.
▪ Customized Design :
▪ Cho phép tạo ra các giao diện của CustomControl.
▪ Liên quan đến vị trí và thiết kế như thế nào trên CustomControl

201
▪ CustomControl có thể phân làm ba thành phần như sau :
▪ Composite Control được tạo ra từ sự kế thừa từ UserControl class.
Nó chứa một tập các control có sẵn của WinForm. CompositeControl
được dùng khi cân kết hợp các chức năng của các winform control.
▪ Extended Cotrol được dẫn xuất từ bất kỳ control WinForm nào ví dụ
như Button. Nó cho phép kế thừa tất cả các chức năng của WinForm
Control và sau đó mở rộng các chức năng này tùy thuộc theo yêu
cầu.
▪ Custom Control được tạo ra từ sự kế thừa lớp Control. Nó cung
cấp những control linh hoạt hơn hai loại trên. Tạo ra control loại này
khi chúng ta muôn triển khai một chứng năng rõ ràng nào đó mà
những control cơ bản không thực hiên được.

202
▪ Để tạo một custom control đơn giản có thể tạo bằng ba cách như
kế thừa từ bất kỳ control của WinForm nào hay từ Control class,
hay từ UserControl class.
▪ Khi tạo custom control bằng cách kế thừa từ các control của
WinForm thì mặc định nó sẽ lấy các đặc tính của control đó.
▪ Control class là một lớp cơ sở của tất cả các control và nó cung
cấp các chức năng cơ bản để hiển thị thông tin cho user.
▪ UserControl class là lớp cung cấp các control mà các control
này chứa các control khác.

203
204
▪ Định nghĩa Lớp : định nghĩa một lớp được dẫn xuất từ lớp
Control của namespace System.Windows.Forms.
▪ Định nghĩa thuộc tính : để thêm vào nhiều chức năng hơn.
▪ Override OnPaint() method : cho phép custom control có thể
redraw chính nó.
▪ Cung cấp các đặc tính (attributes) : để thể hiện control trong
thời gian thiết kế.
▪ Cung cấp các tài nguyên (resources)
▪ Biên dịch và triển khai (compile and deploy)

205
206
▪ UserControl class là lớp được dẫn xuất từ Control class và nó
kế thừa tất cả các thuộc tính và phương thức của Control class
nay.
▪ Thuộc tính của Control class cho phép thay đổi và làm việc với
các custom control cũng như là container.
▪ Các thuộc tính và phương thức hay gặp :
▪ Controls : thuộc tính lấy một danh sách các control xuất hiện trong
một control nào đó.
▪ Enabled : trả về giá trị khi một control đáp ứng với user
▪ Location: thuộc tính chỉ vị trí của control ứng với container của nó.
▪ Name : trả về tên của control

207
▪ Parent :chỉ ra phần parent container của control
▪ Text: thuộc tính chỉ ra text liên kết với control
▪ Invalidate : phương thức gọi phương thức OnPaint() để gởi một
paint message đến control
▪ OnPaint : Phương thức kích hoạt Paint event xảy ra khi user
redraw control

208
▪ Properties cho phép ứng dụng các thiết đặt khác nhau cho
control.
▪ Properties là một dữ liệu thành viên kiểu private (private data
members) và properties thể hiện cách user giao tiếp với custom
control.
▪ Properties chứa các đoạn mã cho phép Get và Set các giá trị
của thành viên kiểu private (private member).
▪ Set accessoter gán giá trị mới và Get accesstor trả về cho user
một thuộc tính có giá trị là value.
▪ Nó là read-only nếu chỉ có Get và ngược là write-only nếu chỉ
có Set.

209
210
211
1. Tạo lớp mang tên ExtendedControl
2. Cho kế thừa từ 1 Control của hệ thống.
3. Đưa code cần cho sự thay đổi hay thêm chức năng.
4. Biên dịch, trong ToolBar sẽ xuất hiện 1 tool mới vừa tạo, mang
tên ExtendedControl.
5. Dùng như các control bình thường khác.

212
213
▪ R_Click vào Project, chọn Add và UserControl.
▪ Thiết kế và viết code theo mong muốn.
▪ Biên dịch để xuất hiện trong Tool bar
▪ Sử dụng như các Control bình thường khác.
▪ userControl1.Controls[“label1”].Text // dùng để truy cập đến
userControl1_label1

214
215
▪ R_Click vào Project, chọn Add Item, chọn CustomControl.
▪ Vào màn hình code, viết code theo sự thay đổi
▪ Biên dịch và sử dụng.

216
217
1. Tạo Project mang tên Windows Control Library
2. Thiết kế các CustomControl.
3. Biên dịch ra Assembly

218
219
▪ Microsoft's ActiveX Data Objects
▪ Trong các ứng dụng bên cạnh sử dụng cho các tính năng tính
toán, nó còn xây dựng cho các công việc tương tác với một cơ
sở dữ liệu.
▪ Các cơ sở dữ liệu giải quyết các mục đích truy tìm và lưu trữ dữ
liệu.
▪ Hầu như các ứng dụng đều tương tác với một hay nhiều cơ sở
dữ liệu.
▪ Mọi ứng dụng trong .Net đòi hỏi chức năng cơ sở dữ liệu phụ
thuộc vào ADO.NET.

220
▪ ADO.NET là một kỹ thuật truy xuất dữ liệu cho phép truy xuất
đến các dữ liệu nằm ở các nguồn khác nhau.
▪ Là một tập hợp các lớp có các service truy cập dữ liệu cho
người lập trình, cung cấp một tập hợp các thành phần
(component) để tạo các ứng dụng chia sẽ và phân phối dữ
liệu.
▪ Cho phép kết nối với các hệ thống cơ sở dữ liệu như
Microsoft SQL Server, Oracle, Ms-Access… dùng Open
DataBase Connectivety (ODBC) hay Object Linking And
Embedding Database (OLE DB).
▪ ADO.NET là một phần không thể thiếu của .Net FrameWork,
cung cấp truy vấn đến các dữ liệu quan hệ, dữ liệu XML cũng
như các dữ liệu ứng dụng.

221
▪ DataSet (một đối tượng DataSet) có thể chứa một lượng lớn dữ
liệu:
▪ Dạng bảng (đối tượng DataTable)
▪ Và mối quan hệ của chúng.(đối tượng DataRelation)
▪ Các ràng buộc (đối tượng Constraint).

trong cache bộ nhớ và sau đó có thể được xuất sang một file
bên ngoài hay một dataset khác với sự hổ trợ của XML..
▪ Các namespace trong ADO.NET:
▪ System.Data : class, interface, delegate, enumeration định nghĩa và
thực thi một phần cấu trúc ADO.NET
▪ SQL.Data.Common : các lớp được chia sẻ bởi các Data Provider (
bộ cung cập dữ liệu)

222
▪ System.Data.Design : các lớp được sử dụng tạo dataset định kiểu
tùy ý.
▪ Sytem.Data.Odbc : dataprovider .Net FrameWork cho ODBC
▪ System.Data.Oledb: dataprovider .Net FrameWork cho OLEDB
▪ System.Data.Sql : các lớp hỗ trợ chức năng riêng biệt của SQL
server
▪ System.Data.OracleClient : dataprovider .Net FrameWork cho
Oracle.
▪ System.Data.SqlClient dataprovider .Net FrameWork cho SQL
server.
▪ System.Data.SqlTypes : các lớp cho các kiểu dữ liệu riêng của
SQL Server.
▪ Từ các namespace trên, cho thấy ADO.Net có thể làm với các
công nghệ cũ như : OLE DB và ODBC. Tuy nhiên Data
Provider SQL Server sẽ giao tiếp trực tiếp với SQL Server mà
không cần thêm lớp OLE DB (object linking and embedding
in data base)hay Open DataBase Connectivity nên đây là một
kết nối hiệu quả nhất.

223
▪ .Net FrameWork cho phép truy xuất các dữ liệu từ máy cục
bộ hay từ xa.
▪ Mô hình ADO.net và các thành phần của nó dùng để xử lý các
dữ liệu trong cơ sở dữ liệu.
▪ Hai thành phần quan trọng trong ADO.net là :
▪ Data Provider
▪ DataSets.

224
▪ DataProvider:
▪ Kết nối với một nguồn dữ liệu và hỗ trợ việc truy cập và xử lý dữ
liệu.
▪ Mỗi data provider có namespace riêng của nó.
▪ Cơ bản mỗi Provider là một phần thực thi của các giao diện cơ
bản trong System.Data được dùng cho một nguồn dữ liệu riêng
biệt.
▪ Ví dụ chúng ta sử dụng SQL Server thì dùng Data Provider SQL
Server(System.Data.SQLClient) để cho hiệu quả truy xuất.
▪ Data Provider OLE DB hỗ trợ truy cập cho các phiên bản củ hơn
SQL Server như Access, DB 2…
▪ Trong trường hợp ứng dụng dùng nhiều cơ sở dữ liệu đồng thời
như Access và Oracle cùng lúc thì nên dùng OLE DB cho hiệu
quả truy xuất.
▪ Chức năng:
1. Cung cấp truy cập đến dữ liệu với một kết nối hiện hành đến
nguồn dữ liệu
2. Cung cấp chuyển dữ liệu qua lại và các table không kết nối
(disconnected data)

▪ DataSet: hỗ trợ việc lưu trữ dữ liệu không kết nối, độc lập
bằng một kiểu quan hệ, cập nhật dữ liệu được yêu cầu.
225
▪ ADO thế hệ trước sử dụng cơ chế Connected
Data, trong cơ chế này, kết nối sẽ được thiết
lập khi có yêu cầu bởi ứng dụng.
▪ Kết nối sẽ duy trì cho tới khi ứng dụng được
đóng lại.
▪ Cơ chế này thể hiện điểm yếu trong bảo mật
dữ liệu cũng như làm giảm lưu lượng mạng
không cần thiết khi số lượng truy cập nhiều.
▪ Để khác phục ADO.Net giới thiệu cơ chế
DisConnected Data.

226
▪ Trong cơ chế này, kết nối đến cơ sở dữ liệu sẽ được thiết lập khi được yêu
cầu bởi ứng dụng.
▪ Một khi yêu cầu được xử lý, kết nối trên đến cơ sở dữ liệu sẽ tự động đóng
lại.
▪ Vì thế ADO.Net sẽ tiết kiệm được tài nguyên cũng như tăng cường đáng kể
cho bảo mật dữ liệu khi kết nối chỉ được duy trì trong một thời gian rất
ngắn.

227
▪ DataProvider cho SQL Server nằm trong namespace
System.Data.SqlClient.
▪ Các lớp thường dùng :
▪ Sqlcommand: thực thi các query, câu lệnh hoặc thủ tục lưu trữ SQL
▪ SlqConnection : tượng trưng cho một kết nối với cơ sở dữ liệu SQL Server.
▪ SQLDataAdapter : thể hiện cho một cầu nối giữa một dataset và nguồn dữ
liệu.
▪ SqlDataReader : Cung cấp một luồng dữ liệu chỉ hướng về phía trước
(forward only) và chỉ đọc (read-only).
▪ SqlError : Lưu trữ thông tin về các lỗi và cảnh báo SQL Server.
▪ SqlException : định nghĩa một ngoại lệ(exception) đưa ra trên một lỗi.
▪ SqlParameter : tượng trưng cho tham số lệnh.
▪ SqlTransaction : thể hiện cho một giao tác SQL Server.

228
▪ Chương trình truy xuất dữ liệu từ NorthWnd.
▪ Lấy tên và họ của thành viên trong table.

229
▪ Thiết kế giao diện :
▪ Dùng ListView và Button control tạo ra giao diện

230
▪ Xác định chuỗi kết nối đến database
▪ string strCon = "Data
Source=.\\SQLEXPRESS;AttachDbFilename=C:\\SQL Server 2000
Sample Databases\\NORTHWND.MDF;Integrated
Security=True;Connect Timeout=30;User Instance=True";
▪ Integrated Security=True : xác định Windows Authentication, do đó bất
kỳ user nào đăng nhập vào Windows đều dùng được database
SQLEXPRESS.
▪ Mã query để lấy dữ liệu được lưu vào trong chuỗi :
▪ string SQL = "select * from "

SQL += "Customers";
▪ Khai báo các biến kết nối và datareader :
▪ SqlConnection Con = new SqlConnection();
▪ SqlDataReader dr= null;

231
▪ Tạo kết nối và mở trong khối try-catch :
▪ try

{
SqlDataReader dr;
Con.Open();
Con.ConnectionString = strCon;
▪ Để thực thi query, đầu tiên tạo một đối tượng lệnh và sau đó tạo một
datareader bằng cách gọi ExecuteReader(); trên đối tượng lệnh trên
▪ SqlCommand Com;

Com = new SqlCommand(strSQL, Con); dr =


Com.ExecuteReader();
▪ Sau cùng khối finally sẽ được dùng để đóng các kết nối.
▪ finally

Con.Dispose();
}
232
▪ Truy tìm các hàng trong tập hợp kết quả bằng phương thức Read()
của datareader.
▪ ListView sẽ được thiết kế cho xuất hiện phù hợp với yêu cầu :

233
▪ Trước khi có thể tương tác với một database, ta cần thiết lập một session
hay còn gọi là một phiên làm việc với database server.
▪ Để đạt được mục đích bằng cách sử dụng một đối tượng được gọi là
Connection bản chất là một instance của lớp thực thi giao diện
System.Data.IDbConnection cho một dataprovider cụ thể nào đó.
▪ Một số lớp kết nối :
▪ ODBC // System.Data.ODBC // OdbcConnection
▪ Oracle // System.Data.Oracle.Client// OracleConnection
▪ SQL Server // System.Data.SQLServer // SQLConnection.

234
235
▪ Lớp SQL Connection được dùng để kế nối với cơ sở dữ liệu SQL
Server.
▪ Một số phương thức và thuộc tính, event thường dùng
▪ ConnectionString : thuộc tính chỉ ra chuỗi được dùng để mở một cơ sở dữ
liệu của SQL Server
▪ State : thuộc tính chỉ trạng thái hiện hành của kết nối
▪ Close : phương thức đóng kết nối hiện hành
▪ CreateCommand : phương thức tạo và trả về đối tượng của SQLCommand
,đối tượng này liên kết đến SQLConnection
▪ Open : phương thức mở kết nối đến database với thược tính được cài đặc
trong ConnectionString
▪ StateChange : event xảy ra khi trạng thái kết nối thay đổi.

236
237
▪ Đối tượng này cho phép ta thực thi các lệnh đến dữ liệu nguồn.
▪ Một khi đã có kết nối với database, đối tượng command cho phép chứa và
thực thi các câu lệnh SQL đến database này.
▪ Nó có thể được dùng để thực thi các câu lệnh như :
▪ Update
▪ Delete
▪ Insert
▪ Select

▪ Để thực thi các câu lệnh trong SQL server, namespace


System.Data.SqlClient.SqlCommand được dùng đến.

238
239
▪ Lớp SQLCommand cho phép thực thi các lệnh đến cơ sở dữ liệu SQL
Server
▪ Các thuộc tính, phương thức và event thường dùng :
▪ CommandText : thuộc tính chỉ các lệnh đã được thực thi tại dữ liệu nguồn
▪ Connection : thuộc tính kết hợp lệnh với một kết nối
▪ CommandTimeout : phương thức chỉ ra thời gian chờ trước khi kết thúc một lệnh
và đưa ra thông báo lỗi.
▪ CommandType :phương thức trả về giá trị liên quan tới thuộc tính CommandText
▪ ExecuteNonQuery : phương thức thực hiện các câu lệnh SQL đến dữ liệu nguồn
và nhận về số lượng hàng bị tác động ví dụ Update, Delete…
▪ ExecuteReader : phương thức gởi CommandText đến Connection và trả về của
đối tượng data reader và hiển thị
▪ ExecuteScalar : phương thức thực thi các câu lệnh truy vấn và trả về 1 giá trị
đơn.

240
241
242
243
244
▪ Dataset :
▪ ADO.NET chứa dữ liệu trong DataSet cùng với mối quan hệ giữa các dữ
liệu đó.
▪ DataSet giống như một hình ảnh về database trong bộ nhớ, có thể có
nhiều DataTable và các mối quan hệ giữa chúng đại diện bởi các
DataRelation.
▪ Dataset được dùng để thể hiện và cập nhật dữ liệu có thể lấy từ nhiền
nguồn.
▪ Dataset hổ trợ cơ chế truy xuất kiểu disconnect.
▪ Các phương thức hổ trợ kiểm soát sự thay đổi hay cập nhật dữ liệu :
1. HasChanges()
2. HasErrors()
3. GetChanges()
4. AcceptChanges()
5. RejectChange()

245
▪ DataTable : Là một thành phần trong DataSet, DataTable chứa dữ
liệu của một bảng trong DataSet và thuộc lớp DataTable.
▪ DataTable bao gồm :
▪ Tập hợp Columns thuộc lớp DataColumnCollection trong đó mỗi cột là
một đối tượng thuộc lớp DataColumn.
▪ Tập hợp Rows thuộc lớp DataRowCollection trong đó mỗi dòng là một
đối tượng thuộc lớp DataRow.
▪ DataRelation : DataSet bao gồm tập hợp các table đại diện bởi các
đối tượng DataTable và quan hệ giữa các table đó đại diện bởi các đối
tượng DataRelation.

246
▪ DataAdaptor :DataAdapter được ADO.NET cung cấp như một công
cụ giúp kết nối dữ liệu của một table trong DataSet với database trên
Server.
▪ Để lấy dữ liệu cho một table trong DataSet, sử dụng phương thức
Fill()
▪ Để cập nhật dữ liệu cho DataSet, sử dụng phương thức Update().
▪ Để đọc dữ liệu, DataAdapter cùng SELECT query thông qua thuộc
tính SelectCommand.
▪ Để cập nhật dữ liệu, DataAdapter dùng các câu truy vấn UPDATE,
INSERT, DELETE thông qua các thuộc tính UpdateCommand,
InsertCommand và DeleteCommand.

247
▪ Trong các đối tượng Command của DataAdapter, chỉ có đối tượng
SelectCommand là bắt buộc, các đối tượng còn lại đều có thể tự động
được phát sinh. Các bước thường thấy khi sử dụng DataAdapter như
sau :
1. Tạo một đối tượng DataAdapter.
2. Tạo Select query cho đối tượng SelectCommand.
3. Tạo ConnectionString cho đối tượng Connection của DataAdapter.
4. (Có hoặc không) Tạo các đối tượng Command cập nhật dữ liệu.
5. Gọi phương thức Fill() để lấy dữ liệu cho một DataSet.
6. Gọi phương thức Update() của DataAdapter để cập nhật dữ liệu từ
DataSet.

248
249
▪ Thiết kế một ứng dụng có các chức năng sau:
▪ Thêm record
▪ Chỉnh sữa record
▪ Xóa
▪ Các nút Navigation

250
251
▪ Thiết kế trên Form chính các control sau:
▪ Label
▪ TextBox
▪ Button

▪ Để tạo ra giao diện sau :

252
▪ Kiểu string chứa data source và câu lệnh truy vấn.
▪ Kiểu string trả về các records được lấy từ các TextBox và kiểm
tra các operations(hoạt động như một flag) khi thêm hay thay
đổi record.
▪ Đối tượng của các lớp:
▪ SQLConnection
▪ SQLCommand
▪ SQLDataReader

▪ Phương thức :
▪ DisplayResult() : dùng để thể hiện nội dung, dùng GetString : đối
với dạng ký tự; GetInt32 : đối với dạng số.
▪ ClearControl(): xóa trắng các textbox
▪ DisableControl(): đưa các Button Control về trạng thái false.

▪ Dùng các lệnh SQL : Select, Update,Delete,Insert.

253
254
▪ DataAdapter được dùng để kết nối một DataSet với một nguồn
dữ liệu.
▪ Trong khi đó DataSet là tập hợp các nguồn dữ liệu được thể hiện
dưới dạng Table.
▪ DataAdapter Classes
▪ DataReader
▪ DataSets
▪ DataTables

255
▪ Đối tượng DataSet là thành phần chính trong cấu trúc không kết
nối cơ sở dữ liệu.
▪ Sử dụng phương thức Update của đối tượng SqlDataAdapter để
cập nhật dữ liệu nguồn.
▪ Các thuộc tính :
▪ DataSetName
▪ Tables
▪ Count
▪ CaseSensitive.

256
▪ DataSetName : cho phép gán hay lấy ra tên của đối tượng
DataSet hiện hành.
▪ Khai báo và khởi tạo DataSet :
▪ DataSet ds = new DataSet (“DataSetName”); // ds sẽ có tên là
DataSetName
▪ DataSet ds = new DataSet(); // ds sẽ có tên là NewDataSet.
▪ Ví dụ : dùng DataGridView và Label,Button thiết kế chương trình
sau :

257
258
▪ DataTables: DataSet là container để chứa các thành phần đối
tượng DataTable.
▪ Để truy cập các đối tượng DataTable, dùng thuộc tính Tables.
▪ Để thêm đối tượng dùng phương thức Add
▪ Ví dụ :
▪ Query đến 2 table Customer và Orders.
▪ Dùng thuộc tính Tables để lấy đối tượng DataTable trong DataSet.

259
260
▪ Count: trả về số đối tượng DataTable hiện hữu trong DataSet.

261
▪ CaseSensitive : dùng để phân biệt chữ Hoa và Thường khi
thuộc tính này đặt là True.

262
▪ Một số phương thức :
▪ GetChanges : phương thức trả về đối tượng DataSet gồm danh
sách các đối tượng DataTable chứa các mẫu tin thay đổi, thêm
mới.

263
▪ AcceptChanges: dùng khi chấp nhận sự thay đổi cơ sở dữ
liệu.
▪ RejectChanges: khi không chấp nhận sự thay đổi trên cơ sở
dữ liệu.
▪ Clear: xóa trống các cơ sở dữ liệu.

264
▪ WriteXML :cho phép ghi dữ liệu dưới dạng file XML.
▪ ReadXML: đọc file XML và đưa vào đối tượng DataSet.

265
▪ Đối tượng DataTable cũng là một thành phần chính trong cấu trúc
không kết nối.
▪ Là thành phần cơ bản trong đối tượng DataSet.
▪ Các thuộc tính :
▪ TableName
▪ Rows
▪ Columns
▪ DataSet
▪ ChildRelations
▪ ParentRelation
▪ Constraints

▪ Các phương thức :


▪ GetChanges
▪ AcceptChanges
▪ RejectChange
▪ Clear
▪ Clone
▪ …

266
▪ Thuộc tính Rows:
▪ Trả về tập đối tượng DataRow bao gồm các record đang chứa
trong đối tượng DataTable.
▪ Ví dụ:

267
▪ Thuộc tính Columns:
▪ Trả về tập đối tượng DataColumn bao gồm danh sách các cột dữ
liệu của table

268
▪ Dùng phương thức Add, đưa dữ liệu vào.

269
270
▪ Phương thức Clone: cho phép copy cấu trúc một table mà
không cần tạo

271
272
273
▪ Đối tượng DataView dùng để trình bày dữ liệu trong DataTable
dưới hình thức sắp xếp, lọc, tìm kiếm, hiệu chỉnh,
▪ Là thể hiện của lớp System.Data.DataView.
▪ Phản ánh các thay đổi về nội dung cũng như thứ tự.
▪ Khai báo
▪ DataView dataView

▪ Khởi tạo:
▪ dataView = new DataView(dataTable);
▪ dataView= new DataView(dataTable,
sortFilter,sortString,DataViewRowState);
▪ dataView= new DataView();

274
▪ Ví dụ : tạo Form với chức năng đưa ra nội dung table và sort
và filter theo điều kiện đơn giản

275
276
▪ DataView cung cấp các thuộc tính như:
▪ AllowDelete
▪ AllowEdit
▪ AllowNew
▪ Count
▪ RowFilter
▪ Sort
▪ Table
▪ …

277
▪ AllowDelete : cho phép xóa record khỏi đối tượng DataView.
▪ AllowEdit: chỉnh sửa dữ liệu trong DataView
▪ AllowNew: tạo mới record.
▪ Ba thuộc tính trên đều có giá trị Bool.
▪ Ví dụ : tạo Form trong đó
▪ Cho phép xóa
▪ Chỉnh sửa
▪ Tạo mới

278
▪ Tạo mới :

279
▪ Tùy chỉnh : trong trường hợp ta cho tùy chỉnh là False sẻ
không cho thay đổi dữ liệu.

280
▪ Xóa record : trong trường hợp ta có thể không cho phép
thêm mới và có thể xóa record

281
282
▪ Count : Trả về số lượng record đang làm việc.

283
▪ Thuộc tính RowFilter cho phép lọc dữ liệu tương tự như
Where trong câu truy vấn SQL.
▪ Ví dụ : tạo form
▪ Trình bày dữ liệu
▪ Filter dữ liệu.

284
285
▪ Thuộc tính Sort cho phép sắp xếp theo thứ tự của cột dữ liệu.
▪ Ví dụ tạo form sắp xếp theo thứ tự
▪ Nếu tăng thì từ khóa là ASC
▪ Giảm là DESC.

286
287
▪ AddNew : cho phép thêm record vào đối tượng DataView

288
289
▪ Phương thức Delete cho phép xóa record theo chỉ mục.

290
291
▪ Đối tượng DataGridView dùng để trình bày dữ liệu trong đối
tượng DataSet, DataTable, DataView.
▪ Dùng để định nghĩa các cột trên DataGridView Control và
thêm các control khác như: Button, TextBox, ComboBox,
CheckBox, Image, Link…

292
▪ DataSource dùng để điền dữ liệu từ đối tượng DataSet,
DataTable, DataView.

293
▪ Thuộc tính CurrentRow: trả về record hiện hành.

294
▪ CurrentCell: trả về giá trị cột hiện hành.

295
▪ Count Row và Column:

296
▪ SelectionChanged: khi có sự thay đổi trên dữ liệu trình bày
khi đưa con trỏ vào.

297
▪ DoubleClick: tương tự SelectionChanged, event này xảy ra
khi nhấp double-click vào ô bất kỳ.

298
▪ Trong DataGridView có thể thêm các control để việc trình bày
được đa dạng:
▪ TextBox
▪ Button
▪ ComboBox
▪ Image
▪ Link
▪ CheckBox

299
▪ Các ô trong DataGridView được xem như là một TextBox.
▪ Để thêm một TextBox hay một ô trong control DataGridView :
chọn Control và R-Click-Add Column.
▪ Định nghĩa lại tên cho cột.

300
▪ Thêm tên cho các trường mới.
▪ Lấy dữ liệu cho các trường mới
▪ R-Click– Edit Column
▪ Khai báo DataPropertyName tương ứng với tên cột.

301
302
▪ Tương tự có thể thêm ComboBox vào DataGridView bằng
cách chọn Type trong AddColumn là
DataGridViewComboBoxColumn
▪ Lấy cột City của ví dụ trên để minh họa

303
304
▪ Thêm Button thì tương tự chọn Type là
DataGridViewButtonColumn

305
306
▪ Chọn Type là DataGridViewCheckBox

307
308
▪ DataBinding là kỹ thuật được dùng để lấy và cập nhật các record
thông qua các Control.
▪ Có thể triển khai DataBinding để lấy hay cập nhật record đơn
hay nhiều record cùng lúc.
▪ Thành phần BindingSource trong Window Form được dùng để tối
ưu hóa các quy trình của liên kết dữ liệu (data binding).
▪ Simple binding là quá trình kết hợp các thuộc tính của Control
đến một giá trị đơn
▪ Complex binding liên quan đến nhiều thành phần cùng lúc trong
dữ liệu nguồn.

309
▪ Trong lập trình Window form, mối liên
kết giữa các Control và các Table trong
cơ sở dữ liệu là data binding.
▪ DataBinding là một trong các đặc tính
mạnh mẽ của .Net và Window Form.
▪ Giúp liên kết các Control đến các dữ
liệu nguồn như là các Table trong cơ sở
dữ liệu.
▪ Hỗ trợ View, Insert, Update, Search và
Delete các record trong table.

310
▪ DataBinding cho phép tạo liên kết giữa các control trong
Form đến DB.
▪ Một khi kết nối được thiết lập, control có thể lấy dữ liệu từ DB.
▪ Các Records này thường được lấy thông qua DataSet hay
DataTable

311
▪ Ví dụ :
▪ Tạo TextBox
▪ Liên kết với SQL database table

312
▪ BindingSource là một thành
phần dùng để đơn giản hóa
các quá trình liên kết dữ liệu.
▪ Hoạt động như là một dữ liệu
nguồn cho các Control bằng
cách đưa dữ liệu đến nó và
cập nhật cơ sở dữ liệu.

313
▪ Class SqlCommandBuilder: tự động tạo ra các lệnh liên quan
đến table, được dùng để làm cho khớp các thay đổi tại
DataSet.
▪ SqlCommandBuilder dùng để tạo câu update, insert, delete (tạo
ngầm) khi cần thao tác trên DataGridView, nó nhận một adapter mà
adapter làm tham số. Và thi hành Adaptor có nhận câu lệnh SQL

314
▪ Các thuộc tính BindingSource:
▪ Count: trả vế số lượng record trong danh sách hiện hành
▪ Current: trả về đối tượng hiện hành trong danh sách
▪ Position : vị trí hiện hành của record

315
▪ Phương thức:
▪ Add: thêm thành phần vào trong danh sách hiện hữu.
▪ MoveFirst, MoveLast,MovePrevisous,MoveNext: di chuyển đến các thành
phần trong danh sách

316
▪ Event:
▪ PositionChanged : xảy ra khi có sự thay đổi về vị trí các thành phần.

317
▪ Thêm mới record bằng phương thức Update:

318

You might also like