You are on page 1of 15

KIN TRC ADO.

NET V M HNH 3 TNG TRONG PHT TRIN NG DNG WEB


Ngc Cng ITDLU Email: dnc.dlu@gmail.com

MC LC
Kin trc ADO.NET ......................................................................................................... 2 Trnh cung cp d liu ADO.NET ................................................................................... 2 Cc lp thuc SQL Server provider ................................................................................ 3 Lp SqlConnection.......................................................................................................... 3 To i tng SqlConnection ...................................................................................... 3 Lp SqlCommand ........................................................................................................... 4 To i tng SqlCommand ....................................................................................... 4 Cc phng thc SqlCommand .................................................................................. 4 Lp SqlDataReader ........................................................................................................ 5 Cc phng thc SqlDataReader ............................................................................... 5 Cc bc thc hin mt truy vn trong ADO.NET .......................................................... 5 Cc v d ......................................................................................................................... 5 Chn thm mt hng vo vo bng Employees .......................................................... 6 Cp nht mt hng trong bng Employees ................................................................. 7 Xa mt hng trong bng Employees.......................................................................... 8 m tt c hng trong bng Employees...................................................................... 8 Ly tt c hng trong bng Employees ....................................................................... 9 c nhiu tp d liu................................................................................................. 10 M hnh 3 tng (three tier) ............................................................................................. 11 Mc ch .................................................................................................................... 11 V d .............................................................................................................................. 12

Kin trc ADO.NET


ADO.NET s dng kin trc nhiu tn xoay quanh mt vi khi nim chnh nh l Connection, Command, v cc i tng DataSet Mt trong nhng im khc bit nht gia ADO.NET vi mt vi cng ngh CSDL khc l cch m ADO.NET tng tc vi cc loi ngun d liu khc: tp tin vn bn, excel, XML, c s d liu (CSDL)

Trnh cung cp d liu ADO.NET


Trnh cung cp d liu (data provider) l mt tp cc lp ADO.NET cho php truy cp vo mt CSDL c th, thc thi cc cu lnh truy vn, v ly d liu. V c bn, mt trnh cung cp d liu l cu ni gia ng dng v mt ngun d liu (data source) Cc lp to nn mt trnh cung cp d liu bao gm: Connection: s dng i tng ny thit lp kt ni vi mt ngun d liu Command: s dng i tng ny thc thi cc cu lnh truy vn v cc th tc (stored procedure) DataReader: cung cp cch c d liu nhanh v tun t DataAdapter: c 2 cch dng. Cch th nht l dng d liu t CSDL vo DataSet. Cch cn li l dng cp nht d liu t DataSet v ng ha cc thay i vi CSDL ADO.NET khng bao gm cc i tng data provider chung. Thay vo , n bao gm cc data provider c thit k ring bit cho cc loi ngun d liu khc nhau. Mi loi data provider u c cc lp Connect, Command, DataReader, DataAdapter v c c th ha (implement) ti u cho h qun tr c s d liu . V d, nu bn cn to ra mt kt ni n mt c s d liu SQL Server, bn s s dng mt lp connection tn l SqlConnection. ADO.NET bao gm 4 loi data provider: SQL Server provider: c dng truy cp vo CSDL SQL Server (phin bn 7.0 tr v sau) OLE DB provider: c dng truy cp ti bt k ngun d liu h tr chun OLE DB (Object Linking and Embedding for Databases) nh Access, Excel, Oracle, SQL Server phin bn trc 7.0 Oracle provider: c dng truy cp vo CSDL Oracle (phin bn 8i tr v sau) ODBC provider: c dng kt ni ti cc c s d liu c h tr chun ODBC (Open Database Connectivity)
2

.NET Application

SQL Server .NET Provider

OLE DB .NET Provider

Oracle .NET Provider

OLE DB Provider

SQL Server Database

Data Source

Oracle Database

Hnh 1. Kin trc ADO.NET

Cc lp thuc SQL Server provider


SqlConnection SqlCommand SqlDataReader SqlDataAdapter

Lp SqlConnection
i tng SqlConnection c s dng kt ni ti mt CSDL SQL Server.

To i tng SqlConnection
SqlConnection cnn = new SqlConnection("server=localhost;database=Northwind;uid=sa;pwd=sa");

Trong : server: l tn ca my tnh ang chy SQL Server. database: l tn c s d liu mun kt ni.
3

uid: l tn ngi dng c s d liu. pwd: l mt khu tng ng ca ngi dng.

Lp SqlCommand
i tng SqlCommand c s dng thc thi mt cu lnh truy vn ti CSDL SQL Server

To i tng SqlCommand
To i tng SqlCommand i din cho mt cu truy vn
SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; SqlCommand cmd = cnn.CreateCommand();

cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM Employees";

To i tng SqlCommand i din cho mt th tc


SqlCommand cmd = new SqlCommand("GetEmployees", cnn); cmd.CommandType = CommandType.StoredProcedure;

hoc
SqlCommand cmd = cnn.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "GetEmployees";

Cc phng thc SqlCommand


Phng thc ExecuteNonQuery() M t Thc thi mt cu lnh SQL khng tr v tp kt qu nh INSERT, UPDATE, DELETE, CREATE, ALTER, DROP. Gi tr tr v ca hm ny chnh l s dng b nh hng khi thc thi truy vn. Thc thi lnh cu lnh SQL v tr v gi tr ct u tin ca hng u tin, nhng gi tr tha b loi b. Phng thc ny thng c s dng khi thc thi mt lnh SELECT c s dng cc hm kt hp nh COUNT (), SUM () Thc hin mt truy vn SELECT v tr v mt i tng DataReader.

ExecuteScalar()

ExecuteReader()

Lp SqlDataReader
i tng SqlDataReader cho php c d liu tr v t cu lnh SELECT mt cch tun t, mi ln c mt hng

Cc phng thc SqlDataReader


Phng thc Read() M t Chuyn DataReader n dng tip theo trong tp kt qu v c d liu trn dng . Tr v gi tr False khi khng cn dng c Ly gi tr ca mt ct (theo ch s) ca hng hin ti, tr v kiu d liu c quy nh nh tn cc phng thc Nu d liu tr v t cu lnh SQL c nhiu hn 2 tp kt qu th phng thc ny s chuyn DataReader n tp kt qu tip theo ng DataReader

GetInt32(), GetChar(), GetDateTime(), Get() NextResult()

Close()

Cc bc thc hin mt truy vn trong ADO.NET


1. 2. 3. 4. 5. 6. 7. To i tng SqlConnection To i tng SqlCommand i din cho mt lnh truy vn Truyn cc tham s vo i tng SqlCommand (nu c) M kt ni Gi phng thc Execute tng ng X l kt qu tr v ca bc 5 ng kt ni

Ch : Bc 6 & 7 c th hon i nhau ty cch x l kt qu tr v t cu truy vn

Cc v d
Cc v d di y thc hin trn bng Employees ca CSDL Northwind Employees
Coumn Name EmployeeID TitleOfCourtesy LastName FirstName HireDate
5

Data Type int nvarchar(25) nvarchar(20) nvarchar(10) datetime

Chn thm mt hng vo vo bng Employees


Cu lnh SQL to th tc Employees_Add
CREATE PROCEDURE Employees_Add @EmployeeID int OUTPUT, @TitleOfCourtesy varchar(25), @LastName varchar(20), @FirstName varchar(10) AS INSERT INTO Employees (TitleOfCourtesy, LastName, FirstName, HireDate) VALUES (@TitleOfCourtesy, @LastName, @FirstName, GETDATE()); SET @EmployeeID = @@IDENTITY

C#
private static int Add(string title, string lastName, string firstName) { // 1. Tao doi tuong SqlConnection // 1.1 Tao chuoi noi string connectionString = @"server=.\sqlexpress;database=northwind;integrated security=true"; // 1.2 Tao doi tuong SqlConnection voi chuoi ket noi o tren using (SqlConnection cnn = new SqlConnection(connectionString)) { // 2. Tao doi tuong SqlCommand SqlCommand cmd = cnn.CreateCommand(); // 2.1 Dai dien cho mot thu tuc cmd.CommandType = CommandType.StoredProcedure; // 2.2 Truyen ten thu tuc ma doi tuong SqlCommand se goi cmd.CommandText = "Employees_Add"; // 3. Truyen cac tham so cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Direction = ParameterDirection.Output; cmd.Parameters.Add("@TitleOfCourtesy", SqlDbType.VarChar, 25).Value = title; cmd.Parameters.Add("@LastName", SqlDbType.VarChar, 20).Value = lastName; cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 20).Value = firstName; // 4. Mo ket noi cnn.Open(); // 5. Goi ExecuteNonQuery() de thu hien cau truy van // rs chinh la so hang duoc chen them vao bang int rs = cmd.ExecuteNonQuery(); // 6. Xy ly ket qua tra ve if (rs > 0) { // 6.1 Lay gia tri EmployeeID cua hang vua duoc them vao int empID = (int)cmd.Parameters["@EmployeeID"].Value; return empID; } else { Console.WriteLine("Insert fail"); } // 7. Dong ket noi

cnn.Close(); return 0; } }

Cp nht mt hng trong bng Employees


