1. Trang chủ
  2. » Luận Văn - Báo Cáo

MICROSOFT PROFESSIONAL PROGRAMMING FOR REAL LIFE

120 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Microsoft Professional Programming For Real Life
Tác giả Phạm Tuấn Anh
Trường học Công Ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
Chuyên ngành Lập trình .NET (C#)
Thể loại Tài liệu hướng dẫn
Định dạng
Số trang 120
Dung lượng 2,66 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Toơn tүp giƠo trình nơy lơ kӁt quҥ cөa sӳ cô đӏng nhӱng kiӁn thӫc cần thiӁt giúp bңn lơm chө nӃn tҥng .NET cho công viӉc. Chúng tôi đã đúc kӁt nhӱng kinh nghiӉm thӳc tӁ, rút gӏn nhӱng điӃm cần lưu Ứ, nhӱng kỹ thuүt mơ hầu hӁt cƠc công ty phần mӃm phƠt triển ӫng dӧng trên nӃn tҥng .NET đӃu yêu cầu thӳc hiӉn. HѪn nӱa đây còn lơ tơi liӉu mơ bңn có thể sӯ dӧng để ôn tүp lңi nhӱng kiӁn thӫc sau nhӱng giӟ lên lớp vơ đặc biӉt trong công viӉc cөa cƠc bңn. Xuất thân từ một nhơ phƠt triển, chuyên gia phân tích hӉ thống, tôi đã gói nhӱng kiӁn thӫc cốt lõi vơ cần thiӁt nhất trong lүp trình trên công nghӉ .NET vơo tơi liӉu nơy. Nhӱng ví dӧ trong tơi liӉu lơ nhӱng ví dӧ thӳc tӁ đưӥc tôi trích lӏc từ nhӱng dӳ Ơn mơ tôi vơ đồng sӳ đã thӳc hiӉn trong suốt thӟi gian tham gia lơm viӉc tơi nhiӃu công ty phần mӃm lớn, đó lơ cƠc tình huống cӧ thể mơ chúng tôi gặp phҥi, vơ giӟ đây tôi tổng kӁt lңi để giới thiӉu đӁn cƠc bңn như một sӳ chia sẻ kinh nghiӉm. Sau thӟi gian lơm viӉc vơ hoңt động trên mңng thông tin ViӉt Nam - www.itgate.com.vn - đã có nhiӃu ngưӟi bңn lơm viӉc tңi cƠc công ty tin hӏc trong nước cũng như cƠc bңn bè cөa tôi trên mңng gӡi email, hỏi đƠp vơ yêu cầu tôi viӁt một tơi liӉu đầy đө vӃ lүp trình .NET, chia sẻ nhӱng kinh nghiӉm thӳc tӁ trong công viӉc để mӏi ngưӟi cùng tham khҥo, phҥi ngắn gӏn vơ thүt sӳ thӳc tӁ nhưng lңi phҥi chuyên sâu vơ thể hiӉn nhӱng kỹ thuүt cao trong lүp trình. Tôi đã nghĩ vӃ nhӱng yêu cầu đó, vơ quyӁt đӍnh viӁt tơi liӉu nơy vơo mỗi buổi tối sau giӟ lơm viӉc. Đây như một món quơ đƠp lңi sӳ tín nhiӉm, yêu mӁn mơ cƠc bңn đã, đang vơ sẽ dơnh cho tôi. Tôi rất mong nhүn đưӥc nhiӃu Ứ kiӁn đóng góp cөa cƠc bңn cho tơi liӉu nơy, vơ tôi sẽ tổng hӥp lңi để cүp nhүt cho tơi liӉu một tốt hѪn. Tôi mong rằng tơi liӉu nơy sẽ đồng hơnh cùng cƠc bңn trong công viӉc. TƠc giҥ

Trang 1

MICROSOFT NET (C#) PROFESSIONAL PROGRAMMING FOR REAL LIFE

Trang 2

L I NG

Toơn t p giƠo trình nơy lơ k t qu c a s cô đ ng nh ng ki n th c cần thi t giúp

b n lơm ch n n t ng NET cho công vi c Chúng tôi đã đúc k t nh ng kinh nghi m

th c t , rút g n nh ng đi m cần lưu Ứ, nh ng kỹ thu t mơ hầu h t cƠc công ty phần m m phƠt triển ng d ng trên n n t ng NET đ u yêu cầu th c hi n H n n a đây còn lơ tơi li u mơ b n có thể s d ng để ôn t p l i nh ng ki n th c sau

nh ng gi lên lớp vơ đặc bi t trong công vi c c a cƠc b n

Xuất thân từ một nhơ phƠt triển, chuyên gia phân tích h thống, tôi đã gói nh ng

ki n th c cốt lõi vơ cần thi t nhất trong l p trình trên công ngh NET vơo tơi

li u nơy Nh ng ví d trong tơi li u lơ nh ng ví d th c t đư c tôi trích l c

từ nh ng d Ơn mơ tôi vơ đồng s đã th c hi n trong suốt th i gian tham gia lơm

vi c tơi nhi u công ty phần m m lớn, đó lơ cƠc tình huống c thể mơ chúng tôi gặp ph i, vơ gi đây tôi tổng k t l i để giới thi u đ n cƠc b n như một s chia

sẻ kinh nghi m

Sau th i gian lơm vi c vơ ho t động trên m ng thông tin Vi t Nam - www.itgate.com.vn - đã có nhi u ngư i b n lơm vi c t i cƠc công ty tin h c trong nước cũng như cƠc b n bè c a tôi trên m ng g i email, hỏi đƠp vơ yêu cầu tôi

vi t một tơi li u đầy đ v l p trình NET, chia sẻ nh ng kinh nghi m th c t trong công vi c để m i ngư i cùng tham kh o, ph i ngắn g n vơ th t s th c t nhưng l i ph i chuyên sâu vơ thể hi n nh ng kỹ thu t cao trong l p trình Tôi đã nghĩ v nh ng yêu cầu đó, vơ quy t đ nh vi t tơi li u nơy vơo mỗi buổi tối sau

gi lơm vi c Đây như một món quơ đƠp l i s tín nhi m, yêu m n mơ cƠc b n đã, đang vơ sẽ dơnh cho tôi

Tôi rất mong nh n đư c nhi u Ứ ki n đóng góp c a cƠc b n cho tơi li u nơy, vơ tôi sẽ tổng h p l i để c p nh t cho tơi li u một tốt h n

Tôi mong rằng tơi li u nơy sẽ đồng hơnh cùng cƠc b n trong công vi c

TƠc gi

Ph m Tuấn Anh

Trang 3

đư c li t kê t i m c THAM KH O cuối tơi li u nơy

M i s sao chép, sao lưu, xuất b n, chuyển giao không đư c s cho phép c a ông

Ph m Tuấn Anh lơ không h p phƠp

TƠc gi

Ph m Tuấn Anh

Trang 4

M C L C

L P TRỌNH NET (C#) 8

Cấu trúc l p trình C# căn b n - 9

ng dụng “C# Hello World” 9

Ti p c n C# - 10

Khai báo bi n trong C# 11

Kiểu d li u trong C# 11

Input/Output trong C# căn b n 11

Cấu trúc đi u khiển trong l p trình C# 12

Cấu trúc if 12

Cấu trúc switch … case 12

Cấu trúc vòng lặp trong l p trình C# 13

Vòng lặp While 13

Vòng lặp do 14

Vòng lặp for 14

Vòng lặp foreach 14

Arrays - M ng trong C# 15

Chúng ta đã h c 15

Bài t p t th c hi n 16

Hi n th c khƠi ni m hướng đối tư ng (OOP) trong C# - 17

L p (class) trong C# 17

Class 18

Đối t ợng (Objects) 18

u điểm c a vi c sử dụng Class và Đối t ợng 18

Hàm t o (Constructors) và hàm h y (Destructors) trong C# 18

Constructors 18

Destructors 19

Fuction Overloading 19

Thừa k trong C# 20

Overriding, Polymorphism trong C# 21

Overriding 21

Polymorphism 22

Abstract Class trong C# 24

Namespaces 24

Khái ni m Namespace 24

Khai báo m t Namespace 24

Enumerator trong C# 25

BẪI T P Cọ H NG D N 25

C S D LI U 27

Thao tác v i h qu n trị d li u MSSQL Server 28

Khởi t o m t h cơ sở d li u 28

T o b ng 28

Truy vấn d li u từ m t b ng 28

Truy vấn d li u có đi u ki n 29

Truy vấn d li u từ nhi u b ng 29

Thêm d li u vào b ng 31

C p nh t d li u trong b ng 31

Xóa d li u từ b ng 31

L P TRỌNH DÀNH CHO CÔNG VI C 32

ADO.NET vơ thao tƠc với c s d li u - 33

Gi i thi u v ADO.NET 34

Mô hình ADO.NET 34

Data Provider 34

K t nối 35

Data Adapter 35

Thu c tính và ph ơng th c c a Data Adapter 35

Data Command 36

Data Reader 36

DataSet 37

Trang 5

BẪI T P Cọ H NG D N 38

BẪI T P T RÈN LUY N 38

Data Binding 38

Khái ni m Data Binding 38

Th c hi n Data Binding thông qua cƯu l nh truy vấn 39

L c và sắp x p d li u 39

L c m t Dataset 39

Sử dụng cƯu l nh SQL có tham số 39

Thêm, c p nh t, xóa d li u trong cơ sở d li u 40

Thêm m i d li u vào cơ sở d li u 40

C p nh t, xóa d li u trong cơ sở d li u 40

XƯy d ng m t l p CSDL dùng chung 42

XƯy d ng l p giao ti p v i CSDL - DBClass 42

Sử dụng l p giao ti p v i CSDL - DBClass 45

Xây d ng ng d ng Windows Form - 45

XƯy d ng Windows Forms 45

Visual Studio NET Integrated Development Environment (IDE) 45

T o m t d án trong Visual Studio Net 46

Window Form Controls 50

Windows Form 50

Thu c tính Windows Form 51

S ki n trong Windows Form 51

TextBox Control 52

Label Control 52

LinkLabel Control 53

ListBox Control 53

ComboBox Control 55

CheckBox Control 55

RadioButton Control 56

GroupBox Control 56

Button Control 56

T o control đ ng trong Windows Form 56

Sử dụng nh ng l p thừa k CommonDialog 56

L p ColorDialog 56

L p FontDialog 58

Làm vi c v i Menus và xƯy d ng ng dụng MDI 59

XƯy d ng ng dụng MDI 61

Bài t p có h ng d n 62

Bài t p t luy n 62

Qu n lỨ lỗi trong l p trình C# 63

Xây d ng h thống ng d ng trên n n t ng Web - ASP.NET - 65

XƯy d ng ng dụng Hello ASP.NET sử dụng Visual Studio NET IDE 66

S ki n Page_Load() 70

Các đối t ợng ASP.NET 71

Đối t ợng Request 71

Đối t ợng Response 72

Đối t ợng Session 72

XƯy d ng ng dụng Web sử dụng Server Controls 73

Server Controls 73

HTML Server Controls 73

HtmlAnchor 74

HtmlInputText 74

HtmlInputCheckBox 75

HtmlInputRadioButton 75

HtmlSelect Control 75

Web Server Controls 75

TextBox Control 76

Literal Control 76

FileUpload Control 76

Panel Control 76

View & MultiView Control 77

Calendar Control 77

Trang 6

DropDownList Control 77

Đi u khiển các Server Controls 78

K t nối cơ sở d li u trong ASP.NET 80

DataBinding trong ASP.NET 80

Binding d li u vào m t DropDownList Control 81

Thu c tính IsPostBack 82

Web Server Control Template 82

Repeater Control 83

Gắn đi u khiển vào Repeater 89

UserControl và ng dụng trong xƯy d ng WebPortal 91

T o và sử dụng UserControl 91

ng dụng UserControl trong xƯy d ng ng dụng WebPortal 94

Hi n th c ki n trúc WebPortal 95

Ki n trúc t i UserControl đ ng sử dụng PlaceHolder 96

Bài t p t ôn luy n 97

Cấu hình cho ng dụng Web ASP.NET 97

Mục <appSettings> 98

Đ c giá trị từ thẻ appSettings 98

Thẻ <customErrors> 98

Xuất b n m t ng dụng Web ASP.NET 99

Triển khai m t ng dụng Website ASP.NET trên IIS 100

PhƠt triển h thống ng d ng doanh nghi p với NET - 105

Web Services 106

Khởi t o và g i m t Web Services 106

D ỆN 113

Project 1. - 113

D án: Website thông tin và bán hàng tr c tuy n 113

Project 2. - 113

D án: H thống qu n trị kho hàng 113

Đ C THễM 113

ASP.NET & AJAX Framework - 114

H c s d li u MySQL Server 5.0 & l p trình thao tƠc d li u với MySQL Server. - 114

K t nối đ n cơ sở d li u MySQL 114

Regular Expressions Error! Bookmark not defined Gởi Email từ m t trang ASP.NET 118

Upload file hình nh vào cơ sở d li u SQL 118

T HAM KH O 121

Trang 7

L P TRỌNH NET (C#)

.NET lơ n n t ng cho phép phƠt triển nh ng ng d ng mới hoơn toơn trên c hai môi trư ng Win vơ Web Khi s d ng NET, đòi hỏi ph i s d ng một ngôn ng để khai thƠc h t s c m nh c a nó C# lơ ngôn ng chúng tôi l a ch n để s d ng vơ giới thi u đ n b n C# đư c phƠt triển từ C/C++ vơ gi nguyên tên trong gia đình

C, kỨ t # đư c s d ng như một s khẳng đ nh v tính sắc bén c a ngôn ng nơy,

do đó C# đư c phƠt âm lơ C sharp

Trang 8

Sau đây lơ chư ng trình C# Hello World, mã nguồn như sau:

/*This is Hellow World C# Program*/

Trang 10

Khai báo bi n trong C#

CƠc bi n trong C# đư c khai bƠo theo công th c như sau:

AccessModifier DataType VariableName;

Trong đó,

AccessModifier: xƠc đ nh ưu tiên truy xuất tới bi n

Datatype: đ nh nghĩa kiểu lưu tr d li u c a bi n

VariableName: lơ tên bi n

Cấp độ truy xuất tới bi n đư c mô t như b ng dưới đây

Access Modifier Mô t

protected Cho phép truy xuất bên trong một lớp n i bi n nơy đư c đ nh

nghĩa, hoặc từ cƠc lớp con c a lớp đó

private Chỉ truy xuất bên trong lớp n i mơ bi n đư c đ nh nghĩa

Kiểu d li u trong C#

CƠc kiểu d li u đư c s d ng trong ngôn ng C# đư c mô t theo b ng dưới đây

tr kiểu ch cho bi n string str = "Welcome";

đúng hoặc sai

bool val1 = false;

bool val2 = true;

Input/Output trong C# căn b n

Input /output trong C# đư c th c hi n thông qua vi c s d ng hơm c a lớp Console trong namespace System

Hai hơm thư ng s d ng nhất cho thao tƠc Input/Output lơ:

Console.WriteLine();

Console.ReadLine();

Trong dó,

Trang 11

Console.WriteLine(): đư c s d ng để xuất hi n k t qu

Console.ReadLine(): đư c s d ng để đ c k t qu nh n vơo

Xem tại mã nguồn HelloWorld kèm theo tại liệu này

Cấu trúc đi u khiển trong l p trình C#

C# cung cấp hai cấu trúc đi u khiển th c hi n vi c l a ch n đi u ki n th c thi chư ng trình

Cấu trúc if

Cấu trúc if trong C# đư c mô t như sau:

if (biểu thức điều kiện)

Cấu trúc switch … case

Cấu trúc swtich….case có cấu trúc như sau:

Trang 12

Th c thi câu l nh hoặc một lo t nh ng câu l nh đ n khi đi u ki n không đư c thỏa mãn

Trang 14

for (initialization; condition; increment / decrement)

{

// th c thi câu l nh

}

Arrays - M ng trong C#

M ng lơ một nhóm nh ng bi n có cùng một kiểu d li u Nh ng bi n nơy đư c lưu

tr trong bộ nh ng vùng bộ nhớ k ti p do đó m ng cho phép truy xuất vơ th c thi

đ n từng phần t trong m ng

Công th c khai bƠo một m ng như sau:

Datatype [] variableName = new Datatype [number of elements];

Trong đó,

number of elements: lơ số phần t c a m ng

Datatype: kiểu d li u mơ m ng lưu tr

variableName: lơ tên m ng

Ví dụ:

// m ng kiểu int

int[] iarray = new int[5];

// m ng kiểu string

string[] sarray = new string[6];

Ví d : cƠch khai bƠo khƠc

string[] sarray2 = { "Welcome", "to", "C# Array" };

Khi l p trình, tùy theo đi u ki n chư ng trình mơ b n có thể ch n l a một trong hai cƠch trên

Trang 15

 Cấu trúc đi u ki n, l a ch n if … else vơ switch… case

Cấu trúc vòng lặp while, do…while, for, foreach

Bài t p t th c hi n

Để c ng cố ki n th c đã h c, Nh ng bơi t p sau đây đư c yêu cầu th c hi n

1 Vi t chư ng trình cho phép nh t vơo 1 số nguyên dư ng N, vơ hiển th giƠ tr

Trang 16

Hi n th c khƠi ni m hướng đối tư ng (OOP) trong C#

Chúng ta sẽ h c

Nh ng nội dung trong phần nơy tổng k t hóa nh ng điểm quan tr ng nhất v khƠi

ni m OOP trong C# Nội dung bao gồm

 Đ nh nghĩa lớp, đối tư ng

 Hơm t o (Constructor), hơm h y (Destructor)

Trang 17

Class

Một Class lơ một khƠi ni m mô t cho nh ng th c thể có chung tính chất vơ hơnh

vi Class đ nh nghĩa nh ng thuộc tính vơ hơnh vi đư c dùng cho nh ng đối tư ng

c a lớp đó Do đó có thể nói Class lơ một khuôn m u cho cƠc đối tư ng

t o đối tư ng giống như cƠch t o một bi n có kiểu d li u lơ Class

AccessModifier ClassName ObjectName = new ClassName();

u điểm c a vi c sử dụng Class và Đối t ợng

Có một số nh ng ưu điểm c a vi c s d ng Class vơ đối tư ng trong phƠt triển phần m m Nh ng ưu điểm nổi b t nhất đư c li t kê như sau:

 Duy trì code bằng vi c mô hình hóa

 Đóng gói nh ng s ph c t p trong mã lênh từ ngư i dùng

 Kh năng s d ng l i

 Cung cấp đ n k thừa để th c thi nhi u phư ng th c

Hàm t o (Constructors) và hàm h y (Destructors) trong C#

Constructors

Constructors lơ nh ng hơm đặc bi t cho phép th c thi, đi u khiển chư ng trình ngay khi kh i t o đôi tư ng Trong C#, Constructors có tên giống như tên c a Class vơ không tr l i giƠ tr

Trang 18

 Function Overloading d a trên số lư ng tham số truy n vơo

 Function Overloading d a trên kiểu giƠ tr tham số truy n vơo

Trang 19

Thừa k trong C#

Một trong nh ng ưu điểm nổi b t c a l p trình hướng đối tư ng đó lơ thừa k , đó

lơ s s d ng l i nh ng thuộc tính vơ hơnh vi c a một lớp Có hai kiểu k thừa trong l p trình, đ n k thừa vơ đa k thừa

C# cung cấp mô hình đ n k thừa

protected int ifoots;

protected string sName;

protected void setFoot(int ival)

Trang 20

}

}

K t qu khi th c thi chư ng trình

ví d trên, Dog vơ Chicken lơ hai lớp k thừa từ lớp Animal, do đó cƠc thuộc tính như số chân, ifoots vơ tên sName đư ng nhiên xuất hi n trong hai lớp nơy vơ

cho phép s d ng Tư ng t , cƠc hơm như setName(), setFoot(),

displayProperties() t i lớp Animal cũng đư c k thừa xuống hai lớp Dog vơ Chicken Do đó ta có thể g i nh ng hơm nơy, vơ k t qu hiển th khi g i hơm

displayProperties() theo đối tư ng objDog vơ objChicken khƠc nhau như hình trên

Overriding, Polymorphism trong C#

protected int ifoots;

protected string sName;

protected void setFoot(int ival)

Trang 21

Console.WriteLine(sName + " has " + ifoots.ToString()+ " foots"); }

Trang 22

Child objchild = new Child();

Console.WriteLine("Result is " + objchild.methodA().ToString()); Console.Read();

Như bình thư ng c a mô hình k thừa, k t qu tr v khi g i hơm methodA() từ đối

tư ng c a lớp Child ph i lơ “Result is 2” Nhưng trong k t qu trên, k t qu lơ

“Result is 6” K t qu nơy do hơm methodB() t i lớp Child đã override hơm methodB() t i lớp Parent

V y ta có thể khƠi quƠt Polymorphism như sau:

 Polymorphism không chỉ đ n gi n lơ overriding, mơ nó lơ overrding thông minh

 KhƠc bi t gi Overriding vơ Polymorphism đó lơ trong Polymorphism, s quy t đ nh g i hơm đư c th c hi n khi chư ng trình ch y

Trang 23

Abstract Class trong C#

Abstract Class lơ lớp dùng để đ nh nghĩa nh ng thuộc tính vơ hơnh vi chung c a

nh ng lớp khƠc Một Abstract class đư c dùng như một lớp cha c a cƠc lớp khƠc

Từ khóa abstract đư c dùng để đ nh nghĩa một abstract class Nh ng lớp đư c đ nh nghĩa bằng cƠch dùng từ khóa abstract thì không cho phép kh i t o đối tư ng c a lớp ấy

abstract class Shape

{

public abstract float calculateArea();

public void displaySomething()

Đư ng mang tên v tướng danh ti ng Trần Hưng đ o đ u có t i Sơi Gòn vơ Hơ Nội,

v y lơm sao để phân bi t khi ngư i nước ngoơi muốn hỏi v đư ng Trần Hưng Đ o CƠch đ n gi n nhất đó lơ khi muốn g i tên đư ng Trần Hưng Đ o t i Hơ Nội thì ta

g i “đư ng Trần Hưng Đ o t i Hơ Nội” vơ tư ng t t i Sơi Gòn lơ “đư ng Trần Hưng

Đ o t i Sơi Gòn” vơ chắc chắn chúng ta sẽ có câu tr l i cho v khƠch đó

Hơ Nội, Sơi Gòn trong ví d trên lơ một ví d cho Namespace

V y có thể hiểu Namespace lơ một gói nh ng th c thể có thuộc tính vơ hơnh vi độc

l p với bên ngoơi Nh ng ưu điểm c a namespace đư c li t kê như sau:

 TrƠnh đư c s trùng lặp tên gi a cƠc class

 Cho phép tổ ch c mã nguồn một cƠch có khoa h c vơ h p lỨ

Khai báo m t Namespace

Namespace: lơ từ khóa khai bƠo một NameSpace

NamespaceName: lơ tên c a một Namespace

Ví dụ

Trang 24

EnumDemo eobj = newEnumDemo();

eobj.getWeekDay(DayinWeek.Saturday);

Trang 25

IO Namespace ch a nh ng lớp cho phép thao tƠc đ c vơ ghi d li u đ n nh ng luồng d li u vơ file Một số lớp c a System.IO đư c li t kê như sau:

Trang 27

B ng có thể đư c hiểu lơ n i th c s ch a d li u m c độ v t lỨ B ng lơ t p

h p nh ng dòng d li u có cùng cấu trúc đư c đ nh nghĩa b i nh ng cột (Column), mỗi dòng d li u trong b ng ch a nh ng kiểu d li u đư c qui đ nh b i nh ng cột

Cấu trúc câu l nh đ n gi n để kh i t o một h c s d li u như sau:

CREATE DATABASE database_name

Trong đó

- CREATE DATABASE lơ từ khóa t o c s d li u

- database_name lơ tên c s d li u

Ví d : t o c s d li u để h c t p NET có tên _NETDB

CREATE DATABASE _NETDB

Ví d : t o b ng MyTable trong c s d li u _NETDB

CREATE TABLE MyTable

Trang 28

Câu l nh truy vấn d li u (SELECT) tr v d li u có trong b ng Cấu trúc câu

l nh đ n gi n để truy vấn d li u từ một b ng như sau:

SELECT * | [Cột 1], [Cột 2], … FROM [Table Name]

Ví d :

SELECT * FROM MyTable

SELECT vname FROM MyTable

Truy vấn d li u có đi u ki n

Như câu l nh truy vấn d li u, nhưng câu truy vấn d li u từ b ng cho phép chúng

ta chỉ lấy nh ng d li u cần thi t theo một đi u ki n nơo đó

Cấu trúc câu truy vấn d li u có đi u ki n như sau:

SELECT * | [Cột 1], [Cột 2], … FROM [Table Name]

WHERE [Đi u ki n 1] AND | OR [Đi u ki n 2] …

Ví d :

SELECT * FROM MyTable where vName = ‘Ph m Tuấn Anh’

Select * from MyTable where igender = 1

Chúng ta có thể thấy hai b ng nơy đ u có trư ng icid, vơ chúng ta có thể lấy d

li u từ hai b ng d a vơo vi c so sƠnh d giƠ tr trong trư ng icid hai b ng

Câu l nh như sau:

Trang 29

Chúng ta ti p t c th c hi n câu truy vấn th hai

Chúng ta có đư c 5 dòng k t qu với dòng th 5 có giƠ tr lơ NULL, như th câu

l nh trên, vi c so sƠnh chỉ d a trên cƠc giƠ tr c a cột icid trên b ng category

hay nói cƠch khƠc câu truy vấn trên lấy tất c cƠc dòng c a b ng category (b ng bên trƠi) Ngư i ta đ nh nghĩa đó lơ LEFT JOIN

Ngư c với LEFT JOIN đó lơ RIGHT JOIN Chúng ta cùng xét ví d

Trang 30

icid vname iid vvalue

Cấu trúc câu l nh để thêm d li u vơo b ng như sau

INSERT [INTO] TableName [(column_list)] VALUES data_values

Ví d

insert into category values('A')

insert into items values(1,'V1')

Trong hai câu l nh trên, chúng ta có thể thấy, không có d li u thêm cho cột mã chính, đi u nơy x y ra khi cột mã chính lơ cột t tăng, khi ấy h thống t gƠn giƠ tr ng với dòng đư c thêm

C p nh t d li u trong b ng

Cấu trúc câu l nh để c p nh t d li u trong b ng như sau

UPDATE TableName SET [Cột 1] =[GiƠ tr 1], [Cột 2]=[GiƠ tr 2],… [WHERE [ĐI U

KI N]]

Ví d

update items set vvalue='V5' where iid=5

Lưu Ứ, khi s d ng câu l nh UPDATE, nên s d ng đi u ki n phía sau để đ m b o rằng chỉ có nh ng dòng thỏa đi u ki n mới đư c c p nh t

Xóa d li u từ b ng

Cấu trúc câu l nh để c p nh t d li u trong b ng như sau

DELETE TableName [WHERE [ĐI U KI N]]

Ví d

DELETE items where iid=5

Lưu Ứ, khi s d ng câu l nh DELETE, nên s d ng đi u ki n phía sau để đ m b o rằng chỉ có nh ng dòng thỏa đi u ki n mới đư c xóa

Trang 31

L P TRỌNH DÀNH CHO CÔNG VI C

Mục tiêu khóa h c này

Sau phần nơy, b n có thể

 Thao tƠc trên công c phƠt triển Visual Studio NET (IDE)

 S d ng nh ng đi u khiển c b n c a ng d ng Window

 S d ng cƠc lớp c a lớp CommonDialog

 Gia tăng ti n ích cho ng d ng bằng thanh th c đ n

T o h thống ng d ng với MDI Form

Xây d ng website, h thống ng d ng trên n n t ng web

Th c hi n ng d ng phân tƠn với Webservices

Th c hi n h thống ng d ng theo yêu cầu c a doanh nghi p

Trang 32

ADO.NET vơ thao tƠc với c s d li u

Sau khi hoơn thơnh, b n có thể

 Nẵm v ng ki n trúc ADO.NET

 Hiểu rõ nh ng đối tư ng thuộc ADO.NET

 K t nối c s d li u s d ng cƠc hơm thuộc thư vi n OleDb

 Th c hi n thêm, c p nh t, xóa d li u

Trang 33

Gi i thi u v ADO.NET

Ngơy nay, nh ng ng d ng thư ng m i cần thi t để qu n lỨ khối lư ng d li u khổng lồ D li u thư ng đư c lưu tr trong nh ng b ng quan h trong c s d

li u Nh n d li u vơ thao tƠc d li u tr c ti p từ một c s d li u đòi hỏi

ki n th c v nh ng câu l nh thao tƠc trên c s d li u để truy c p đ n d li u

Vơ ng d ng cần giao ti p với C s d li u để th c hi n nh ng công vi c sau:

 Nh n d li u đư c lưu tr trong c s d li u vơ hiển th chúng ra giao di n ngư i dùng

 C p nh t d li u, th c hi n thêm, hi u chỉnh, vơ xóa d li u

ADO.NET lơ một mô hình đư c nh ng ng d ng NET s d ng để giao ti p với c s

d li u cho vi c nh n, truy c p, vơ c p nh t d li u

Mô hình ADO.NET

Data Provider

Trang 34

Một data provider đư c s d ng cho vi c k t nối đ n c s d li u, nh n, lưu tr

d li u trong dataset, đ c, nh n vơ c p nh t d li u trong c s d li u

Có hai lo i data provider:

 Ole DB data provider - lo i nơy lơm vi c với tất c OleDB Provider như Sql OleDB Provider, Oracle OleDb provider, vơ Jet OleDb Provider Đư c bi t đ n trong môi trư ng NET với namespace System.Data.OleDb

 Sql Server data provider - lo i nơy lơm vi c chỉ với Microsoft SQL Server Cho phép thao tƠc với tốc độ tối ưu với h c s d li u MSSQL Server, đư c

bi t đ n với namespace System.Data.SqlClient

K t nối

K t nối lơ một component đư c s d ng để thi t l p một k t nối đ n c s d li u

từ một data source Có hai kiểu đối tư ng k t nối thư ng s d ng nhất lơ OleDbConnection vơ SqlConnection B ng sau đây hiển th nh ng thuộc tính vơ phư ng th c hay s d ng nhất c a một đối tư ng k t nối

ConnectionString Cung cấp thông tin như datasource, tên c s d li u, đư c s

d ng để thi t l p k t nối với một c s d li u

ConnectionString

nối đang đóng, 1: k t nối đang m

Ví d v vi c s d ng đối tư ng k t nối

string connectionstring = "PROVIDER=SQLOLEDB;

server=(local);uid=_net;pwd=;database=_NET";

OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open();

Data Adapter

Data Adapter lơ thơnh phần c a ADO.NET, có tƠc d ng chuyển ti p d li u từ vơ

đ n c s d li u data Adapter nh n d li u từ c s d li u vơo một DataSet Khi b n thay đổi d li u trong dataset, cũng lơ thay đổi trong c s d li u b i dataadapter Có hai kiểu data adapter thư ng dùng để cấu hình k t nối đ n c s

d li u trong Visual Studio NET:

 SqlDataAdapter - lơm vi c chỉ với h c s d li u MS SQL Server

 OleDbDataAdapter - kiểu nơy đư c cấu hình để lơm vi c với hầu h t cƠc h c

s d li u đư c hỗ tr b i OleDb data provider

Data Adapter s d ng đối tư ng k t nối OleDbConnection vơ SqlConnection đư c cung cấp b i data provider để giao ti p với c s d li u

Thu c tính và ph ơng th c c a Data Adapter

Trang 35

Data Adapter giao ti p với c s d li u trong khi nh n, thêm mới, xóa vơ c p

nh t d li u Nh ng thuộc tính sau đây đư c thi t l p để th c hi n nh ng tƠc v khƠc nhau trên một h c s d li u

 SelectCommand - nh n d li u từ CSDL thông qua một câu truy vấn hoặc stored procedures

 InsertCommand - thêm d li u vơo CSDL qua câu l nh insert

 UpdateCommand - c p nh t c s d li u với câu l nh update

 DeleteCommand - xóa d li u khỏi c s d li u thông qua câu l nh delete

 Fill() - lơ phư ng th c đẩy d li u từ CSDL vơo một dataset

 Update() - lơ phư ng th c th c thi InsertComand, Update Command, hoặc DeleteCommand cho mỗi câu l nh thêm, hi u chỉnh hoặc xóa dòng để th c hi n thay đổi trong CSDL

Data Command

DataCommand lơ đối tư ng th c thi nh ng câu l nh SQL hoặc stored procedure đư c

s d ng để thao tƠc với CSDL Data Command lơ đối tư ng c a lớp SqlCommand vơ OleDbCommand

CƠc thuộc tính c a đối tư ng DataReader:

NextResult Đư c s d ng để di chuyển đ n hơng d li u ti p theo trong

trư ng h p câu l nh truy vấn tr l i nhi u dòng k t qu

Ví d s d ng Data Reader

private void button2_Click(object sender, EventArgs e)

{

Trang 36

string connectionstring = "PROVIDER=SQLOLEDB;

ti t nh ng đối tư ng thuộc tính nơy sẽ đư c đ c p trong cƠc phần sau

Ví d s d ng DataAdapter đẩy d li u từ c s d li u vơo DataSet

private void button3_Click(object sender, EventArgs e)

Trang 37

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

DataSet ds = new DataSet();

ng d ng qu n lỨ cuộc g i cần cung cấp kh năng xem chi ti t khƠch hơng cho bộ

ph n BƠn hơng Hãy t o một ng d ng để hiển th chi ti t khƠch hơng cho phòng Kinh doanh

Trang 38

Sau khi nh n d li u từ c s d li u, d li u cần đư c hiển th trên nh ng control c a Windows Form để ngư i s d ng thấy QuƠ trình đó g i lơ Data Binding

Th c hi n Data Binding thông qua cƯu l nh truy vấn

Yêu cầu

GiƠm đốc nhân s công ty HHO cần xem danh sƠch nhân viên trong cƠc phòng ban

c a công ty Một ng d ng đư c yêu cầu xây d ng để th c hi n vi c nơy

L c m t Dataset

D li u từ một table trong c s d li u đư c lất toơn bộ vơ đổ vơo Dataset, sau

đó ti n hơnh l c nh ng dòng d li u cần thi t

Ví d sau mô t cƠch th c hi n nơy

private void button4_Click(object sender, EventArgs e)

Trang 39

cmd.CommandType = CommandType.Text;

// truy n tham số vơo câu l nh SQL

cmd.Parameters.AddWithValue(“@ ibookid" , 2);

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

DataSet ds = new DataSet();

da.Fill(ds, "books");

MessageBox.Show(ds.Tables["books"].Rows.Count.ToString()); conObj.Close();

B n lưu Ứ với dòng l nh

cmd.Parameters.AddWithValue(“@ ibookid" , 2);

Đây lơ cƠch s d ng ngắn g n khi truy n tham số mơ nh ng chuyên gia phƠt triển

phần m m th c t thư ng s d ng, nguyên m u câu l nh có công th c như sau:

OleDbParameter param = new

OleDbParameter ( "@paramname" , OleDbType VarChar);

param.Value = "value" ;

trong đó, OleDbType lơ thư vi n nh ng kiểu d li u tư ng ng với nh ng kiểu d

li u lưu tr trong h c s d li u

Thêm, c p nh t, xóa d li u trong cơ sở d li u

Thêm m i d li u vào cơ sở d li u

cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue(“@inxb", 2);// Nha xuat ban tre

ví d trên, câu l nh SQL insert đư c th c hi n k t h p với đối tư ng tham số

Parameters để đẩy d li u vơo c s d li u thông qua đối tư ng Command

C p nh t, xóa d li u trong cơ sở d li u

QuƠ trình c p nh t vơ xóa d li u tư ng t như với thêm mới c s d li u

Trang 40

OleDbCommand cmd = new OleDbCommand("update books set

vtensach=?,fgia=? where vmasach=?",conObj);

cmd.CommandType = CommandType.Text;

cmd.Parameters.AddWithValue(“@vtensach", ".NET for Real Life"); cmd.Parameters.AddWithValue(“@fgia", 85000);

 K t nối luôn ph i đư c đóng l i sau mỗi lần truy xuất đ n c s d li u

 S d ng đối tư ng Data Adapter, DataSet vơ đối tư ng Command trong thao tƠc nh n d li u từ CSDL

Ngày đăng: 13/12/2022, 19:44