Professional Documents
Culture Documents
NET (C#)
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Trung tm o to CNTT cht lng cao CNG CNTT VIT NAM. WWW.ITGATEVN.COM.VN
LI NG
Ton tp gio trnh ny l kt qu ca s c ng nhng kin thc cn thit gip bn lm ch nn tng .NET cho cng vic. Chng ti c kt nhng kinh nghim thc t, rt gn nhng im cn lu , nhng k thut m hu ht cc cng ty phn mm pht trin ng dng trn nn tng .NET u yu cu thc hin. Hn na y cn l ti liu m bn c th s dng n tp li nhng kin thc sau nhng gi ln lp v c bit trong cng vic ca cc bn. Xut thn t mt nh pht trin, chuyn gia phn tch h thng, ti gi nhng kin thc ct li v cn thit nht trong lp trnh trn cng ngh .NET vo ti liu ny. Nhng v d trong ti liu l nhng v d thc t c ti trch lc t nhng d n m ti v ng s thc hin trong sut thi gian tham gia lm vic ti nhiu cng ty phn mm ln, l cc tnh hung c th m chng ti gp phi, v gi y ti tng kt li gii thiu n cc bn nh mt s chia s kinh nghim. Sau thi gian lm vic v hot ng trn mng thng tin Vit Nam www.itgatevn.com.vn - c nhiu ngi bn lm vic ti cc cng ty tin hc trong nc cng nh cc bn b ca ti trn mng gi email, hi p v yu cu ti vit mt ti liu y v lp trnh .NET, chia s nhng kinh nghim thc t trong cng vic mi ngi cng tham kho, phi ngn gn v tht s thc t nhng li phi chuyn su v th hin nhng k thut cao trong lp trnh. Ti ngh v nhng yu cu , v quyt nh vit ti liu ny vo mi bui ti sau gi lm vic. y nh mt mn qu p li s tn nhim, yu mn m cc bn , ang v s dnh cho ti. Ti rt mong nhn c nhiu kin ng gp ca cc bn cho ti liu ny, v ti s tng hp li cp nht cho ti liu mt tt hn. Ti mong rng ti liu ny s ng hnh cng cc bn trong cng vic.
Tc gi
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
BN QUYN TC GI
Ti liu ny c Phm Tun Anh thc hin nhm phc v mc ch o to nhn lc trong chng trnh o to cng ngh .NET do Cng Cng ngh thng tin Vit Nam thc hin, v c lu hnh ni b trong phm vi khng gian o to ca chng trnh. Ti liu ny c xy dng t kin thc v kinh nghim c c trong thi gian di hot ng ca ng Phm Tun Anh, c tham kho mt s ti liu nc ngoi c lit k ti mc THAM KHO cui ti liu ny. Mi s sao chp, sao lu, xut bn, chuyn giao khng c s cho php ca ng Phm Tun Anh l khng hp php.
Tc gi
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
MC LC
LP TRNH .NET (C#) ..................................... 8
Cu trc lp trnh C# cn bn------------------------------------------------ 9 ng dng C# Hello World................................................ 9 Tip cn C#----------------------------------------------------------------- 10 Khai bo bin trong C#.................................................. 11 Kiu d liu trong C#................................................... 11
Fuction Overloading .................................................19 Tha k trong C# ....................................................20 Overriding, Polymorphism trong C# ...................................21
Overriding.............................................................. 21 Polymorphism............................................................ 23
C S D LIU .......................................... 27
Thao tc vi h qun tr d liu MSSQL Server .......................28
Khi to mt h c s d liu........................................... To bng................................................................ Truy vn d liu t mt bng............................................ Truy vn d liu c iu kin........................................... Truy vn d liu t nhiu bng.......................................... Thm d liu vo bng................................................... Cp nht d liu trong bng............................................. Xa d liu t bng..................................................... 28 28 28 29 29 31 31 31
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
DataSet................................................................. 38
Lc v sp xp d liu ..............................................40
Lc mt Dataset......................................................... 40 S dng cu lnh SQL c tham s......................................... 40
To control ng trong Windows Form .................................57 S dng nhng lp tha k CommonDialog ..............................57
Lp ColorDialog......................................................... 57 Lp FontDialog.......................................................... 59
Lm vic vi Menus v xy dng ng dng MDI .........................60 Xy dng ng dng MDI ...............................................62 Bi tp c hng dn ................................................63 Bi tp t luyn ....................................................63 Qun l li trong lp trnh C# ......................................64
Xy dng h thng ng dng trn nn tng Web - ASP.NET---------------------- 66
Xut bn mt ng dng Web ASP.NET ..................................101 Trin khai mt ng dng Website ASP.NET trn IIS ...................102
Pht trin h thng ng dng doanh nghip vi .NET------------------------- 108
D N ................................................. 115
Project 1.----------------------------------------------------------------- 115
Kt ni n c s d liu MySQL ....................................116 Regular Expressions ...................... Error! Bookmark not defined. Gi Email t mt trang ASP.NET .....................................120 Upload file hnh nh vo c s d liu SQL .........................121
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
Cu trc lp trnh C# cn bn
ng dng C# Hello World
Hellow World l chng trnh u tin m u cho vic hc mt ngn ng lp trnh no , vi C# cng th, hy bt u vi C# Hello World V d 1: Sau y l chng trnh C# Hello World, m ngun nh sau: /*This is Hellow World C# Program*/ using System; using System.Collections.Generic; using System.Text; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Welcome to C# World"); } } }
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
Tip cn C#
Nhng ch chnh
Ti phn ny, bn s hc:
Bin trong lp trnh C#. Kiu d liu Cu trc iu kin Cu trc vng lp Mng trong C#
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
10
private
string
int
byte val = 12; float val = 1.23F; bool val1 = false; bool val2 = true; char cval = 'a';
char
Input/Output trong C# cn bn
Input /output trong C# c thc hin thng qua vic s dng hm ca lp Console trong namespace System. Hai hm thng s dng nht cho thao tc Input/Output l: Console.WriteLine(); Console.ReadLine(); Trong d, PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
11
Cu trc if
Cu trc if trong C# c m t nh sau: if (biu thc iu kin) { // cu lnh thc thi nu biu thc iu kin ng } [else { // cu lnh thc thi nu biu thc iu kin sai }]
V d: if (20 % 4 > 0) { Console.WriteLine("S 20 khng chia ht cho 4"); } else { Console.WriteLine("S 20 chia ht cho s 4"); }
thc thi
thc thi
thc thi
thc thi
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
12
V d: int x = 20 % 4; switch (x) { case 1: Console.WriteLine("20 chia cho 4 c s d l 1"); break; case 0: Console.WriteLine("20 chia ht cho 4"); break; default: Console.WriteLine("Khng thuc tt c cc trng hp trn"); break; }
Vng lp While
Cu trc vng lp while while { // cu lnh } Thc thi cu lnh hoc mt lot nhng cu lnh n khi iu kin khng c tha mn. (condition)
V d: using System; class WhileTest { public static void Main() { int n = 1; while (n < 6) { Console.WriteLine("Current value of n is {0}", n); n++; } } PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
13
Vng lp do
Cu trc vng lp while do { // cu lnh } white (condition)
Thc thi cu lnh t nht mt ln n khi iu kin khng c tha mn. V d: using System; public class TestDoWhile { public static void Main () { int x; int y = 0; do { x = y++; Console.WriteLine(x); } while(y < 5); } }
Vng lp for
Cu trc vng lp for for (initialization; condition; increment / decrement) { // thc thi cu lnh }
V d: using System; public class ForLoopTest { public static void Main() { for (int i = 1; i <= 5; i++) Console.WriteLine(i); } }
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
14
Vng lp foreach
Cu trc vng lp foreach for (initialization; condition; increment / decrement) { // thc thi cu lnh }
Datatype [] variableName = new Datatype [number of elements]; Trong , number of elements: l s phn t ca mng Datatype: kiu d liu m mng lu tr variableName: l tn mng.
V d: // mng kiu int int[] iarray = new int[5]; // mng kiu string string[] sarray = new string[6]; V d: cch khai bo khc string[] sarray2 = { "Welcome", "to", "C# Array" }; Khi lp trnh, ty theo iu kin chng trnh m bn c th chn la mt trong hai cch trn.
Chng ta hc
Ti y, bn tm hiu v lm quen vi lp trnh trn nn tng .NET vi ngn ng C#. Nhng kin thc sau bn cn nm vng:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
15
C# l mt ngn ng mnh, c bin dch v thc thi da trn nn tng .NET ca Microsoft. Nhng kiu d liu c bn trong C#, cch khai bo bin, mng trong C# Cu trc iu kin, la chn if else v switch case Cu trc vng lp while, dowhile, for, foreach
Bi tp t thc hin
cng c kin thc hc, Nhng bi tp sau y c yu cu thc hin 1. Vit chng trnh cho php nht vo 1 s nguyn dng N, v hin th gi tr t 0 n N ra mn hnh 2. Vit chng trnh my tnh c nhn cho php nhp vo hai s v thc hin tnh ton: nhn, chia, cng, tr, l tha 3. Vit chng trnh gii bi ton phng trnh bc hai: aX2 + bX + c = 0 vi a,b,c l cc tham s
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
16
nh ngha lp, i tng Hm to (Constructor), hm hy (Destructor) Function Overloading. Tha k trong lp trnh C#. Overriding Method. Polymorphism Abstract Class trong C# Namespaces Enumerators
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
17
Lp (class) trong C#
Class
Mt Class l mt khi nim m t cho nhng thc th c chung tnh cht v hnh vi. Class nh ngha nhng thuc tnh v hnh vi c dng cho nhng i tng ca lp . Do c th ni Class l mt khun mu cho cc i tng. Cng thc to mt class AccessModifier class className { // thn class }
i tng (Objects)
i tng l mt i din, hay c th ni l mt sn phm ca mt class. Tt c cc i tng u c chung nhng thuc tnh v hnh vi m class nh ngha. Cch to i tng ging nh cch to mt bin c kiu d liu l Class.
AccessModifier
ClassName
Duy tr code bng vic m hnh ha ng gi nhng s phc tp trong m lnh t ngi dng Kh nng s dng li Cung cp n k tha thc thi nhiu phng thc.
class Library { private int ibooktypes; //Constructor public Library() { ibooktypes = 7; } public Library(int value) { ibooktypes = value; PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
18
} }
Destructors
L mt hm c bit c s dng lm sch b nh. Cch khai bo ging nh Constructor nhng khng c tham s v c bt u bng du ~. V d class Library { private int ibooktypes; //Constructor public Library() { ibooktypes = 7; } public Library(int value) { ibooktypes = value; } ~ Library() { //thc thi cu lnh } }
Fuction Overloading
Method Overloading xut hin khi trong mt class c t hai hm c cng tn. C hai kiu Method Overloading:
V d
Function Overloading da trn s lng tham s truyn vo Function Overloading da trn kiu gi tr tham s truyn vo.
class Library { // Function Overloading public void insertbooks(int id) { // } public void insertbooks(int id, int type) { // } public void insertbooks(string id, int type) { // } }
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
19
Ba hm insertbooks trn l mt v d v function overloading trong lp trnh C#. Trong khi hm th nht v th 2 l overloading theo s lng tham s, v hm th 3 vi hm th 2 l overloading theo kiu tham s truyn vo.
Tha k trong C#
Mt trong nhng u im ni bt ca lp trnh hng i tng l tha k, l s s dng li nhng thuc tnh v hnh vi ca mt lp. C hai kiu k tha trong lp trnh, n k tha v a k tha. C# cung cp m hnh n k tha. V d v k tha trong C#.
namespace __OOP_Inheritance { class Program { static void Main(string[] args) { Dog objDog = new Dog(4); objDog.displayProperties(); Chicken objChicken = new Chicken(2); objChicken.displayProperties(); Console.Read(); } } class Animal { protected int ifoots; protected string sName; protected void setFoot(int ival) { ifoots = ival; } protected void setName(string sVal) { sName = sVal; } public void displayProperties() { Console.WriteLine(sName + " have " + ifoots.ToString()+ " foots"); } } class Dog : Animal { public Dog(int ival) { setName("Dog"); ifoots = ival; } } class Chicken : Animal { public Chicken(int ival) PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
20
{ setName("Chicken"); setFoot(ival); } } }
v d trn, Dog v Chicken l hai lp k tha t lp Animal, do cc thuc tnh nh s chn, ifoots v tn sName ng nhin xut hin trong hai lp ny v cho php s dng. Tng t, cc hm nh setName(), setFoot(), displayProperties() ti lp Animal cng c k tha xung hai lp Dog v Chicken. Do ta c th gi nhng hm ny, v kt qu hin th khi gi hm displayProperties() theo i tng objDog v objChicken khc nhau nh hnh trn.
namespace __OOP_Inheritance { class Program { static void Main(string[] args) { Dog objDog = new Dog(4); objDog.displayProperties(); Chicken objChicken = new Chicken(2); objChicken.displayProperties(); Tiger objTiger = new Tiger(4); objTiger.displayProperties(); Console.Read(); } } class Animal { protected int ifoots; protected string sName; protected void setFoot(int ival) { ifoots = ival; } protected void setName(string sVal) PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
21
{ sName = sVal; } public virtual void displayProperties() // ch hm ny { Console.WriteLine(sName + " has " + ifoots.ToString()+ " foots"); } } class Dog : Animal { public Dog(int ival) { setName("Dog"); ifoots = ival; } } class Chicken : Animal { public Chicken(int ival) { setName("Chicken"); setFoot(ival); } public void displayProperties() { base.displayProperties(); Console.WriteLine(sName + " have " + ifoots.ToString() + " foots (from Chicken class)"); } } class Tiger : Animal { public Tiger(int ival) { setFoot(ival); } public override void displayProperties() // ch hm ny { Console.WriteLine("Tiger has " + ifoots.ToString()+ " foots"); } } }
Hm displayProperties() trong lp Tiger overrides hm displayProperties() trong lp Animal Nu mt hm c nh ngha trong lp con c cng tn, kiu vi hm trong lp cha, khi y hm trong lp con s overrides (lm n) hm trong lp cha. c gi l overriding.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
22
Polymorphism
V d
using System; using System.Collections.Generic; using System.Text; namespace __OOP_polymorphism { class Program { static void Main(string[] args) { Child objchild = new Child(); Console.WriteLine("Result is " + objchild.methodA().ToString()); Console.Read(); } } class Parent { public int methodA() { return methodB() * methodC(); } public virtual int methodB() { return 1; } public int methodC() { return 2; } } class Child : Parent { public override int methodB() { return 3; } } }
Nh bnh thng ca m hnh k tha, kt qu tr v khi gi hm methodA() t i tng ca lp Child phi l Result is 2. Nhng trong kt qu trn, kt qu l Result is 6. Kt qu ny do hm methodB() ti lp Child override hm methodB() ti lp Parent. Vy ta c th khi qut Polymorphism nh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
23
Polymorphism khng ch n gin l overriding, m n l overrding thng minh. Khc bit gi Overriding v Polymorphism l trong Polymorphism, s quyt nh gi hm c thc hin khi chng trnh chy.
abstract class Shape { public abstract float calculateArea(); public void displaySomething() { Console.WriteLine("Something is displayed"); } } class Circle:Shape { float radius; public override float calculateArea() { return radius * 22 / 7; } } Khi thc thi chng trnh, bn khng th to i tng cho lp Shape, v n l abstract class.
Namespaces
Khi nim Namespace
ng mang tn v tng danh ting Trn Hng o u c ti Si Gn v H Ni, vy lm sao phn bit khi ngi nc ngoi mun hi v ng Trn Hng o. Cch n gin nht l khi mun gi tn ng Trn Hng o ti H Ni th ta gi ng Trn Hng o ti H Ni v tng t ti Si Gn l ng Trn Hng o ti Si Gn v chc chn chng ta s c cu tr li cho v khch . H Ni, Si Gn trong v d trn l mt v d cho Namespace. Vy c th hiu Namespace l mt gi nhng thc th c thuc tnh v hnh vi c lp vi bn ngoi. Nhng u im ca namespace c lit k nh sau:
Trnh c s trng lp tn gia cc class. Cho php t chc m ngun mt cch c khoa hc v hp l.
Khai bo mt Namespace
namespace NamespaceName { PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
24
Enumerator trong C#
Enums l mt lot tn ca nhng hng s. c s dng nh ngha nhng kiu d liu c mt lot nhng gi tr xc nh. V d sau m t v Enumerator using System; using System.Collections.Generic; using System.Text; namespace __OOP_polymorphism { class Program { static void Main(string[] args) { // Enummerator EnumDemo eobj = newEnumDemo(); eobj.getWeekDay(DayinWeek.Saturday); Console.Read(); } } public enum DayinWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } public class EnumDemo { public void getWeekDay(DayinWeek dayoff) { Console.WriteLine("My weekday is " + dayoff.ToString()); } }
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
25
IO Namespace cha nhng lp cho php thao tc c v ghi d liu n nhng lung d liu v file. Mt s lp ca System.IO c lit k nh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
26
C S D LIU
Mc tiu kha hc ny Sau phn ny, bn c th
Hiu v cc h c s d liu Thao tc d liu vi CSDL MSSQL Server bng cc cu lnh insert, update, delete, select c bn Truy vn d liu t nhiu bng cng lc.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
27
C s d liu
C s d liu l tp hp nhng dng d liu c sp xp theo mt cu trc nht nh.
H qun tr c s d liu
L phn mm c s dng qun tr cc c s d liu.
Bng (Table)
Bng c th c hiu l ni thc s cha d liu mc vt l. Bng l tp hp nhng dng d liu c cng cu trc c nh ngha bi nhng ct (Column), mi dng d liu trong bng cha nhng kiu d liu c qui nh bi nhng ct ca bng.
Thao tc vi h qun tr d liu MSSQL Server Chng ta s cng i thng vo vn thao tc vi mt h c s d liu s dng m lnh chng trnh.
Khi to mt h c s d liu
Cu trc cu lnh n gin khi to mt h c s d liu nh sau:
CREATE DATABASE database_name
To bng
Cu trc cu lnh n gin khi to mt bng trong mt CSDL nh sau CREATE TABLE ( Tn ct 1 Tn ct 2 )
CREATE TABLE MyTable ( id int PRIMARY KEY, vName varchar(150), dbirthday datetime, igender tinyint )
28
Cu lnh truy vn d liu (SELECT) tr v d liu c trong bng. Cu trc cu lnh n gin truy vn d liu t mt bng nh sau: SELECT * | [Ct 1], [Ct 2], FROM [Table Name] V d:
SELECT * FROM MyTable SELECT vname FROM MyTable.
vname A B C D
iid 1 2 3 4 5
icid 1 1 2 3 5
vvalue V1 V2 V1 V1 V1
Chng ta c th thy hai bng ny u c trng icid, v chng ta c th ly d liu t hai bng da vo vic so snh d gi tr trong trng icid hai bng. Cu lnh nh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
29
select c.*, i.iid, vvalue from category c JOIN Items i ON c.icid = i.icid
Kt qu t c nh bng sau 1 1 2 3 A A B C 1 2 3 4 V1 V2 V1 V1
Chng ta c th thy trong bng items c dng d liu vi icid = 5, v dng ny khng tha iu kin so snh (khng tn ti trong bng category) do b loi khi kt qu. Chng ta tip tc thc hin cu truy vn th hai.
select c.*, i.iid, vvalue from category c LEFT JOIN items i ON c.icid = i.icid
Chng ta c c 5 dng kt qu vi dng th 5 c gi tr l NULL, nh th cu lnh trn, vic so snh ch da trn cc gi tr ca ct icid trn bng category hay ni cch khc cu truy vn trn ly tt c cc dng ca bng category (bng bn tri). Ngi ta nh ngha l LEFT JOIN Ngc vi LEFT JOIN l RIGHT JOIN. Chng ta cng xt v d
select c.*, i.iid, vvalue from category c RIGHT JOIN items i ON c.icid = i.icid
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
30
icid 1 1 2 3 NULL
vname A A B C NULL
iid 1 2 3 4 5
vvalue V1 V2 V1 V1 V1
insert into category values('A') insert into items values(1,'V1') Trong hai cu lnh trn, chng ta c th thy, khng c d liu thm cho ct m chnh, iu ny xy ra khi ct m chnh l ct t tng, khi y h thng t gn gi tr ng vi dng c thm.
Lu , khi s dng cu lnh UPDATE, nn s dng iu kin pha sau m bo rng ch c nhng dng tha iu kin mi c cp nht.
Xa d liu t bng
Cu trc cu lnh cp nht d liu trong bng nh sau DELETE TableName [WHERE [IU KIN]] V d
Lu , khi s dng cu lnh DELETE, nn s dng iu kin pha sau m bo rng ch c nhng dng tha iu kin mi c xa.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
31
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
32
Thao tc trn cng c pht trin Visual Studio .NET (IDE) S dng nhng iu khin c bn ca ng dng Window S dng cc lp ca lp CommonDialog Gia tng tin ch cho ng dng bng thanh thc n To h thng ng dng vi MDI Form. Xy dng website, h thng ng dng trn nn tng web. Thc hin ng dng phn tn vi Webservices. Thc hin h thng ng dng theo yu cu ca doanh nghip.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
33
Nm vng kin trc ADO.NET Hiu r nhng i tng thuc ADO.NET Kt ni c s d liu s dng cc hm thuc th vin OleDb Thc hin thm, cp nht, xa d liu
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
34
Nhn d liu c lu tr trong c s d liu v hin th chng ra giao din ngi dng. Cp nht d liu, thc hin thm, hiu chnh, v xa d liu.
ADO.NET l mt m hnh c nhng ng dng .NET s dng giao tip vi c s d liu cho vic nhn, truy cp, v cp nht d liu.
M hnh ADO.NET
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
35
Data Provider
Mt data provider c s dng cho vic kt ni n c s d liu, nhn, lu tr d liu trong dataset, c, nhn v cp nht d liu trong c s d liu. C hai loi data provider:
Ole DB data provider - loi ny lm vic vi tt c OleDB Provider nh Sql OleDB Provider, Oracle OleDb provider, v Jet OleDb Provider. c bit n trong mi trng .NET vi namespace System.Data.OleDb. Sql Server data provider - loi ny lm vic ch vi Microsoft SQL Server. Cho php thao tc vi tc ti u vi h c s d liu MSSQL Server, c bit n vi namespace System.Data.SqlClient.
Kt ni
Kt ni l mt component c s dng thit lp mt kt ni n c s d liu t mt data source. C hai kiu i tng kt ni thng s dng nht l OleDbConnection v SqlConnection. Bng sau y hin th nhng thuc tnh v phng thc hay s dng nht ca mt i tng kt ni. Tn ConnectionString M t Cung cp thng tin nh datasource, tn c s d liu, c s dng thit lp kt ni vi mt c s d liu M mt kt ni ConnectionString vi datasource c khai bo ti
Open()
Close() State
c s dng ng kt ni vi data source c s dng kim tra trng thi ca mt kt ni. 0: kt ni ang ng, 1: kt ni ang m.
Data Adapter
Data Adapter l thnh phn ca ADO.NET, c tc dng chuyn tip d liu t v n c s d liu. data Adapter nhn d liu t c s d liu vo mt DataSet. Khi bn thay i d liu trong dataset, cng l thay i trong c s d liu bi dataadapter. C hai kiu data adapter thng dng cu hnh kt ni n c s d liu trong Visual Studio .NET:
SqlDataAdapter - lm vic ch vi h c s d liu MS SQL Server OleDbDataAdapter - kiu ny c cu hnh lm vic vi hu ht cc h c s d liu c h tr bi OleDb data provider.
Data Adapter s dng i tng kt ni OleDbConnection v SqlConnection c cung cp bi data provider giao tip vi c s d liu.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
36
SelectCommand - nhn d liu t CSDL thng qua mt cu truy vn hoc stored procedures InsertCommand - thm d liu vo CSDL qua cu lnh insert. UpdateCommand - cp nht c s d liu vi cu lnh update DeleteCommand - xa d liu khi c s d liu thng qua cu lnh delete Fill() - l phng thc y d liu t CSDL vo mt dataset. Update() - l phng thc thc thi InsertComand, Update Command, hoc DeleteCommand cho mi cu lnh thm, hiu chnh hoc xa dng thc hin thay i trong CSDL.
Data Command
DataCommand l i tng thc thi nhng cu lnh SQL hoc stored procedure c s dng thao tc vi CSDL. Data Command l i tng ca lp SqlCommand v OleDbCommand. V d s dng Data Command
string connectionstring = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open(); OleDbCommand cmd = new OleDbCommand("delete from books where ibookid='003'",conObj); int result = cmd.ExecuteNonQuery(); conObj.Close();
Data Reader
Data reader c s dng ch nhn d liu t mt data source. S dng data reader nhn c kt qu nhanh hn v khng tn b nh ti mi thi im v ch mt hng d liu thc s c lu tr trong b nh. Cc thuc tnh ca i tng DataReader: Tn Read() Close() NextResult M t Phng thc c s dng c mt dng. c s dng ng i tng DataReader. c s dng di chuyn n hng d liu tip theo trong trng hp cu lnh truy vn tr li nhiu dng kt qu
private void button2_Click(object sender, EventArgs e) PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
37
{ string connectionstring = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open(); OleDbCommand cmd = new OleDbCommand("select * from books"); OleDbDataReader dr; dr = cmd.ExecuteReader(); while (dr.Read()) { lbltestdatareader.Text = dr["BookID"].ToString(); } conObj.Close(); }
DataSet
L i tng nhn d liu t c s d liu thng qua DataAdapter, DataSet hot ng nh mt c s d liu o cha nhng bng, dng, v ct. M hnh DataSet nh sau
M hnh Dataset
Cc i tng thuc tnh cn quan tm vi i tng DataSet bao gm: DatatableCollection, DataRelationCollection, ExtendedProperties, DataTable, DataRelation, DataRowCollection, DataView, PrimaryKey, DataColumnCollection. Chi tit nhng i tng thuc tnh ny s c cp trong cc phn sau. V d s dng DataAdapter y d liu t c s d liu vo DataSet.
private void button3_Click(object sender, EventArgs e) { string connectionstring = "PROVIDER=SQLOLEDB;server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
38
conObj.Open(); OleDbCommand cmd = new OleDbCommand("select * from books"); OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "books"); conObj.Close(); }
BI TP C HNG DN Yu cu ng dng qun l cuc gi cn cung cp kh nng xem chi tit khch hng cho b phn Bn hng. Hy to mt ng dng hin th chi tit khch hng cho phng Kinh doanh.
Gii quyt Bn thc hin nhng bc sau 1. 2. 3. 4. To mt To mt To mt Nhn v kt ni Data Adapter Dataset hin th d liu t c s d liu.
BI TP T RN LUYN
Yu cu Mt ng dng cn c xy dng cho php ngi qun l ca cng ty NetNam Telecommunication xem nhng n t hng ca khch t c s d liu. Thm vo , vi mi t hng, phn trm chi ph ca mt sn phm cn c lit k.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
39
Data Binding
Khi nim Data Binding
Sau khi nhn d liu t c s d liu, d liu cn c hin th trn nhng control ca Windows Form ngi s dng thy. Qu trnh gi l Data Binding.
Hng dn: Thc hin theo video hng dn. Tn video: PTA_NET_2_0_ADO_Databinding.WMV
Lc v sp xp d liu
D liu ly v t c s d liu bi cu lnh truy vn dng d liu trong mt bng. Yu cu t ra l ch tng ng vi mt m s no . gii quyt vn cch thc thc hin: lc d liu trong DataSet v thit qua cu lnh SQL c tham s. select bao gm tt c cc ly mt s dng xc nh ny, ADO.NET cung cp hai thc hin ly d liu cn
Lc mt Dataset
D liu t mt table trong c s d liu c lt ton b v vo Dataset, sau tin hnh lc nhng dng d liu cn thit. V d sau m t cch thc hin ny.
private void button4_Click(object sender, EventArgs e) { string connectionstring = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open(); OleDbCommand cmd = new OleDbCommand("select * from books",conObj); OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "books"); MessageBox.Show( ds.Tables["books"].Rows.Count.ToString()); // filter data DataView dv = new DataView(ds.Tables["books"]); dv.RowFilter = "fprice>20000"; dv.Sort = "fprice DESC"; MessageBox.Show(dv.Table.Rows.Count.ToString()); conObj.Close(); }
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
40
V d sau s ly v danh sch nhng quyn sch c nh xut bn l cng ty pht hnh sch nh xut bn tr. (m s inxb=2);
string connectionstring = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open(); OleDbCommand cmd = new OleDbCommand(" select * from books where inxb=?", conObj); cmd.CommandType = CommandType.Text; // truyn tham s vo cu lnh SQL cmd.Parameters.Add("@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();
Bn lu vi dng lnh cmd.Parameters.Add("@ibookid", 2); y l cch s dng ngn gn khi truyn tham s m nhng chuyn gia pht trin phn mm thc t thng s dng, nguyn mu cu lnh c cng thc nh sau:
string connectionstring = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open(); OleDbCommand cmd = new OleDbCommand("insert books values(?,?,?,?)", conObj); cmd.CommandType = CommandType.Text; cmd.Parameters.Add("@inxb", 2);// Nha xuat ban tre cmd.Parameters.Add("@vmasach", "MS0002"); cmd.Parameters.Add("@vtensach", "Lp trnh .NET cho cuc sng"); cmd.Parameters.Add("@fgia", 75000); cmd.ExecuteNonQuery(); MessageBox.Show(" thm mt sch vo CSDL"); conObj.Close();
v d trn, cu lnh SQL insert c thc hin kt hp vi i tng tham s Parameters y d liu vo c s d liu thng qua i tng Command.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
41
private void button7_Click(object sender, EventArgs e) { string connectionstring = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open(); OleDbCommand cmd = new OleDbCommand("update books set vtensach=?,fgia=? where vmasach=?",conObj); cmd.CommandType = CommandType.Text; cmd.Parameters.Add("@vtensach", ".NET for Real Life"); cmd.Parameters.Add("@fgia", 85000); cmd.Parameters.Add("@vmasach", "MS0002"); cmd.ExecuteNonQuery(); MessageBox.Show(" sa i ni dung sch trong CSDL"); conObj.Close(); }
Xa d liu
private void button8_Click(object sender, EventArgs e) { string connectionstring = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; OleDbConnection conObj = new OleDbConnection(connectionstring); conObj.Open(); OleDbCommand cmd = new OleDbCommand("delete from books where vmasach=?", conObj); cmd.CommandType = CommandType.Text; cmd.Parameters.Add("@vmasach", "MS0002"); cmd.ExecuteNonQuery(); MessageBox.Show(" sa i ni dung sch trong CSDL"); conObj.Close(); }
Chng ta hc
By gi, bn c th hon ton thao tc trn c s d liu t ng dng bn pht trin. Mt s im sau bn cn lu ghi nh PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
42
Kt ni lun phi c ng li sau mi ln truy xut n c s d liu. S dng i tng Data Adapter, DataSet v i tng Command trong thao tc nhn d liu t CSDL S dng Command thao tc cp nht, thm mi, xa d liu S dng DataReader c tc truy xut (ch nhn) d liu nhanh nht.
using System; using System.Data; using System.Data.OleDb; public class OleDBClass { static string strConStr = ""; public static string ConnectingString { get { if (!strConStr.Equals("")) return strConStr; else return null; } set { strConStr = value; } } public static OleDbConnection GetConnection() { OleDbConnection con = new OleDbConnection(strConStr); con.Open(); return con; } public static DataTable GetData(OleDbCommand cmd) { PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
43
try { if (cmd.Connection != null) { using (DataSet ds = new DataSet()) { using (OleDbDataAdapter da = new OleDbDataAdapter()) { da.SelectCommand = cmd; da.Fill(ds); return ds.Tables[0]; } } } else { using (OleDbConnection conn = GetConnection()) { using (DataSet ds = new DataSet()) { using (OleDbDataAdapter da = new OleDbDataAdapter()) { da.SelectCommand = cmd; da.SelectCommand.Connection = conn; da.Fill(ds); return ds.Tables[0]; } } } } } finally { } } public static OleDbDataReader GetReadOnlyData(OleDbCommand cmd) { try { if (cmd.Connection != null) { return cmd.ExecuteReader(); } else { using (OleDbConnection conn = GetConnection()) { cmd.Connection = conn; datareader = cmd.ExecuteReader(); return cmd.ExecuteReader(); } } } finally { } } public static DataSet GetDsData(OleDbCommand cmd) { PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
44
try { if (cmd.Connection != null) { using (DataSet ds = new DataSet()) { using (OleDbDataAdapter da = new OleDbDataAdapter()) { da.SelectCommand = cmd; da.Fill(ds); return ds; } } } else { using (OleDbConnection conn = GetConnection()) { using (DataSet ds = new DataSet()) { using (OleDbDataAdapter da = new OleDbDataAdapter()) { da.SelectCommand = cmd; da.SelectCommand.Connection = conn; da.Fill(ds); return ds; } } } } } finally { } } public static DataTable GetData(string sql) { try { using (OleDbConnection conn = GetConnection()) { using (OleDbCommand cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = sql; using (DataSet ds = new DataSet()) { using (OleDbDataAdapter da = new OleDbDataAdapter()) { da.SelectCommand = cmd; da.SelectCommand.Connection = conn; da.Fill(ds); return ds.Tables[0]; } } } } } finally { } } public static void ExecuteNonQuery(OleDbCommand cmd) PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
45
{ try { using (OleDbConnection conn = GetConnection()) { cmd.Connection = conn; cmd.ExecuteNonQuery(); } } finally { } } public static object ExecuteScalar(OleDbCommand cmd) { try { using (OleDbConnection conn = GetConnection()) { cmd.Connection = conn; return cmd.ExecuteScalar(); } } finally { } } }
DBClass.ConnectingString = "PROVIDER=SQLOLEDB; server=(local);uid=_net;pwd=;database=_NET"; // vic gi mt cu truy vn by gi n gin l vic gi hm trong lp DBClass DataTable dt = DBClass.GetData("select * from items");
Chng ta c th thy l vic thc hin cu truy vn d liu t bng items tr nn cc k n gin hn bao gi ht. Khng cn phi m kt ni Connection, s dng DataAdapter bn vn c c d liu t bng items. Ni cho ng th chng ta a nhng cng don ny vo trong lp OleDBClass v gi y chng ta ch quan tm ti mc ch s dng cu truy vn m khng mt qu nhiu m lnh thc hin cc bc chun b.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
46
Trong ca s New Project, Project Types pane hin th danh mc nhng kiu project m bn c th to trong VS. Chng ta quan tm ti hai loi project l Visual C# v Setup and Deployment. Trong khi Visual C# l kiu d n cho php to ra ng dng bng ngn ng C#, th Setup and Deployment l kiu project trin khai d n n ngi dng cui. Chn Visual C# Windows ti Project Types. ca s Templates, mt s mu ng dng c sn gip ngi pht trin nhanh chng to ra ng dng ph hp theo yu cu. C cc kiu project template sau cn ch nht:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
47
Class Library: s dng to ra nhng compnent s dng li trong cc d n khc Windows Controls Library: to nhng cng c cho mi trng ng dng Window Console Application: to ra ng dng console chy t dng lnh, giao din k t.
Chn Windows Application t tn cho d n u tin l HelloWindow ti Name Chn th mc lu tr d n ti Location Click OK Mn hnh d n xut hin nh sau
ToolBox
Solution Exlorer
Error List
Window Form
Mn hnh Visual Studio .NET IDE
Properties Window
Chng ta quan tm n nhng ca s sau: Window Form: ni s dng thit k giao din chng trnh.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
48
ToolBox: cha ng nhng controls c xy dng sn. C nhiu tab trong ca s ToolBox lit k nhng control theo nhng loi khc nhau. Solution Explorer: lit k tn d n, nhng file thit k, m ngun, ca ng dng Properties Window: ca s cha ng nhng thuc tnh ca mt control no , v d Form1 c cc thuc tnh nh Text, StartPosition, ShowinTaskBar Erros List: ni xut hin nhng li ca chng trnh
Tip tc thc hin ng dng, ti Window Form, click chut phi, mt popup Menu xut hin, trong c mc View Code, mc ny cho php xut hin ca s son tho m lnh iu khin chng trnh
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
49
Ca s m lnh cho php nh pht trin son tho m lnh iu khin chng trnh
Tip tc thc hin ng dng, tr li mn hnh Window Form, double click vo Form1, v son tho m lnh nh sau vo hm Form_Load() do chng trnh khi to.
private void Form1_Load(object sender, EventArgs e) { MessageBox.Show("Welcome to Window Form"); } Chn menu Debug Start Debugging (hoc nhn F5) chy ng dng.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
50
Bn hon tt ng dng Window Form u tin vi C#. by gi, ti cng bn tip cn n nhng iu khin trong th vin WindowsForm c cung c sn trong C#.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
51
Windows Form
Text WindowState
Xc nh tiu ca form ti Title Bar Xc nh trng thi xut hin ca form: normal, maximized, hay minimized.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
52
M t S kin xy ra khi chut c nhn trn form S kin xy ra khi chut c th trn form.
Hm thao tc vi Windows Form Methods Show() M t c s dng xut hin mt form bng cch set thuc tnh Visible ca form y l True S dng kch hot trng thi s dng ca Form v a trng thi s dng v Form y. Dng ng mt Form Hm ny dng nh v tr ca Form trn mn hnh V d Form1 frmObj = new Form1(); frmObj.Show();
Activate()
frmObj.Activate();
Close()
frmObj.Close();
SetDesktopLocation()
SetDesktopLocation(100,150)
TextBox Control
TextBox l iu khin cho php nhn gi tr t ngi dng trn mt Form. Mc nh gi tr ln nht m TextBox nhn l 2048 k t.
Multiline
Cho php TextBox hin th nhiu dng ch. Thuc tnh ny cho php ly mt k t lm i din cho tt c cc k t khc c nhp vo t ngi dng
txtContent.Multiline = true;
PasswordChar
txtPassword.PasswordChar=*;
Label Control
Control c s dng hin th ch trn form v khng cho php ngi dng thay i. Label c s dng m t thng tin cho nhng control khc trn Form.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
53
Label Control Dng ch xut hin bn trn TextBox l Label, c mc ch gii thch cho TextBox.
LinkLabel Control
LinkLabel c s dng hin th mt chui nh mt lin kt. Khi bn nhn vo lin kt, n s m ra mt form khc hoc mt Website. m ra mt form khc, .NET cung cp s kin LinkClicked, bn thc hin nh sau:
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Form1 frmobj = new Form1(); frmobj.Show(); }
ListBox Control
ListBox c s dng hin th mt danh sch phn t n ngi dng. Mt ngi dng c th chn mt trong nhng phn t ny. Bn c th thm danh mc nhng phn t vo trong mt ListBox bng cch, chn ListBox, ti ca s Properties Window, chn thuc tnh Items, nhn vo nt v ca s String Collection Editor xut hin nh hnh di.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
54
Nhp vo VietNam, g Enter, nhp vo USA, g Enter. Sau nhn OK. ListBox ca bn s c hai phn t VietNam v USA. Bn cng c th thm nhng phn t vo ListBox ti lc chy chng trnh bng cch s dng phng thc Add() ca thuc tnh Items trong ListBox.
lstitems.Items.Add("German"); lstitems.Items.Add("China");
Nhng thuc tnh thng s dng nht ca ListBox c lit k theo bng di y Property SelectionMode M t Xc nh cch thc m ngi dng la chn nhng phn t trong ListBox. C 4 gi tr - None: ngi dng khng th chn bt c phn t no trong ListBox - One: ngi s dng ch chn mt gi tr t ListBox - MultiSimple: cho php ngi s dng chn nhiu phn t t ListBox. - MultiExtended: ngi dng c th chn nhiu phn t v s dng phm SHIFT, CTRL v phm mi tn chn nhng phn t t ListBox. V d ListBox1.SelectionMode = SelectionMode. MultiSimple;
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
55
Property Sorted
V d ListBox1.Sorted = true;
SelectedIndex
Thuc tnh cho php gn hoc nhn v tr c chn hin ti trong ListBox.
ListBox1.SelectedIndex = 2;
SelectedItem
MessageBox.Show( ListBox1.SelectedItem)
ComboBox Control
ComboBox c s dng hin th danh sch nhng phn t th xung. ComboBox l s kt hp ca TextBox cho php ngi dng nhp gi tr v mt danh sch th xung cho php ngi s dng chn phn t.
ComboBox Hu ht nhng thuc tnh ca ComboBox ging nh thuc tnh ca ListBox, nhng ComboBox c th thuc tnh Text. Thuc tnh Text: cho php gn hoc nhn gi tr c ngi s dng nhp vo t ComboBox. thm nhng phn t vo ComboBox, tng t nh vi ListBox, bng cch s dng phng thc Add() ca thuc tnh Items.
ComboBox1.Items.Add(VietNam); ComboBox1.Items.Add(Thailand);
CheckBox Control
Control ny c dng gn ty chn Yes/No hoc True/False. Nhng thuc tnh thng s dng ca CheckBox Property Text M t Thuc tnh ny s dng nhn hoc gn chui k t l tiu ca Checkbox V d CheckBox1.Text = Yes;
Checked
checkBox1.Checked = true;
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
56
Property
M t
V d
RadioButton Control
RadioButton c dng cung cp s la chn mt trong mt nhm tiu ch cho ngi dng. Ch mt RadioButton c chn trong mt nhm. Nhng thuc tnh thng s dng ca RadioButton ging nh CheckBox, bao gm: Text, Checked.
GroupBox Control
c s dng nhm nhng control lin quan li vi nhau. GroupBox thng c s dng nhm hai hay nhiu RadioButton cung cp mt s la chn duy nht gia chng.
Button Control
Button c s dng thc hin mt tc v khi ngi s dng nhn vo n.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
57
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
58
Lp FontDialog
Ging nh ColorDialog, FontDialog c s dng ngi dng la chn kiu hin th, kch thc ca ch. s dng FontDialog, bn thc hin theo cc bc sau y Ko th FontDialog t ToolBox vo Form. Thc hin on m lnh sau
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
59
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
60
Context Menus c xut hin khi ngi s dng nhn chut phi. to ra context menu, bn c th thc hin nh sau: Ko th iu khin ContextMenuStrip vo ca s thit k ng dng. ContextMenu xut hin nh hnh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
61
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
62
Bi tp c hng dn
1. Xy dng ng dng my tnh c nhn thc hin cc php tnh cn bn: cng, tr, nhn, chia, ly tha 2. To mt giao din cho ng dng son tho m phng ng dng Microsoft Word s dng MDI Form bao gm cc Menu: File, Edit, View, Insert, Format, Window, Help 3. Xy dng ng dng son tho vn bn (Word Pad) s dng MDI Form to trn.
Bi tp t luyn
Xy dng tr chi Tp g bn phm cho php xut hin nhng k t trn bn phm v so snh vi phm m ngi s dng nhp vo. Tnh kt qu s ln ngi chi g ng phm v s ln ngi chi g sai.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
63
int SafeDivision(int x, int y) { try { return (x / y); } catch (System.DivideByZeroException dbz) { System.Console.WriteLine("Li khi chia mt s cho 0!"); return 0; } }
v d trn, bn c th thy vi hm SafeDivision nu truyn vo hai tham s x=2, y=0 th chng trnh s gp li. Nhng khi chy chng trnh, nu bn gi hm SafeDivision, v truyn vo hai tham s nh trn s xut hin dng ch Division by zero attempted!!, nh th li ca on m lnh c qun l. S d li xy ra c qun l l do chng ta s dng by li m C# cung cp thng qua t kha trycatch. Cng thc ca trycatch nh sau:
try { // Cu lnh thc hin c th pht sinh li } catch(Type x) { // Cu lnh x l khi gp li } finally { // Cu lnh lun c thc thi }
Vi cng thc trn, bn cn ch mt im, nhng cu lnh trong khi finally c xem nh lun lun c thc thi.
Bi tp c hng dn
1. Xy dng ng dng cho php qun l danh sch nhn vin ca mt cng ty theo phng ban. Chi tit nhn vin cng ty bao gm: m s, h v tn, ngy PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
64
sinh, gii tnh, a ch, in thoi, ngy vo lm, ngy kt thc, chi tit phng ban bao gm: m s phng ban, tn phng ban. 2. Xy dng chng trnh qun l kho hng, sn xut ca cng ty chi GlobalToys. Video hng dn thc hin chng trnh PTA_NET_APP_ADO_NET.WMV
Qun l danh mc sn phm hng ha trong kho Qun l xut nhp kho Bo co thng k: s lng hng ha trong kho, bo co xut kho, bo co nhp kho. Phn quyn s dng tnh nng ca chng trnh theo cc cp sau: o o Nhn vin nhp/xut hng: s dng ca s nhp, xut hng Qun tr vin: s dng tt c tnh nng ca chng trnh.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
65
Nm vng m hnh pht trin web ng vi ASP.NET. Hin th, truy vn d liu trong CSDL t trang web Xy dng Website phc v yu cu khch hng. Xy dng ng dng doanh nghip trn nn tng web.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
66
M ng dng Visual Studio .NET 2005 bng cch vo menu Start All Programs Visual Studio 2005 Visual Studio 2005. Sau chn Menu File New Website.
Ca s New Web Site xut hin cho php khi to cc loi webiste khc nhau
Visual Studio cung cp nhiu loi website mu, chng ta quan tm n cc kiu mu website sau:
ASP.NET Webiste - y l kiu mc nh, kiu template ny cho php xy dng mt ng dng website trn nn tng ASP.NET. ASP.NET Web Service - kiu template ny cho php xy dng mt dch v x l trc tuyn trn nn tng Internet.
khung ca s Templates, chn ASP.NET Web Site. Khung Location, chn th mc lu tr website, bn c th thay i a ch th mc lu tr bng cch nhn vo nt .
khung Language, chn ngn ng lp trnh Visual C#. Nhn OK bt u. Ca s thit k website xut hin:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
67
y l mn hnh son tho cu trc cho Visual Studio cng cung cp mt mn hnh Design mn hnh thit k xut hin, vi php ko th cc control vo ca s thit
website cn xy dng (tab Source), v thit k web hon chnh, click vo tab cng c ti ToolBox v giao din cho k web.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
68
Double click vo mn hnh thit k, hoc ti ca s Solution Explorer, chn File Default.aspx, click chut phi v chn View Code, ca s son tho m lnh cho trang web xut hin.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
69
Mc nh hm Page_Load() xut hin, trong thn hm ny, ta vit dng m lnh sau. Response.Write("Welcome to ASP.NET World"); Nhn F5 chy chng trnh. Kt qu nh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
70
ng dng u tin ca chng ta hon tt. Qua ng dng u tin chng ta c th rt ra c mt iu l, vic xy dng cc ng dng website ASP.NET ging nh vic xy dng nhng ng dng Window c xy dng bng Visual Studio .NET. v bn hy hnh dung vic xy dng website cng ging nh vic xy dng mt ng dng Windows m chng ta hc phn trc.
S kin Page_Load()
S kin Page_Load() cng ging nh hm Main() trong chng trnh Windows Form. Hm Page_load c gi u tin khi mt trang c ti v trnh duyt ca ngi s dng. S kin Page_Load nh sau
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
71
Cc i tng ASP.NET
ASP.NET c mt s i tng c bit cn quan tm c th hin nh sau i tng Request V d: khi bn truy cp website itgatevn.com.vn, bn s thy trn thanh a ch web nh sau http://www.itgatevn.com.vn Khi bn vo mt bi tin no , thanh a ch c dng nh sau: http://www.itgatevn.com.vn/index.aspx?u=nd&scid=14&nid=4442 Vic chuyn thnh dng th hai c ngha rng mt tin vi m s nid=4442, v chng trnh s cung cp cho ngi s dng, v ly m s duyt, ASP.NET cung cp i tng Request. i tnh Thuc tnh ApplicationPath Url UserHostAddress Browser M t y l thuc tnh ch c, cung cp ng dn ca ng dng ASP.NET trn my ch trin khai. Thuc tnh ch c, tr li i tng URI cha ng a ch hon chnh ca mt yu cu. Tr li a ch IP ca my ngi s dng Tr li i tng HttpBrowserCapabilities cha nhng thng tin v kh nng ca browser trn my ngi dng. Tr v i tng HttpCookiecollection cung cp nhng bin cookie ca client. Cung cp kh nng truy cp n nhng tham s trn thanh a ch. Cung cp kh nng ly d liu c gi t Form d liu ngi s dng ang xem chi tit ly ng bn tin vi m s trn ny t thanh a ch trn trnh tng Request gm c cc thuc
Cookies
QueryString
Form
protected void Page_Load(object sender, EventArgs e) { Response.Write("Application Path: " + Request.ApplicationPath); Response.Write("<br>Url: " + Request.Url.ToString()); Response.Write("<br>User Host Address: " + Request.UserHostAddress); Response.Write("<br>Browser Name: " + Request.Browser.Browser); Response.Write("<br>Browser Version: " + Request.Browser.Version); }
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
72
V d v cch s dng thuc tnh Form ca i tng Request nhn d liu t Form. <input type="checkbox" id="chk" name="chk" value="1"/> M lnh ly gi tr ca iu khin checkbo chk t Form. protected void Button_Click(object sender, EventArgs e) { // Nhn gi tr ca checkbox trong form. string checkvalue = Request.Form["chk"]; }
i tng Response
i tng Response c nhim v gi thng tin n trnh duyt ngi s dng (Client). Nhng thuc tnh v hm thng s dng ca i tng Response c m t nh bng sau Tn ApplicationPath Cache ContentType Cookies M t y l thuc tnh ch c, cung cp ng dn ca ng dng ASP.NET trn my ch trin khai. Cung cp nhng thuc tnh v kh nng lu tr nh thi gian ht hn, ci t ring ca website. y l thuc tnh ch c. Cho php gn hoc nhn kiu d liu c truyn n trnh duyt ngi s dng (Client) thng qua i tng Response. Cho php gn mt cookie vo trnh duyt ngi s dng Tr li gi tr ng/sai xc nh khi no ngi dng kt ni hoc khng kt ni n ng dng. Hm cho php chuyn n mt a ch c xc nh trong tham s truyn vo n trnh duyt ngi s dng c s dng gi mt chui k t xut hin ra mn hnh.
i tng Session
i tng Session cho php ng dng ASP.NET lu tr trng dng. Session bt u v kt thc khi ngi s dng kt ni n mt trang web, session cng c t ng tt khi ngi trang web trong mt thi gian xc nh, thi gian mc nh l Tn Count SessionID Timeout M t Tr v s lng session trong Session-state Tr v mt session xc nh trong Session-state Cho php gn hoc nhn thi gian t ng hy b session tnh bng pht. thi ca ngi s v tt trnh duyt dng khng s dng 20 pht.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
73
M t Hm cho php th mt item vo Session-state c s dng xa ton b gi tr c lu tr trong Session-State. c s dng loi b mt item trong Session-state
V d gn gi tr cho bin Session // Gn gi tr kiu s cho Session Session[intvalue] = 1; // Gn gi tr kiu chui cho Session Session[stringvalue] = Welcome to ASP.NET Session; // gn gi tr kiu DataTable cho Session DataTable dt = new DataTable(); dt.Columns.Add("col1"); dt.Columns.Add("col2"); dt.Columns.Add("col3"); Session["datatablevalue"] = dt; V d ly gi tr t bin Session // Ly gi tr kiu integer int ivalue = Convert.ToInt32(Session["intvalue"]); // Ly gi tr t Session string svalue = Session["stringvalue"].ToString(); // Ly gi tr kiu DataTable t Session DataTable dtvalue = new DataTable(); dtvalue = (DataTable)Session["datatablevalue"];
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
74
M lnh <input type=image runat=server /> <a runat=server></a> <input type=button runat=server /> <table id="table1" runat=server></table> <tr></tr> <td></td>
HtmlAnchor
iu khin HtmlAnchor lm vic nh tag <a> ca HTML nhng chy ti my ch, HtmlAnchor c s dng chuyn ngi dng t mt trang n mt trang khc. V d: <a id=myanchor1 href="http://www.itgatevn.com.vn" runat=server></a> Trong ,
id=myanchor1 - l tn duy nht ca mt control trn mt trang href="http://www.itgatevn.com.vn" - l a ch m anchor s chuyn ngi dng n, y l trang itgatevn c a ch http://www.itgatevn.com.vn
HtmlInputText
HtmlInputText lm vic nh th HTML <input type=Text>, nhng chy ti my ch. HtmlInputText c s dng nhn d liu t ngi dng.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
75
HtmlInputCheckBox
HtmlInputCheckBox lm vic nh th HTML <input type=checkbox>, nhng chy ti my ch. HtmlInputCheckBox c s dng thc hin cu hi vi tr li l C hoc Khng. V d: <input id=chkCoffeeorNot type=checkbox checked runat=server />
HtmlInputRadioButton
HtmlInputRadioButton lm vic nh th HTML <input type=radio>, nhng chy ti my ch. HtmlInputRadioButton c s dng thc hin mt s la chn khi c nhiu la chn c a ra cho ngi dng chn la. V d: <input id=radioChooseOne type=radio checked runat=server />
HtmlSelect Control
HtmlSelect lm vic nh th HTML <select>, nhng chy ti my ch. HtmlSelect c s dng to ra mt danh sch cho php ngi s dng la chn mt trong danh sch . V d: <select runat=server> <option>MU</option> <option>Asenal</option> <option>Bonton</option> <option>Chelsea</option> </select>
ListControls
RichWebControls
Data Controls
Bn c th tm thy nhng Control ny ti ToolBox. Vi nhng WebForm Control, bn hy hnh dung chng nhng nhng Control trn mi trng Window Form. Vi nhng Web Control, ASP.NET cho php bn xy dng nhng PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
76
ng dng mnh m trn mi trng internet tng t nh trn mi trng ng dng bn.
TextBox Control
c s dng nhn d liu t ngi s dng, nh k t, s, ngy thng Thuc tnh quan trng nht ca TextBox c lit k nh sau: Thuc tnh Text M t Cho php gn gi tr hin th trong textbox hoc nhn gi tr do ngi dng nhp vo. C ba gi tr tng ng vi 3 dng khc nhau ca TextBox - Single Line - d liu hin th trn 1 dng. - Password - s dng cho mt khu. - Multiline - d liu hin th trn nhiu dng.
TextMode
Literal Control
Literal c s dng hin th d liu m khng quan tm n nh dng ca d liu y. iu khin ny thch hp hin th d liu di dng ni dung, do , thuc tnh chnh ca Literal l thuc tnh Text. Bn c th tm thy iu khin Literal di biu tng V d s dng Literal Literal1.Text = "This is literal contron"; trn thanh Toolbox.
FileUpload Control
FileUpload l thuc tnh c s dng cho php ti mt tp tin bt k ln my ch web. y l iu khin c tch hp vo cc phin bn ASP.NET 2.0 tr v sau. Bn c th tm thy iu khin ny ti thanh cng c vi biu tng
V d s dng File Upload // kim tra c file upload if (FileUpload1.FileName.Length > 0) { // kim tra ni dung ca file if (FileUpload1.PostedFile.ContentLength > 0) { // lu file vo th mc uploadfile FileUpload1.PostedFile.SaveAs("uploadfile/" + System.IO.Path.GetFileName(FileUpload1.FileName)); } }
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
77
Panel Control
Panel l iu khin c s dng cha nhng nhm iu khin cho mt chc nng ring, Panel cho php iu khin vic hin th nhng iu khin c cha trong n. Cc bn xem hng dn s dng Panel trong file km theo ti liu ny.
Calendar Control
Calendar c s dng hin th ngy thng. Ngi s dng c th xem ngy thng theo tun hoc thng. Nhng thuc tnh thng s dng bao gm Thuc tnh DayNameFormat M t Thuc tnh ny c s dng xc nh nh dng tn ca nhng ngy trong tun. c s dng xc nh thng c xut hin hay khng trong Calendar. Thuc tnh ny c cp nht sau khi s kin VisibleMonthChanged c thc hin. Thuc tnh ny c s dng xc nh ngy ca tun c xut hin ti ct u tin ca iu khin Calendar. Thuc tnh ny c dng biu din cho ngy c chn trong iu khin Calendar. Thuc tnh ny c s dng xc nh khi no mt ngi dng c th chojnmoojt ngy, mt tun, hoc mt thng. Mc nh, gi tr ca thuc tnh ny l Day.
VisibleDate
FirstdayOfWeek
SelectedDate
SelectionMode
DropDownList Control
Nh Select Control mt mc trong danh c cc thuc tnh DropDownList thng chy. trong Html, DropDownList Control cho php ngi s dng chn mc c nhngha trc. Mi mc l mt i tng ring bit ring nh Text, Value v Selected. Bn c th thm mc vo qua thuc tnh Items lc thit k hoc ngay khi chng trnh
protected void Page_Load(object sender, EventArgs e) PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
78
Ngoi ra, DropDownList cn c kh nng nhn d liu t ng t c s d liu thng qua thuc tnh DataSource v phng thc DataBind(). M lnh gn DataSource cho DropDownList khi chng trnh ang chy
protected void Page_Load(object sender, EventArgs e) { this.DropDownList1.DataSource = ds; // ds l mt DataSet cha d liu c ly t C s d liu. this.DropDownList1.DataBind(); }
Cc cng c khc khng c gii thiu y nhng cch thc s dng cng c c biu din trong file hng dn: PTA_NET_2_0_WEB_CONTROLS.WMV v v d km theo ti liu.
Thm iu khin khi chng trnh chy. i khi, bn cn thm nhng iu khin vo trang web khi chng trnh ang chy, ASP.NET cung cp kh nng ny cho nh pht trin. Trc tin bn cn xc nh ch t iu khin, c hai cng c bn c th s dng t ch cha ng cc control cn to.
PlaceHolder Panel
protected void Page_Load(object sender, EventArgs e) { Calendar cl = new Calendar(); PlaceHolder1.Controls.Add(cl); // mt calendar Placeholder trn trang. }
thm
vo
Chng ta s s dng k hn PlaceHolder Control trong phn thc hin kin trc WebPortal trong phn sau.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
79
ASP.NET cung cp cho nh pht trin nhng s kin i km vi mi iu khin, v d sau s hng dn bn cch thc xem s kin, v s dng nhng s kin m ASP.NET cung cp. To mi mt ng dng Website, ti mn hnh thit k, ko th vo ca s thit kt mt DropDownList. Chn DropDownList y v m ca s Properties. Trn ca s Properties ca DropDownList, nhn vo biu tng , cc s kin ca iu khin ny xut hin, chn mt s kin v nhn Enter, VisualStudio t ng pht sinh ra s kin y trong mn hnh son tho m lnh iu khin chng trnh.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
80
T lc ny, khi ngi dng chn thay i mt mc ti DropDownList, chng trnh s kim tra thc hin thao tc ny thng qua s kin DropDownList1_SelectedIndexChange(). y cng l cch thc chung xem mi Control c bao nhiu s kin v kim sot s s kin khai bo cho mi Control. Xem v d thc hin iu khin Control PTA_NET_2_0_Control_CONTROLS.WMV
Bi tp 1 To mt ng dng Web cho php ngi s dng nhp Email, sau hin th Email va nhp ln mn hnh. Hng dn Bn hy thc hin cc bc sau:
To mt ng dng Web Hin th ca s thit kt. Ko th mt TextBox Control vo ca s thit k. Ko tht mt Button Control vo ca s thit k.
Chn ButtonControl, m ca s Properties, chn , chn s kin Click, nhn Enter, s kin Click c xut hin trong ca s son tho lnh iu khin chng trnh, son tho on m lnh sau Response.Write(this.TextBox1.Text); Nhn F5 thc thi chng trnh.
Bi tp 2 Thc hin mt ng dng website cho php ngi s dng khai bo thng tin c nhn bao gm: h v tn, gii tnh, ngy sinh, a ch, in thoi, th in t (email), ngh nghip, c quan (cng ty hoc trng hc), v thng tin gii thiu v bn thn. Sau lu tr vo c s d liu.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
81
Ly d liu t c s d liu v vo mt i tng lu tr (thng l DataSet, DataTable). Khai bo ngun d liu (DataSource) cho i tng giao din ngi dng (Web Control). Thc hin lnh DataBinding() hin thc qu trnh binding d liu.
Kt ni c s d liu chng ta hc cc phn trc, do hai bc: khai bo ngun d liu v thc hin lnh DataBinding() s c tm hiu su v k bn c th nm r.
using using using using using using using using using using
System; System.Data; System.Configuration; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Web.UI.HtmlControls; System.Data.OleDb;
public partial class _Default : System.Web.UI.Page { string str_connection = "Provider=SQLOLEDB;server=(local);database=_NET;uid=_net;pwd="; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
82
{ OleDbConnection conobj = new OleDbConnection(str_connection); conobj.Open(); OleDbCommand cmd = new OleDbCommand("select * from booktypes", conobj); OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "booktypes"); // xc nh DataSource bind d liu this.ddltypes.DataSource = ds.Tables["booktypes"]; this.ddltypes.DataTextField = "vbooktypename"; this.ddltypes.DataValueField = "itypeid"; // Gi hm DataBind() thc hin bind d liu gia CSDL v DropDownList ddltypes this.ddltypes.DataBind(); conobj.Close(); } } }
83
STT
Cn phi c phn u, phn thn, v phn cui ca mt danh sch, trong phn u m t nhng ni dung c th hin trong phn thn, v phn cui l tng kt cho danh sch phn thn. Template trong ASP.NET cng nh vy, c ba phn chnh:
HeaderTemplate: nh dng cho phn u ca danh sch ItemTemplte: nh dng cho phn thn ca danh sch FooterTemplate: nh dng cho phn cui ca danh sch.
Ngoi ra cn c cc Template khc nh AlternatingItemTemplate, SelectedItemTemplate, SeparatorTemplate chng ta s cp nhng khun mu ny khi thc hin mt v d c th no .
Repeater Control
Mt Repeater control hin th d liu t nhng ngun d liu khc nhau bng cch s dng nhng giao din c thit k. Repeater khng c giao din, v c hin th nh hnh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
84
Bn cn phi to template xy dng giao din cho Repeater. V d: Qun l nh trng mun xem danh sch hc sinh theo lp, bn cn thc hin ng dng p ng yu cu ny. Bn thc hin ng dng nh sau:
To mt ng dng web Ko th mt DropDownList hin th danh sch lp cho php chn la, t tn l ddlclasses Ko th mt Button dng hin th danh sch nhng hc sinh trong lp c chn ti dropdownlist, t tn l btndisplay. Mt Repeater cho php hin th danh sch, t tn l rpstudents
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
85
By gi, bn cn xy dng template cho danh sch hc sinh. Bn quan tm ti ba phn: HeaderTempalte, ItemTempalte, v FooterTempalte. Thc hin nh sau:
M ch hin th son thi HTML Trong phn thn ca iu khin repeater, bn son tho cu trc nh m t sau y:
l cu trc chnh ca mt Repeater, v cng vic ca bn l phi xy dng cu trc cho mi phn Header, Item, Footer to thnh mt Template cho Repeater. Nh bng danh sch sinh vin pha trn, trong ngn ng HTML, n c dng:
<table border="0" cellpadding="0" style="border-collapse: collapse" width="100%" id="table1"> <tr> <td width=50><b>STT</b></td> <td width=200><b>Họ v Tn</b></td> <td width=75><b>Giới tnh</b></td> <td width=125><b>Ngy sinh</b></td> <td><b>Địa chỉ</b></td> </tr>
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
86
</tr> <tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> </table> Vi phn u (header) l: <table border="0" cellpadding="0" style="border-collapse: collapse" width="100%" id="table1"> <tr> <td width=50><b>STT</b></td> <td width=200><b>Họ v Tn</b></td> <td width=75><b>Giới tnh</b></td> <td width=125><b>Ngy sinh</b></td> <td><b>Địa chỉ</b></td> </tr> Phn thn (Item) l: <tr> <td>1</td> <td>Trn Tun Anh</td> <td>Nam</td> <td>12/12/1985</td> <td>H Ni</td> </tr> V phn cui (Footer) <tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> </table> By gi, bn ch cn copy mi phn trn vo trong mi phn tng ng ca Repeater rpstudents trn,
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
87
Ti y bn sp hon tt qu trnh to template cho repeater. Nh cp, Repeater thc hin vic Binding t Repeater n d liu trong c s d liu, bn s thc hin vic ny ti ItemTemplate. ItemTemplate l ni hin th danh sch hc sinh, Template hin th cho tt c hc sinh trong danh sinh gm 20 bn, bn ch cn to template cho mt bn ca 19 bn cn li s c hin th theo template y. chng ta ch cn to mt sch. V d danh sch hc u tin, tt c thng tin thc hin cho bn u tin
binding d liu n datasource, ASP.Net cung cp phng thc DataBinder.Eval() thc hin vic gn d liu t DataSource vo ItemTemplate ca Repeater. Cng thc ca DataBinder.Eval() nh sau: <% # DataBinder.Eval(ContainerName, DataFieldName, {FormatString}) %>. p dng cng thc trn cho trng tn, bn s c nh sau: <%#DataBinder.Eval(Container.DataItem,"vstudentname")%> p dng tng t cho cc trng khc, chng ta s c kt qu l cu trc ca ItemTemplate c hin th nh m t sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
88
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
89
By gi bn cn xy dng DataSource v thc hin lnh DataBind() cho repeater rpstudents. Khi ngi qun l mun xem danh sch sinh vin, anh y cn nhn vo nt Display Students hin th danh sch sinh vin ti repeater. Do vic Bind d liu t Repeater n DataSource cn thc hin ti y. Hm btndisplay_Click() nh sau:
protected void btndisplay_Click(object sender, EventArgs e) { OleDbConnection conobj = new OleDbConnection(str_connection); conobj.Open(); OleDbCommand cmd = new OleDbCommand("select * from students where iclassid=?", conobj); cmd.CommandType = CommandType.Text; cmd.Parameters.Add("@classid", this.ddlclasses.SelectedValue); OleDbDataAdapter da = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds, "students"); // xc nh DataSource bind d liu this.rpstudents.DataSource = ds.Tables["students"]; // Gi hm DataBind() thc hin bind d liu gia CSDL v Repeater this.rpstudents.DataBind(); conobj.Close(); }
Nhn F5 chy chng trnh, kt qu nh sau: PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
90
Gn iu khin vo Repeater
Sau khi bn hin th c danh sch sinh vin trong tng lp, c mt nhu cu l xem chi tit im s ca tng sinh vin, nh th ti mi dng ng vi mi sinh vin, bn phi thm mt button cho php xem chi tit im s tng hc vin. Bn thc hin iu ny theo nhng bc sau: Ti phn ItemTemplate, bn thm vo Button Control, nh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
91
ca s thit k, bn c c kt qu
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
92
Ti mi dng ng vi mi sinh vin u c mt nt Detail, cho php xem thng tin chi tit ca mi sinh vin . kim sot hng no tng ng vi mt sinh vin c chn, chng ta truyn vo tham s CommandArgument='<%#DataBinder.Eval(Container.DataItem,"istuddentid")%>' vi m sinh vin ng vi mi sinh vin trn mt dng. V s kin ItemCommand ca Repeater cho php hng ly gi tr truyn vo ny. S kin ItemCommand ca Repeater nh sau:
Tham s RepeaterCommandEventArgs e cha ng cc gi tr ca CommandName v CommandArgument ca Button c gn ti ItemTemplate. kim tra gi tr truyn vo nh th no, bn hy thm dng m lnh sau vo thn ca s kin ItemCommand(), Response.Write(e.CommandName + " " + e.CommandArgument.ToString()); Khi y, khi bn chn nhn mt nt Detail tng ng vi mt sinh vin trn mt dng, thc th xut hin m s tng ng vi sinh vin y c ly t c s d liu.
Vi cc iu khin DataList v DataGrid, vic Binding data l tng t, ch khc nhau vic to v s dng nhng iu khin c gn vo Template.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
93
Template
ti
hng
dn:
To v s dng UserControl
to UserControl bn thc hin cc bc sau:
T menu Visual Studio 2005, bn chn Website Add New Item, ca s Add New Item xut hin nh m t sau y
Chn Web User Control. Ti trng Name: bn g tn ca control l u_index.ascx Ti mc Language: bn chn ngn ng C# Nhn Add thc hin thm vo.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
94
Bn m file ny bng cch double click vo file ti ca s Solution Explorer, chuyn sang ch thit k Design, bn g vo dng ch: y l trang ch.
Sau bn m trang Default.aspx, v ko th file u_index.ascx vo mn hnh thit k trang Default.aspx, v bn nhn F5 chy chng trnh, bn s thy rng ni dung ti u_index.ascx xut hin ti trang Default.aspx
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
95
By gi bn c th m file son tho m lnh iu khin UserControl u_index.ascx v thc hin dng lnh sau:
By gi thc hin chng trnh, v kt qu s l dng T UserControl cng xut hin ti trang ASPX. Nh th UserControl khi c gn vo mt trang ASPX, tt c nhng thc thi trong UserControl u c thc thi ti trang ASPX, v by gi UserControl tr thnh thnh phn ca trang ASPX.
96
C rt nhiu k thut xy dng WebPortal, k thut xy dng Webportal s dng UserControl l mt k thut ti t xy dng v kin trc da trn kin trc ti (load) ng ca UserControl. Kin trc ti UserControl ng Kin trc ti UserControl ng c m hnh ha nh sau
M hnh kin trc ti UserControl ng. Vic ti UserControl l vic thc hin bng m lnh chng trnh li hnh ng ko th UserControl vo trang ASPX, ASCX. m hnh trn, mt trang ASPX c th load nhiu UserControl, v mi UserControl c th ti cc UserControl khc v c tip t nh th. Vi m hnh ny cho php bn to ra nhng ng dng c phc tp rt cao nhng em li s d dng cho ngi s dng ng dng web ca bn. Cng thc ca hm LoadControl nh sau: Controls.Add(LoadControl("[ControlPath][ControlName]")); Trong ,
V d: Controls.Add(LoadControl("u_module1.ascx"));
string module = ""; if(Request.QueryString["module"] != null) module = Request.QueryString["module"].ToString().Trim(); PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
97
switch (module) { case "module1": Controls.Add(LoadControl("u_module1.ascx")); break; case "module2": Controls.Add(LoadControl("u_module2.ascx")); break; }
Khi khng c tham s module, ch c gi tr ti u_index.ascx c ti ln trang ASPX, khi cung cp tham s module, v gn ln lt bng hai gi tr module1 v module2, bn thu c kt qu nh hnh m t trn. V d trn l m t c bn nht cho vic s dng UserControl trong xy dng WebPortal, kin trc ny cho php bn to ra nhng ng dng cc k phc tp v sau.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
98
string module = ""; if(Request.QueryString["module"] != null) module = Request.QueryString["module"].ToString().Trim(); switch (module) { case "module1": phcontrol.Controls.Add(LoadControl("u_module1.ascx")); break; case "module2": phcontrol.Controls.Add(LoadControl("u_module2.ascx")); break; }
Bi tp t n luyn. 1. To ng dng qun l danh sch lp, danh sch sinh vin trong tng lp. ng dng c cc tnh nng: thm, sa, xa lp v sinh vin trong tng lp. 2. Xy dng ng dng qun l kho hng, cho php ngi qun l qun l danh mc hng ha, s lng hng ha trong kho, qun l nhp xut hng. 3. Xy dng h thng website (Webportal) vi yu cu sau:
Module tin tc: cung cp thng tin thi s Module m nhc: cho php ngi s dng la chn v nghe nhc trc tuyn Module th vin hnh: cho php ngi s dng xem hnh nh c sp xp theo phn loi bi ngi qun tr website.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
99
ASP.NET cung cp file cu hnh cho ng dng Website, l web.config. Chng ta s tm hiu cch thc s dng file web.config cho cng vic cu hnh cho ng dng Web.
Mc <appSettings>
appSettings trong file web.config c s dng nh ngha nhng ci t do ngi dng xy dng cho ng dng website. Chng hn bn c th s dng th appSettings lu tr thng tin v chui kt ni n c s d liu. Cng thc ca th <appSettings> nh sau: <appSettings> <add key=(key) </appSettings> Trong ,
value=(value/>
Key: xc nh gi tr kha trong hastable trong appSettings. Value: l ni dung tng ng vi khoa key.
V d v vic s dng appSettings lu tr thng tin chui kt ni <appSettings> <add value=Provider=SQLOLEDB;database=(local);uid=sa;pwd= /> </appSettings>
key=ConnectingString
c gi tr t th appSettings
c cc gi tr t th appSettings, bn thc hin nh sau Import th vin System.Configuration; bng cch using System.Configuration; c gi tr t mt kha (key).
Th <customErrors>
S dng th <customErrors>, bn c th nh ngh c nhng thng ip li xut hin cho mt ng dng ASP.NET. Cng thc ca th customErrors nh sau: <customErrosrs defaultRedirect=(URL) mode=(on/off/remoteonly)> <error statusCode=(statusCode) redirect=(URL)/> </customErrors> Trong ,
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
100
mode - xc nh m, ng, hoc hin th trng thi li n trnh duyt ngi s dng. <error> nh ngha nhng li xut hin.
V d: <customErrosrs defaultRedirect=customerrors.aspx mode=On> <error statusCode=500 redirect=CustomErrorMessage.aspx/> </customErrors> Khi li xut hin, nu m li l 500, trang s c chuyn n CustomErrorMessage.aspx, mc nh trang c chuyn n customerrors.aspx. trang
101
1. M ng dng Web xy dng TestCurrentDollar2Current 2. Ti menu Build, chn Publish Website. 3. Mn hnh Publish Website xut hin, ti mc Target Location, nhn vo nt , thc hin nh m t sau:
4. Nhn Open, sau nhn OK thc hin Publish website. By gi, website c xut bn, v bn c th s dng trin khai thc t.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
102
Alias
xut
hin,
ti
Alias,
bn
nhp
vo:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
103
6. C s Web Site Content Directory, bn a n th mc m website ca bn c xut bn, nhn Next, nh m t sau:
7. Ti ca s Access Permision, nhn Next. 8. Ca s thng bo to thnh cng th mc o cho ng dng web xut hin, nhn Finish.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
104
9. Bn trin khai thnh cng ng dng web ca bn. 10. V ng dng ca bn c vit trn nn tng .NET 2.0, do bn cn cho IIS hiu rng ng dng ca bn c xy dng chy trn nn tng .NET 2.0. 11. Chn mc ConvertDollar2Current ti cy th mc Default Web Site. Nhn chut phi chn Properties
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
105
12.
Ti ca s ConvertDollar2Current Properties xut hin, bn ASP.NET. 13. Ti la chn ASP.NET Version, chn .NET 2.0, nh m t sau y
chn
tab
14.
Nhn OK kt thc. ng dng ca bn hon ton c trin khai trn IIS. 15. Thc thi ng dng, bn m Browser v g nh sau: http://localhost/ConvertDollar2Current/Default.aspx , trang web ca bn c th c s dng.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
106
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
107
D dng truy xut: bt k mt my tnh no truy cp vo Internet u c th d dng truy xut n mt Web Service. Cu trc linh hot: ty theo yu cu ca ng dng m nhng loi khc nhau ca web service c th c to v s dng trong mt ng dng. D dng tch hp: s dng web service, bn c th d dng tch hp vo cc ng dng c pht trin trn nhng nn tng phn cng v phn mm khc nhau, gip gim thiu chi ph. Hn th, bn c th tch hp ng dng Web vi ng dng chy trn Desktop.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
108
Ca s to mi d n
4. Click chut phi file Webservices_CurrentDollarConverter.asmx ti ca s Solution Explorer v chn View Code m. 5. Thm dng m lnh sau vo ca s son tho m lnh iu khin chng trnh, trong lp Service1
[WebMethod] public double ConvertDollar2Current(double value) { double rate = 16102;// t gi tin Vit v ng $ return value * rate; }
6. Nhn F5 chy chng trnh. 7. Webservice xut hin, nhn vo lin kt ConvertDollar2Current thc hin gi webservice ny.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
109
8. Sau khi nhn vo lin kt ConvertDollar2Current trn trang Web Service, mn hnh sau xut hin cho php nhp vo tham s Web Service nh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
110
9. Ti gi tr (value:), bn nhp vo mt s tng ng vi s dollar chuyn i, v nhn Invoke 10. Kt qu xut hin nh sau:
Sau khi kim tra ng dng, tin hnh build lp Web Service to th vin da trn linkt ng (DLL), bng cch chn menu Build, Build Solution. By gi Web Service c th s dng ti bt k ng dng no. Bn s tin hnh th nghim gi v thc thi Web Services ny t mt ng dng Web khc, nhng trc khi tin hnh gi, bn phi trin khai Web Services va to, vic trin khai Web Service tng t nh vic trin khai mt ng dng web ASP.NET m bn c hc trong phn trc. Sau khi trin khai Webservice, bn thc hin cc bc sau.
M ng dng ConvertDollar2Current thc hin phn trc. Ti ca s Solution Explorer, chn project v nhn chut phi, popup menu xut hin, chn Add Web References nh m t sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
111
Ca s Add Web Reference xut hin, ti mc URL, bn g http://localhost/Webservices_ConvertDollar2Current/service.asmx l ng dn ca Web Service chng ta va trin khai, nhn nt Go, kt qu nh sau:
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
112
Danh sch nhng hm trong Webservice bn xy dng c lit k ti pane bn di. ti mc Web reference name, bn g localhost Nhn Add Reference
Web Service c add vo ng dng v sn sng s dng. Ti s kin ca nt Chuyn i, bn thc hin nh sau:
protected void btnconvert_Click(object sender, EventArgs e) { //khong su dung webservice //this.lblresult.Text = (Convert.ToDouble(this.txtdollar.Text.Trim()) * 16102).ToString(); // su dung web service // Khai bo i tng ca class Service trong WebService localhost.Service ws_dollar2current = new localhost.Service(); // Gi hm t i tng Web Service this.lblresult.Text = ws_dollar2current.ConvertDollar2Current(Convert.ToDouble(this.txtdollar.Text)). ToString(); }
i dollar ra tin Vit, trc y chng ta thc hin php tnh, nhng khi ng dng webservice, bn ch cn khai bo i tng Web Service v gi hm t i tng ny. Nhn F5 thc thi.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
113
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
114
D N
Project 1.
D n: Website thng tin v bn hng trc tuyn
M t: SunToys l mt cng ty xut khu chi trn ton th gii. Cng vic kinh doanh ca h lin tc pht trin trn th trng chu u, nm ti, h mun sn phm ca mnh c mt ti th trng M. SunToys yu cu xy dng mt h thng phn mm cho php khch hng ti th trng M c th xem thng nhng sn phm ca h. Hn th na, SunToys k kt vi hng chuyn pht sn phm ti M cho php sn phm ca SunToys n tay tng ngi tiu dng c nhn. Sn phm sau khi c chn mua, s c phn phi sau ba ngy. Gim c cng ty quyt nh s xy dng mt h thng cho php qun l s lng hng ha sn xut v tip nhn n t hng t khch hng, v theo di qu trnh phn phi sn phm. L mt cng ty phn mm chuyn nghip. bn hy thc hin yu cu trn.
Project 2.
D n: H thng qun tr kho hng
M t: INGA l tp on phn phi h thng my ch hng u ti Vit Nam, cng ty c hai tr s chnh ti Si Gn v H Ni. Mi ngy, cng ty phi gii quyt rt nhiu n t hng ca khch hng. INGA c mt kho hng chnh ti Si Gn, cng ty mun xy dng mt h thng qun tr kho hng v qun l n t hng, bn hng vi nhng yu cu sau. H thng c ci t ti my ch ti Si Gn, v mi ni nhn vin bn hng u c th thc hin vic tra cu thng tin hng ha v thc hin gii quyt n hng m khng cn phi ci t trn my tnh th 2. Hy thc hin yu cu ca INGA.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
115
C THM
ASP.NET & AJAX Framework
ASP.NET AJAX l cng ngh min ph cho php ngi lp trnh to ra nhng ng dng web ng. Cho php bn to ra nhng website c nhn n nhng h thng website ln c tng tc cao. Bn c th ti ng dng ny v t website ASP.NET c a ch http://www.asp.net Xem hng dn to ng dng vi ASP.NET AJAX theo s ch dn ca ging vin.
H c s d liu MySQL Server 5.0 & lp trnh thao tc d liu vi MySQL Server.
MySQL l h c s d liu m ngun m ni ting nht th gii, y l h c s d liu vi tc truy cp cao, mnh m, d s dng. c s dng bi nhiu h thng ln nh Yahoo, Google, Nokia, YouTube Vic s dng mt h c s d liu m m, min ph gip tit kim chi ph cho doanh nghip ca bn. Bn c th ti v s dng min ph h c s d liu ny thng qua a ch www.mysql.com MySQL cung cp kh nng giao tip vi C# mt cch mnh m v d dng thng qua namespace MySQL.Data.MySqlClient. Cch thc thc hin giao tip d liu vi MySQL ging nh cch thc m bn lm vic vi ADO.NET trnh by phn trc. s dng namespace MySQLClient, i hi bn phi tham chiu n th vin ny bng chn References di chuyn n tp tin MySQL.Data.dll. Nhn OK thc hin Sau khi tham chiu file MySQL.Data.dll vo project, s dng cc hm trong th vin ny, bn phi khai bo s dng th vin. using MySql.Data; using MySql.Data.MySqlClient; T y bn c th s dng nhng hm, th tc trong th vin MySQL.
Kt ni n c s d liu MySQL
on m lnh sau thc hin vic kt ni n c s d liu MySQL bng lp trnh C#. MySqlConnection con = new MySqlConnection("server=localhost;database=_net;uid=root;pwd=root"); con.Open(); Response.Write("Connected into MySQL Database"); con.Close(); Sau khi kt ni n c s d liu MySQL, bn c th thc hin mt cu truy vn n mt bng trong c s d liu ny, on m lnh sau thc hin truy vn n mt bng v hin th s dng d liu c trong bng ny. MySqlConnection con = new MySqlConnection("server=localhost;database=_net;uid=root;pwd=root"); con.Open(); Response.Write("Connected into MySQL Database"); MySqlCommand cmd = new MySqlCommand("select * from list",con); cmd.CommandType = CommandType.Text; MySqlDataAdapter da = new MySqlDataAdapter(cmd); DataSet ds = new DataSet(); PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
116
da.Fill(ds, "list"); Response.Write(ds.Tables["list"].Rows.Count.ToString()); con.Close(); Hai v d trn cho thy, lp trnh kt ni c s d liu MySQL s dng Namespace MySQL.Data.MySqlClient cng ging nh lm vic vi h c s d liu MSSQL thng qua ADO.NET. V d sau s m t r hn v vn ny. MySqlConnection con = new MySqlConnection("server=localhost;database=_net;uid=root;pwd=root"); con.Open(); Response.Write("Connected into MySQL Database"); // thc hin thm mi d liu vo CSDL cmd = new MySqlCommand("insert into list values(0,'New record 1','Description Record 1')"); cmd.Connection = con; cmd.ExecuteNonQuery(); Response.Write("<br>Inserted into MySql DB"); // thc hin cp nht d liu cmd = new MySqlCommand("update list set name='Updated Name' where id=?id"); cmd.CommandType = CommandType.Text; cmd.Parameters.Add("?id", "1"); cmd.Connection = con; cmd.ExecuteNonQuery(); con.Close();
Regular Expressions
Regular Expression l mt chui nhng k t dng biu din (thay th) cho mt chui no . Regular Expression l mt k thut kh s dng phng php so snh. Bng sau th hin nhng biu thc thng s dng nht.
M t kim tra
Cng thc
M t
V d
[ Mt tp hp k t
] c s dng so snh bt k mt k t nm trong [ ]. C th c s dng xc nh mt chui k t bt u v kt thc bng vic s dng du gch ngang, nh [a-z] P[0-5] Kim tra m sn phm bt u vi k t P v theo sau bi nhng s trong khong 0 n 5.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
117
M t kim tra
Cng thc
M t
V d
{n} Khong c s dng so snh mt biu thc lp li n ln P[0-9] {4} kim tra mt m sn phm bt u bng k t P v theo sau bi 4 s nm trong khong 0 n 9
. K t bt k c s dng kim tra mt k t bt k ngoi tr k t xung dng. 2.12.2008 kim tra nh dng d liu c dng: 1/12/2008, 2-12-2008, 2 12 2008 v c 2.12.2008.
\S
+ Mt hoc nhiu k t S dng kim tra c t nht mt s xut hin trong biu thc trc n ? c s dng kim tra bt k mt k t n no trc n \s Mt k t trng bt k c s dng kim tra mt k t bt k bao gm: khong trng, tabs, v k t xung dng. \d Mt s bt k
Bt k mt k t n
K Escape
Regular Expression gip kim tra d liu do ngi dng nhp vo t ng dng, trnh nhng li xut pht t vic nhp d liu ca chng trnh.
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
118
Mt s ng dng ca Regular Expressions Hm kim tra tnh hp l ca email. public static bool IsValidEmail(string email) { return System.Text.RegularExpressions.Regex.IsMatch(email, @"^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$"); } Hm kim tra xem ng dn a ch web c hp l hay khng public static bool IsValidURL(string url) { return System.Text.RegularExpressions.Regex.IsMatch(url, @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zAZ0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$"); } Hm sau dng kim tra mt chui c dng l s interger hay khng. public static bool IsValidInt(string val) { return System.Text.RegularExpressions.Regex.IsMatch(val, @"^[19]\d*\.?[0]*$"); }
Mt s bi c khc
nh dng hin th cho kiu d liu Double, Float trong C#
Nhng v d sau ch cho bn cch thc nh dng nhng s kiu fload sang kiu k t trong CS bng cch s dng hm static ca lp String l String.Format. S sau du chm V d nh dng ny chuyn i mt s double sang string vi kt th l 2 ch s thp phn ng sau. nh dng s dng l: 0.00". String.Format("{0:0.00}", 123.4567); // "123.46" String.Format("{0:0.00}", 123.4); // "123.40" String.Format("{0:0.00}", 123.0); // "123.00" V d tip theo cho php bn rt gn nhng s thp phn tha ng sau du chm, s dng nh dng 0.##". String.Format("{0:0.##}", 123.4567); // "123.46" String.Format("{0:0.##}", 123.4); // "123.4" String.Format("{0:0.##}", 123.0); // "123" S trc du chm thp phn S dng nh dng: 00.0, chng ta s c kt qu l s trc du chm lc no cng ln hn hoc bng 2, v sau n l mt ch s.. PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
119
String.Format("{0:00.0}", String.Format("{0:00.0}", String.Format("{0:00.0}", String.Format("{0:00.0}", Cch phn ngn S dng nh dng mu: 0,0.0"
String.Format("{0:0,0.0}", 12345.67); // "12,345.7" String.Format("{0:0,0}", 12345.67); // "12,346" S 0 String.Format("{0:0.0}", String.Format("{0:0.#}", String.Format("{0:#.0}", String.Format("{0:#.#}", V sau y l mt s v d vui. String.Format("{0:my number is 0.0}", 12.3); // "my number is 12.3" String.Format("{0:0aaa.bbb0}", 12.3); // "12aaa.bbb3" 0.0); 0.0); 0.0); 0.0); // // // // "0.0" "0" ".0" ""
MailMessage msg = new MailMessage(); StringWriter strwriter = new StringWriter(); HtmlTextWriter htmltxtwriter = new HtmlTextWriter(strwriter); htmltxtwriter.RenderBeginTag("html"); htmltxtwriter.RenderBeginTag("head"); htmltxtwriter.RenderBeginTag("title"); htmltxtwriter.Write("Thank You!"); htmltxtwriter.RenderEndTag(); htmltxtwriter.RenderEndTag(); htmltxtwriter.RenderBeginTag("body"); htmltxtwriter.Write("Thank you for registering with Itgatevn.com.vn"); htmltxtwriter.RenderEndTag(); htmltxtwriter.RenderEndTag(); msg.From = "ITGATEVN.COM.VN"; msg.To = this.TextBox1.Text.Trim(); msg.Bcc = "pta30000@gmail.com"; msg.Subject = "Thanks for registering"; msg.Body = strwriter.ToString(); msg.BodyFormat = MailFormat.Html; SmtpMail.Send(msg);
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
120
[pk_image]
PRIMARY
KEY
NOT
Img_id: lu tr id ca hnh v l kha chnh ca bng Img_name: lu tr tn ca hnh nh. Img_file: lu tr hnh nh Img_type: lu tr kiu ni dung ca hnh nh
By gi chng ta tin hnh thc hin cc bc upload hnh vo c s d liu 1. To mt Webform upload file hnh 2. Upload hnh vo c s d liu.
<form enctype="multipart/form-data" id="form1" runat="server"> <div> <table id="table1" border="0" cellpadding="0" style="border-collapse: collapse" width="100%"> <tr> <td width="125"> Image Name</td> <td width="10"> </td> <td> <asp:TextBox ID="txtname" runat="server"></asp:TextBox></td> </tr> <tr> <td> File to Upload</td> <td> </td> <td> <input id="fileimage" runat="server" type="file" /></td> </tr> <tr> <td> </td> <td> PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
121
</td> <td> <asp:Button ID="btupload" runat="server" Text="Upload" OnClick="btupload_Click" /></td> </tr> <tr> <td> </td> <td> </td> <td> </td> </tr> </table> </div> </form>
Ti file hnh vo c s d liu. Khi ngi dng nhn vo nt Upload, s kin btupload_Click c gi. Bn c th copy on m lnh sau vo s kin btupload_Click
protected void btupload_Click(object sender, EventArgs e) { // to i tng Stream System.IO.Stream img_strm = fileimage.PostedFile.InputStream; // nhn kch thc ca hnh int img_len = fileimage.PostedFile.ContentLength; // nhn kiu hnh string strType = fileimage.PostedFile.ContentType; string strName = txtname.Text; // to mng kiu byte ca file c upload byte[] imgData = new byte[img_len]; int n = img_strm.Read(imgData, 0, img_len); int result = SaveToDB(strName, imgData, strType); } // Hm SaveToDB() int SaveToDB(string imgName, byte[] imgbin, string imgcontenttype) { OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;server=(local);database=_NET;uid=_net;pwd="); OleDbCommand cmd = new OleDbCommand("INSERT INTO _image values(?,?,?)", con); OleDbParameter param0 = new OleDbParameter("@imgName",OleDbType.VarWChar, 30); param0.Value = imgName; cmd.Parameters.Add(param0); OleDbParameter param1 = new OleDbParameter("@imgName", OleDbType.Binary); param1.Value = imgbin; cmd.Parameters.Add(param1); OleDbParameter param2 = new OleDbParameter("@imgType", OleDbType.VarWChar, 30); PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
122
param2.Value = imgcontenttype; cmd.Parameters.Add(param2); con.Open(); int numofwsAffected = cmd.ExecuteNonQuery(); con.Close(); return numofwsAffected; }
THAM KHO
Cc bn c th tham kho thm kin thc ti mt s a ch sau y Th vin bi vit cng ngh ITGATEVN - http://www.itgatevn.com.vn/articles/ Th vin MSDN: http://msdn.microsoft.com
PROFESSIONAL PROGRAMMING FOR REAL LIFE Phm Tun Anh - Cng CNTT Vit Nam
123