Cu lnh SQL to th tc Employees_Update
CREATE PROCEDURE [Employees_Update] @EmployeeID int, @TitleOfCourtesy varchar(25), @LastName varchar(20), @FirstName varchar(10) AS UPDATE Employees SET TitleOfCourtesy = @TitleOfCourtesy, LastName = @LastName, FirstName = @FirstName WHERE EmployeeID = @EmployeeID

C#
private static int Update(int empID, string title, string lastName, string firstName) { // 1. Tao doi tuong SqlConnection // 1.1 Tao chuoi noi string connectionString = @"server=.\sqlexpress;database=northwind;integrated security=true"; // 1.2 Tao doi tuong SqlConnection voi chuoi ket noi o tren using (SqlConnection cnn = new SqlConnection(connectionString)) { // 2. Tao doi tuong SqlCommand SqlCommand cmd = cnn.CreateCommand(); // 2.1 Dai dien cho mot thu tuc cmd.CommandType = CommandType.StoredProcedure; // 2.2 Truyen ten thu tuc ma doi tuong SqlCommand se goi cmd.CommandText = "Employees_Update"; // 3. Truyen cac tham so cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = empID; cmd.Parameters.Add("@TitleOfCourtesy", SqlDbType.VarChar, 25).Value = title; cmd.Parameters.Add("@LastName", SqlDbType.VarChar, 20).Value = lastName; cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 20).Value = firstName; // 4. Mo ket noi cnn.Open(); // 5. Goi ExecuteNonQuery() de thuc hien cau truy van // rs chinh la so hang duoc cap nhat int rs = cmd.ExecuteNonQuery(); // 6. Dong ket noi cnn.Close();

// 7. Tra ve ket qua return rs; } }

Xa mt hng trong bng Employees


Cu lnh SQL to th tc Employees_Delete
CREATE PROCEDURE [Employees_Delete] @EmployeeID int AS DELETE Employees WHERE EmployeeID = @EmployeeID

C#
private static int Delete(int empID) { // 1. Tao doi tuong SqlConnection // 1.1 Tao chuoi noi string connectionString = @"server=.\sqlexpress;database=northwind;integrated security=true"; // 1.2 Tao doi tuong SqlConnection voi chuoi ket noi o tren using (SqlConnection cnn = new SqlConnection(connectionString)) { // 2. Tao doi tuong SqlCommand SqlCommand cmd = cnn.CreateCommand(); // 2.1 Dai dien cho mot thu tuc cmd.CommandType = CommandType.StoredProcedure; // 2.2 Truyen ten thu tuc ma doi tuong SqlCommand se goi cmd.CommandText = "Employees_Delete"; // 3. Truyen cac tham so cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = empID; // 4. Mo ket noi cnn.Open(); // 5. Goi ExecuteNonQuery() de goi thu hien cau truy van // rs chinh la so hang bi xoa khoi bang int rs = cmd.ExecuteNonQuery(); // 6. Dong ket noi cnn.Close(); // 7. Tra ve ket qua return rs; } }

m tt c hng trong bng Employees


Cu lnh SQL to th tc Employees_Count
8

CREATE PROCEDURE [Employees_Count] AS SELECT COUNT(EmployeeID) FROM Employees

C#
public static int Count() { // 1. Tao doi tuong SqlConnection // 1.1 Tao chuoi noi string connectionString = @"server=.\sqlexpress;database=northwind;integrated security=true"; // 1.2 Tao doi tuong SqlConnection voi chuoi ket noi o tren using (SqlConnection cnn = new SqlConnection(connectionString)) { // 2. Tao doi tuong SqlCommand SqlCommand cmd = cnn.CreateCommand(); // 2.1 Dai dien cho mot thu tuc cmd.CommandType = CommandType.StoredProcedure; // 2.2 Truyen ten thu tuc ma doi tuong SqlCommand se goi cmd.CommandText = "Employees_Count"; // 3. Truyen cac tham so // 4. Mo ket noi cnn.Open(); // 5. Goi ExecuteScalar() lay ket qua (cot 1 hang 1) int rs = Convert.ToInt32(cmd.ExecuteScalar()); // 6. Dong ket noi cnn.Close(); // 7. Tra ve ket qua return rs; } }

Ly tt c hng trong bng Employees


Cu lnh SQL to th tc Employees_All
CREATE PROCEDURE [Employees_All] AS SELECT * FROM Employees

C#
private static void All() { // 1. Tao doi tuong SqlConnection // 1.1 Tao chuoi noi string connectionString = @"server=.\sqlexpress;database=northwind;integrated security=true"; // 1.2 Tao doi tuong SqlConnection voi chuoi ket noi o tren 9

using (SqlConnection cnn = new SqlConnection(connectionString)) { // 2. Tao doi tuong SqlCommand SqlCommand cmd = cnn.CreateCommand(); // 2.1 Dai dien cho mot thu tuc cmd.CommandType = CommandType.StoredProcedure; // 2.2 Truyen ten thu tuc ma doi tuong SqlCommand se goi cmd.CommandText = "Employees_All"; // 3. Truyen cac tham so // 4. Mo ket noi cnn.Open(); // 5 + 6. Goi ExecuteReader() va doc qua tung hang cua bang ket qua using (IDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { // 6.1 Doc tuan tu tung hang while (dr.Read()) { // 6.2 Xuat du lieu cua hang hien tai Console.WriteLine(String.Format("{0} {1} {2}", dr["EmployeeID"], // lay du lieu cot EmpID dr["LastName"], // lay du lieu cot LastName dr["FirstName"])); // lay du lieu cot FirstName } } // 7. Dong ket noi cnn.Close(); } }

c nhiu tp d liu
Cu lnh SQL to th tc Employees_Multi
CREATE PROCEDURE [Employees_Multi] AS SELECT TOP 5 * FROM Employees SELECT TOP 5 * FROM Customers

C#
public static void ReadMultipleResultSets() { // 1. Tao doi tuong SqlConnection // 1.1 Tao chuoi noi string connectionString = @"server=.\sqlexpress;database=northwind;integrated security=true"; // 1.2 Tao doi tuong SqlConnection voi chuoi ket noi o tren using (SqlConnection cnn = new SqlConnection(connectionString)) { // 2. Tao doi tuong SqlCommand SqlCommand cmd = cnn.CreateCommand();

10

// 2.1 Dai dien cho mot thu tuc cmd.CommandType = CommandType.StoredProcedure; // 2.2 Truyen ten thu tuc ma doi tuong SqlCommand se goi cmd.CommandText = "Employees_Multi"; // 3. Truyen cac tham so // 4. Mo ket noi cnn.Open(); // 5 + 6. Goi ExecuteReader() va doc qua tung hang cua bang ket qua using (IDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { // 6.1 Doc tap du lieu dau tien (Employees) while (dr.Read()) { // 6.1 Xuat du lieu cua hang hien tai Console.WriteLine(String.Format("{0} {1} {2}", dr["EmployeeID"], // lay du lieu cot EmpID dr["LastName"], // lay du lieu cot LastName dr["FirstName"])); // lay du lieu cot FirstName } // 6.2 Doc tap du lieu tiep theo (Customers) dr.NextResult(); while (dr.Read()) { // 6.3 Xuat du lieu cua hang hien tai Console.WriteLine(String.Format("{0} {1} {2}", dr["CustomerID"], // lay du lieu cot CusID dr["CompanyName"], // lay du lieu cot CompanyName dr["ContactName"])); // lay du lieu cot ContactName } } // 7. Dong ket noi cnn.Close(); } }

M hnh 3 tng (three tier)


Chia nh chc nng ca ng dng thnh cc thnh phn da trn cng vic m thnh phn thc hin v nhm mi thnh phn thnh mt tng.

Mc ch
Pht trin phn mm da trn m hnh 3 tng cho php cc lp trnh vin c th cp nht, thay i chc nng ca mi tng ring bit m khng ph v code ca cc tng khc.

11

Presentation Tier ASP.NET Master Pages ASP.NET Web Forms ASP.NET Web User Controls

Business Tier ASP.NET Master Pages C# Class SQL Server Data Tier ASP.NET Master Pages SQL Server Stored Procedures

ASP.NET Data Master Pages SQL Server Data Store

Tn v chc nng ca mi tng trong m hnh 3 tng

V d
Gi s ngi dng s dng trnh duyt v vo trang web bn hng trc tuyn nh hnh di

12

thm mt sn phm vo gi hng thi ngi dng s bm vo nt Add To Cart. Hnh di cho thy lung thng tin chy qua cc tng ca ng dng Ngi dng s dng trnh duyt

Internet

ng dng Web 3 tng c host trn Web Server

Presentation Tier

Business Tier

Data Tier

S tng tc ca ngi dng vi 3 tng ca ng dng


13

1. Ngi dng bm vo nt Add To Cart thm sn phm vo gi hng 2. Tng Presentation chuyn yu cu n tng Business l Ti mun thm sn phm ny vo gi hng 3. Tng Business nhn yu cu v ni tng Data Cp nht gi hng ca ngi dng bng cch thm vo sn phm chn 4. Tng Data cp nht vo CSDL v tr kt qu cho tng Business 5. Tng Business s x l kt qu v tt c li xy ra trong qu trnh cp nht gi hng. Sau , tng Business s tr kt qu m n x l c cho tng Presentation 6. Tng Presentation s to ra giao din gi hng trng thi cp nht 7. Phn giao din s c chuyn thnh HTML v tr v trnh duyt ca ngi dng

14

You might also like