Sei sulla pagina 1di 8

ADO.NET - Bi 1 : Gii thiu 1) Gii thiu chung. 2) So snh vi phin bn ADO . 3) Kin trc ca ADO.NET 4) S dng ADO.

NET trong Visual Basic .NET 5) ngha ca vic x l d liu ngt kt ni trong ng dng web. 1) Gii thiu chung ADO.NET l mt phn ca .NET Framework, n c xem l b th vin lp chu trch nhim x l d liu trong ngn ng MS.NET. ADO.NET c thit k vi dng d liu ngt kt ni, ngha l chng ta c th ly c mt cu trc phc tp ca d liu t database, sau ngt kt ni vi database ri mi thc hin cc thao tc cn thit. y l mt s tin b v mt thit k bi v thit k ADO trc y lun cn duy tr mt kt ni trong qu trnh thao tc d liu. 2) So snh vi phin bn ADO Trc ADO.NET, Microsoft c l mt b th vin x l cc thao tc lin quan n d liu. c tnh linh hot, d s dng v c tch hp trong cc ngn ng nh Visual Basic, ASP 3.0 C th coi ADO.NET l mt th h tip theo ca. ADO.NET k tha tt c nhng u im ca , ng thi vi tng thit k hon ton mi ADO.NET c mt din mo khc hn so vi tin thn ca n. Mt vi c im ni bt ca ADO.NET m khng c nh sau: - ADO.NET c thit k hon ton da vo XML v XML l chun trao i d liu tin b v tt nht trn mi trng Internet hin nay - ADO.NET c thit k hon ton hng i tng : y l c im chi phi ton b cc sn phm Microsoft .NET. 2 c im trn l 2 c im c bn, v ni tri ca ADO.NET m khng c. By gi chng ta s so snh chi tit hn v tng kha cnh ca v ADO.NET. c im ADO ADO.NET

D liu ngt kt ni

Kh nng vt tng la

Recordset cng c th ngt kt ni nhng t tng thit k ban u ca Recordset l hng kt ni, do vic ngt kt ni cng khng c h tr tt nht. Khi trao i d liu vi qua Internet, thng s dng chun COM, chun COM rt kh vt qua c tng la. Do vy kh nng trao i d liu ADO qua Internet thng c nhiu hn ch.

Dataset c thit k vi t tng ban u l ngt kt ni h tr mnh m ngt kt ni.

ADO.NET trao i d liu qua Internet rt d dng v ADO.NET c thit k theo chun XML, l chun d liu chnh c s dng trao i trn Internet.

D liu x l c a vo b nh di dng Duyt d liu

Recordset : tng ng 1 bng d liu trong database Recordset ch cho php duyt tun t, tng dng mt.

Dataset : tng ng 1 database Dataset : cho php duyt t do, ngu nhin, truy cp thng ti bng ,dng ,ct mong mun.

3) Kin trc ADO.NET Kin trc ADO.NET c 2 phn : - Phn kt ni : phn ny s dng khi ta kt ni vi Database v thao tc d liu, yu cu phi thc hin kt ni vi Database khi ang thao tc. Cc i tng ca phn ny l: Connection : i tng qun l ng /m kt ni ti Database.C 2 dng Connection tu theo ngun d liu l g (OleDb hay SQL Server) l OleDbConnection v SqlConnection. Command : i tng thc hin cc cu lnh tng tc truy vn, rt trch d liu t database khi thit lp kt ni ti d liu v tr v kt qu. Tng t nh Connection, Command cng c 2 dng tu theo ngun d liu l g (OleDb hay SQL Server) l OleDbCommand v SqlCommand. DataReader : i tng x l c d liu, c thit k ph hp cho cc ng dng web. Ch X l 1 dng d liu ti mt thi im. Ph hp vi ng dng web v x l nhanh, nh khng chim b nh. Cng c 2 dng ty theo d liu ngun : OleDbDataReader v SqlDataReader. D liu ca i tng c to ra khi i tng Command thc hin cu lnh ExecuteReader(). DataAdapter : y l i tng rt quan trng ca ADO.NET, n l cu ni ca database v dataset (dataset l i tng ngt kt ni), bi v i tng ngt kt ni dataset khng th lin lc trc tip vi database nn n cn mt i tng trung gian ly d liu t database cho n. V chnh l DataAdapter. V DataAdpater khi thao tc vi Database vn phi duy tr kt ni nn n c lit k vo dng kt ni, nhng bn cht l phc v cho vic ngt kt ni. - Phn ngt kt ni : ch c mt i tng chu trch

nhim ngt kt ni chnh l DataSet. DataSet khng cn bit g v Database thuc kiu g, kt ni ra sao. Nhim v ca DataSet l nhn d liu v t DataAdapter v x l n. DataSet c th c xem nh 1 Database trong b nh gm tt c cc bng ,quan h .. DataSet c nhiu i tng c xem l con tc l cp thp hn i km vi n nh : DataTable ( tng ng vi 1 bng trong database) , cp thp hn ca DataTable c cc i tng DataRow (tng ng vi 1 dng) ,DataColumn( tng ng vi 1 ct), DataRelation (tng ng vi cc quan h). Ngoi ra cn c cc i tng nhm : vd DataTableCollection, DataRowCollection, DataColumnCollection. Vic s dng DataSet l mt tin b ln ca kin trc ADO.NET tuy nhin vi cc ng dng Web , vic s dng DataSet khng c khuyn khch v i tng DataSet c xem l qu ln, nng n kh thch hp cho ng truyn trn web vn rt hn ch. 4) S dng ADO.NET trong Visual Basic.NET - s dng ADO.NET trong Visual Basic, ta phi khai bo imports cc namespace sau y : Namespace System.Data System.Data.Common System.Data.SqlClient S dng Cha tt c lp c s ca kin trc ADO.NET. Cha cc lp chia s ca .NET Data Providers. Cha cc lp h tr h qun tr c s d liu MS SQL Server phin bn 7.0 tr ln. Cha cc lp h tr cho c s d liu OLEDB vd Access, Oracle hay MS SQL Server phin bn 6.5 tr v trc. Cung cp cc lp h tr thao tc trn cc kiu d liu c bn ca SQL Server.

- Tuy nhin mt tri ca vic ny cng c l Web Server cng s phi x l mt lng d liu kh ln trong b nh. Nh vy, ta c th gim thiu vic truy cp vo database nhng Web Server li phi x l nhiu hn. - Chnh v l do c/mt nh trn m x l ngt kt ni phi v cng kho lo trong ng dng web. Ta ch nn x l ngt kt ni cho nhng d liu chung thng dng, t thay i m thi. Khng nn qu lm dng. V tt c nhng vn u c mt tri ca n. ADO.NET - Bi 2 : i tng Connection v Command i tng Connection v Command 1) .NET Data Providers. 2) i tng Connection. 3) i tng Command. 4) V khi nim Connection Pooling. 5) X l cc ngoi l ADO.NET. 1) .NET Data Providers .NET Data Providers l mt tp cc i tng phc v cho vic trao i d liu gia Data Source (d liu ngun) v i tng DataSet. N chia ra gm 2 loi tp i tng : 1 tp cc i tng chu trch nhim qun l cc kt ni (connections) ti DataSource (d liu ngun) v 1 tp cc i tng cn li chu trch nhim x l d liu. ADO.NET cung cp 2 loi .NET Data Providers l SQL Server .NET Data Provider v OLE DB .NET Data Provider. SQL Server .NET Data Provider s dng truy xut Database SQL Server 7.0 tr v sau. Cn OLE DB .NET Data Provider s dng cho phin bn 6.5 tr v trc v cc loi Database khc (vd nh Access, Oracle). SQL Server .NET Data Provider hot ng hiu qu hn bi v n thao tc trc tip vi SQL Server m khng cn phi thng qua OLE DB Provider. s dng 2 loi .NET Data Provider ny ta phi import 2 Namespace : System.Data.SqlClient cho SQL Server .NET Data Provider v System.Data.OleDb cho OLE DB Data Provider. 2) i tng Connection i tng Connection l i tng chu trch nhim qun l kt ni ti ngun d liu (DataSource). C 2 dng Connection tng ng vi 2 kiu d liu SQL Server v OLE DB l : SqlConnection v OleDbConnection. C 2 i tng ny u implement t interface IDbConnection. Bng cch s dng Interface IDbConnection, cc nh cung cp dch v Database khc nhau c th to ra cc ci t ph hp cho Database ring ca h. i tng Connection ca ADO.NET ch nhn mt tham s u vo l chui kt ni (connection string). Trong chui kt ni, cc thng s c cch nhau bng du ;, connection string c cc thng s sau : - Provider : Tn nh cung cp Database, i vi OLEDB cn khai bo l SQLOLEDB. i vi SQL Server th khng thuc tnh ny.

System.Data.SqlOleDb

System.Data.Sqltypes

5) ngha ca vic x l d liu ngt kt ni trong ng dng Web - ng dng web l nhng ng dng c rt nhiu ngi dng. Ti mt thi im c th c hng vn ngi dng truy cp vo web. Chnh v vy, rt d xy ra tnh trng qu ti, d lm cho server b tn hi. Vic x l ngt kt ni c ngha gim thiu s ngi dng truy cp 1 lt vo Web. Tt l khi 1 ngi truy cp vo Website, cc d liu m anh ta cn s c ly xung sau khng kt ni vo Database Server na sau thc hin cc thao tc d liu.

- DataSource (hoc Server) : tn/a ch database server cn kt ni ti. - Initial catalog (hoc Database) : tn ca Database cn truy xut. - Uid : username ng nhp vo Database Server. - Pwd : password ng nhp vo Database Server. Sau y l vd v 1 chui kt ni i vi Database dng OLE DB : Provider=SQLOLEDB.1;Data Source=MySQL; Initial Catalog=NorthWind; uid=sa; pwd=sa; Cn y l vd v 1 chui kt ni i vi Database dng SQL Server: Server=CSC;database=Northwind;uid=sa;pwd=sa; Sau y l cc thuc tnh, phng thc, s kin thng dng ca c SqlConnection v OleDbConnection : Thuc tnh - ConnectionString : thuc tnh thit lp / ly chui kt ni. - ConnectionTimeout: thuc tnh thit lp / ly thi gian ch trong khi truy xut vo database. Khi truy xut vo Database, chng trnh s ch ng khong thi gian ny nu ch qua khong thi gian ny m vn khng kt ni c vo database th chng trnh s bo li. - Database : thuc tnh thit lp/ ly tn database ca i tng connection hin thi. - DataSource : thuc tnh thit lp/ly tn ca database server ca i tng connection hin thi. - State : Ly trng thi hin thi ca Connection c cc trng thi sau: Connecting, Broken, Open, Closed, Executing, Fetching. Phng thc - BeginTransaction : s dng cho trng hp x l giao tc ca ng dng. Vic x l giao tc rt c li trong khi x l d liu t database v c lc trong khi x l d liu gp li th c th thc hin cu lnh nh Rollback hay trong lc thao tc cng c th thc hin c cc giao tc chnh nh trn SQL Server nh Commit - Close : ng 1 connection. - Open : M 1 connection vi cc thuc tnh hin hnh. S kin - InfoMessage : Xy ra khi provider gi ra 1 li cnh co hay thng tin. - StateChange : Xy ra khi trng thi ca connection thay i. Sau y l on source code s dng i tng Connection kt ni vo c s d liu : Dim connString As String = "server=CSC;database=Northwind;uid=sa;pwd=s a" Dim conn As SqlConnection = New SqlConnection(connString)

'mo ket noi conn.Open() 'Thuc hien cac thao tac du lieu 'dong ket noi conn.Close() 3) i tng Command Sau khi chng ta kt ni vo ngun d liu, chng ta cn phi thc hin thao tc cc d liu. thao tc c vi cc d liu chng ta phi dng i tng Command. i tng Command l i tng rt a nng, n va x l c sqlserver stored procedures va x l c cc giao tc (transaction). Tng t nh i tng Connection, i tng Command cng chia ra lm 2 loi tu theo ngun d liu : SqlCommand (cho SQL Server) v OleDbCommand (cho OLE DB). Mt s thuc tnh v phng thc thng dng ca i tng Command : Thuc tnh : - CommandText : Thit lp/ Ly lnh thao tc vi d liu. - CommandTimeout : Thit lp/ Ly thi gian ch thc hin lnh. Sau khi ch 1 khong thi gian nu vt qu s bo li. - CommandType : Thit lp/ Ly kiu ca i tng lnh (lnh trc tip, stored procedure) - Parameters : Cc tham s truyn vo cho i tng command ( kiu OleDbParameterCollection/ SQLParameterCollection). - Connection : Thit lp / ly kt ni ang c i tng Command s dng. - Transaction : Thit lp / ly giao tc m i tng Command thc thi. Phng thc: - ExecuteReader : Thc thi cu lnh CommandText ca i tng Command v tr v kiu DataReader (OleDbDataReader / SqlDataReader ). - ExecuteNonQuery : Thc thi cu lnh CommandText ca i tng Command, y l dng cu lnh cp nht c s d liu (xo /sa) nn ch tr v s dng b nh hng m khng tr v dng d liu no. - ExecuteScalar : Thc thi cu truy vn ca i tng Command v ch tr v ct u tin ca dng u tin ca kt qu. Cc kt qu cn li b b qua. - Cc hm khi to ca i tng SqlCommand (Tng t cho i tng OleDbCommand): o New() : khng c tham s no. o New(cmdText as String) ,trong : cmdText l cu lnh truyn vo cho i tng Command. o New(cmdText as String, connectin as SqlConnection) ,trong : cmdText nh trn. connection l i tng kt ni truyn vo cho i tng Command.

o New(cmdText as String, connection as SqlConnection, transaction as SqlTransaction), trong : cmdText,connnection nh trn. Transaction : l giao tc truyn cho i tng Command. Cc v d : - S dng cu lnh ExecuteNonQuery update d liu : Dim connStr As String = "server=CSC;database=Northwind;uid=sa;pwd=s a" Dim cmdStr As String = "Update Customers set CompanyName='CSC' where CustomerID='Seves'" Dim conn As New SqlConnection(connStr) conn.Open() Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn) cmd.ExecuteNonQuery() conn.Close() Dim conn As New SqlConnection("server=CSC; database=Northwind;uid=sa; pwd=sa") - S dng cu lnh ExecuteReader ly d liu: Dim cmd As New SqlCommand("Select * From Customers", conn) conn.Open() Dim rdr As SqlDataReader = cmd.ExecuteReader() While rdr.Read() Response.Write(rdr.GetString(0) + "") End While rdr.Close() S dng cu lnh ExecuteScalar ly d liu: Dim conn As New SqlConnection("server=CSC; database=Northwind2;uid=sa; pwd=sa") conn.Open() Dim cmdStr As String = "Select * From Customers" Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn) Response.Write(cmd.ExecuteScalar()) conn.Close() 4) V khi nim Connection Pooling Trong ng dng web ASP.NET, Connection Pooling l khi nim nhiu ngi dng cng truy xut vo cng 1 database ly v cng mt loi d liu. ADO.NET cho php qun l Connection Pooling theo nhiu cch khc nhau. Nu database ang s dng l dng OLEDB th connection pooling do chnh Provider ca Database qun l, v vy chng ta khng cn phi qun l. Trong trng hp s dng database SQL Server

th Connection Pooling s c qun l mt cch khng tng minh nhng cng cho php thit lp nhng tu chn chng ta t qun l. Cc thuc tnh qun l Pooling (thit lp trong Connection String) l : Max Pool Size (s connection ti a trong pool, Min Pool Size : s connection ti thiu trong pool). Khi 1 connection c open c 2 tnh hung : nu open ri th connection nm trong pool v c ly ra, nu cha c trong pool th s c thm vo pool. Khi ng connection th tt l n s c tr v pool. 5) X l cc ngoi l ADO.NET bt li trong 1 chng .NET thng thng th ta dng c php trycatch thng thng . i vi chng trnh ADO.NET c lp chu trch nhim x l cc ngoi l l SqlException (cho CSDL SQL Server) v OleDbException (cho CSDL OleDB). V d v x l ngoi l trong SQL Server Dim connString As String = "server=CSC;database=Northwind;uid=sa;pwd=s a" Dim conn As SqlConnection = New SqlConnection(connString) Try conn.Open() Catch ex As SqlException Response.Write(ex.ToString()) End Try ADO.NET - Bi 3 : i tng DataReader v DataAdapter i tng DataReader v DataAdapter DataReader i tng DataReader c .NET Framework cung cp nhm phc v vic truy cp vo c s d liu nhanh v hiu qu c th l vic c d liu t Database. Nh cp cc bi trc, DataSet phc v cho vic x l d liu ngt kt ni, cn DataReader li phc v ch yu cho vic kt ni. Tc ca x l DataReader theo hng kt ni rt ph hp cho vic x l d liu ca ng dng Web. Do vy, vic x l d liu cho ng dng web thng c x l bng DataReader. C ch x l ca DataReader : DataReader ch x l 1 record ti mt thi im v ch c truy xut 1 chiu, khng c cc thao tc phc tp nh sp xp hay truy xut bt c record ngu nhin no. Trong khi truy xut d liu, d nhin DataReader s gi kt ni lin tc vi database (hng kt ni), v DataReader ch phc v thao tc c (readonly). Chnh v tnh cht hng kt ni nn DataReader c n gin ho ti a vic x l nh nhng, t rm r, ti u c tc x l (rt quan trng i vi cc ng dng trn nn web). Cng nh 2 i tng Command v Connection, ty theo loi kt ni m DataReader cng c 2 loi :

OleDbDataReader v SqlDataReader. s dng ta phi import 2 namespace : System.Data.OleDb v System.Data.SqlClient. Cch s dng DataReader c s dng cha kt qu tr v t i tng Command vi vic thc thi hm ExecuteReader. Dim conn As SqlConnection = New SqlConnection("server=localhost;database=No rthWind;uid=sa;pwd=sa") conn.Open() Dim cmd As SqlCommand = New SqlCommand("Select * From Customers", conn) Dim dr As SqlDataReader = cmd.ExecuteReader While (dr.Read) Response.Write(dr("ContactName") + " ") End While conn.Close() Hm ExecuteReader ca i tng Command c th nhn vo tham s l nhng gi tr lit k ca i tng CommandBehavior. cmd.ExecuteReader(CommandBehavior.SchemaOnl y) Mt s gi tr lit k thng dng ca CommandBehavior l : - CloseConnection : connection s ng khi i tng DataReader ng. - SchemaOnly : Cu truy vn khng tr v d liu m tr v thng tin cc ct ca bng. - SingleRow : Cu truy vn ch tr v 1 dng duy nht. Chng ta c th kt ni cc gi tr ca CommandBehavior vi nhau bng du &: cmd.ExecuteReader(CommandBehavior.CloseConn ection & CommandBehavior.SingleRow) - Mt s thuc tnh v phng thc thng dng ca DataReader: Thuc tnh : - FieldCount : tr v s trng c trong record hin hnh. - IsClosed : tr v gi tr boolean xc nh i tng DataReader c b ng hay khng. Phng thc: - Close : ng - GetBoolean, GetByte, GetChar, GetDateTime, GetDecimal : ly cc gi tr ti ct ang xt ty vo kiu. - GetValue, GetValues : ly v gi tr hoc tp gi tr dng nguyn thy ( kiu d liu gc ca Database). - NextResult : Nhm Kt qu tip theo. - Read : Record tip theo.

DataAdapter - DataAdapter l i tng lm trung gian ly d liu v cho DataSet, DataSet thc hin x l ngt kt ni. Do vy, mc d DataAdapter c lit k l i tng hng kt ni nhng thc cht n phc v cho vic ngt kt ni. - Cng nh cc i tng khc ca ADO.NET, DataAdapter cng c 2 loi tu theo loi d liu : OleDbDataAdapter, SqlDataAdapter. Cch S dng - Sau y l mt s thuc tnh v phng thc thng dng: Thuc tnh - SelectCommand, InsertCommand, UpdateCommand, DeleteCommand : cc cu lnh select , insert, update ,delete d liu. Phng thc: - Fill : phng thc thc hin kt qu trong cu lnh select, ri tr v cho DataSet x l. - Update : Gi lnh cp nht cc thay i ca d liu ln d liu ngun

Stored Procedures Trong nhng bi hc trc y khi dng Query Analyzer chng ta c th t tn v save cc nhm cu lnh SQL vo mt file di dng script c th s dng tr li sau ny. Tuy nhin thay v save vo text file ta c th save vo trong SQL Server di dng Stored Procedure. Stored Procedure l mt nhm cu lnh Transact-SQL c compiled (bin dch) v cha trong SQL Server di mt tn no v c x l nh mt n v (ch khng phi nhiu cu SQL ring l). u im Ca Stored Procedure Stored Procedure c mt s u im chnh nh sau: Performance : Khi thc thi mt cu lnh SQL th SQL Server phi kim tra permission xem user gi cu lnh c c php thc hin cu lnh hay khng ng thi kim tra c php ri mi to ra mt execute plan v thc thi. Nu c nhiu cu lnh nh vy gi qua network c th lm gim i tc lm vic ca server. SQL Server s lm vic hiu qu hn nu dng stored procedure v ngi gi ch gi mt cu lnh n v SQL Server ch kim tra mt ln sau to ra mt execute plan v thc thi. Nu stored procedure c gi nhiu ln th execute plan c th c s dng li nn s lm

vic nhanh hn. Ngoi ra c php ca cc cu lnh SQL c SQL Sever kim tra trc khi save nn n khng cn kim li khi thc thi. Programming Framework : Mt khi stored procedure c to ra n c th c s dng li. iu ny s lm cho vic bo tr (maintainability) d dng hn do vic tch ri gia business rules (tc l nhng logic th hin bn trong stored procedure) v database. V d nu c mt s thay i no v mt logic th ta ch vic thay i code bn trong stored procedure m thi. Nhng ng dng dng stored procedure ny c th s khng cn phi thay i m vn tng thch vi business rule mi. Cng ging nh cc ngn ng lp trnh khc stored procedure cho php ta a vo cc input parameters (tham s) v tr v cc output parameters ng thi n cng c kh nng gi cc stored procedure khc. Security : Gi s chng ta mun gii hn vic truy xut d liu trc tip ca mt user no vo mt s tables, ta c th vit mt stored procedure truy xut d liu v ch cho php user c s dng stored procedure vit sn m thi ch khng th "ng" n cc tables mt cch trc tip. Ngoi ra stored procedure c th c encrypt (m ha) tng cng tnh bo mt. Cc Loi Stored Procedure Stored procedure c th c chia thnh 5 nhm nh sau: 1. System Stored Prcedure : L nhng stored procedure cha trong Master database v thng bt u bng tip u ng sp_ . Cc stored procedure ny thuc loi built-in v ch yu dng trong vic qun l database (administration) v security. V d bn c th kim tra tt c cc processes ang c s dng bi user DomainName\Administrators bn c th dng sp_who @loginame='DomainName\Administrators' . C hng trm system stored procedure trong SQL Server. Bn c th xem chi tit trong SQL Server Books Online. 2. Local Stored Procedure : y l loi thng dng nht. Chng c cha trong user database v thng c vit thc hin mt cng vic no . Thng thng ngi ta ni n stored procedure l ni n loi ny. Local stored procedure thng c vit bi DBA hoc

programmer. Chng ta s bn v cch to stored prcedure loi ny trong phn k tip. 3.Temporary Stored Procedure : L nhng stored procedure tng t nh local stored procedure nhng ch tn ti cho n khi connection to ra chng b ng li hoc SQL Server shutdown. Cc stored procedure ny c to ra trn TempDB ca SQL Server nn chng s b delete khi connection to ra chng b ct t hay khi SQL Server down. Temporary stored procedure c chia lm 3 loi : local (bt u bng #), global (bt u bng ##) v stored procedure c to ra trc tip trn TempDB. Loi local ch c s dng bi connection to ra chng v b xa khi disconnect, cn loi global c th c s dng bi bt k connection no. Permission cho loi global l dnh cho mi ngi (public) v khng th thay i. Loi stored procedure c to trc tip trn TempDB khc vi 2 loi trn ch ta c th set permission, chng tn ti k c sau khi connection to ra chng b ct t v ch bin mt khi SQL Server shut down. 4.Extended Stored Procedure : y l mt loi stored procedure s dng mt chng trnh ngoi vi (external program) vn c compiled thnh mt DLL m rng chc nng hot ng ca SQL Server. Loi ny thng bt u bng tip u ng xp_ .V d, xp_sendmail dng gi mail cho mt ngi no hay xp_cmdshell dng chy mt DOS command... V d xp_cmdshell 'dir c:\' . Nhiu loi extend stored procedure c xem nh system stored procedure v ngc li. 5.Remote Stored Procedure : Nhng stored procedure gi stored procedure server khc. Vit Stored Procedure Tn v nhng thng tin v Stored Procedure khi c to ra s cha trong SysObjects table cn phn text ca n cha trong SysComments table. V Stored Procedure cng c xem nh mt object nn ta cng c th dng cc lnh nh CREATE, ALTER, DROP to mi, thay i hay xa b mt stored procedure. Chng ta hy xem mt v d sau v Stored Procedure: to mt stored procedure bn c th dng Enterprise Manager click ln trn Stored Procedure -> New Stored Procedure.... Trong v d ny ta s to ra mt stored procedure insert mt new order vo Orders table trong Practice DB. insert mt order

vo database ta cn a vo mt s input nh OrderID, ProductName (order mn hng no) v CustomerName (ai order). Sau ta tr v kt qu cho bit vic insert c thnh cng hay khng. Result = 0 l insert thnh cng. CREATE PROCEDURE AddNewOrder @OrderID smallint, @ProductName varchar(50), @CustomerName varchar(50), @Result smallint=1 Output AS DECLARE @CustomerID smallint BEGIN TRANSACTION If not Exists(SELECT CustomerID FROM Customers WHERE [Name]=@CustomerName) --This is a new customer. Insert this customer to the database BEGIN SET @CustomerID= (SELECT Max(CustomerID) FROM Customers) SET @CustomerID=@CustomerID+1 INSERT INTO Customers VALUES(@CustomerID,@CustomerName) If Exists(SELECT OrderID FROM [Orders] WHERE OrderID=@OrderID) --This order exists and could not be added any more so Roll back BEGIN SELECT @Result=1 ROLLBACK TRANSACTION END Else --This is a new order insert it now BEGIN INSERT INTO [Orders] (OrderID,ProductName,CustomerID) VALUES(@OrderID,@ProductName,@CustomerID) SELECT @Result=0 COMMIT TRANSACTION END END Else --The customer exists in DB go ahead and insert the order BEGIN If Exists(SELECT OrderID FROM [Orders] WHERE OrderID=@OrderID) --This order exists and could not be added any more so Roll back BEGIN SELECT @Result=1 ROLLBACK TRANSACTION END Else

--This is a new order insert it now BEGIN INSERT INTO [Orders] (OrderID,ProductName,CustomerID) VALUES(@OrderID,@ProductName,@CustomerID) SELECT @Result=0 COMMIT TRANSACTION END END Print @Result Return to ra mt stored procedure ta dng lnh CREATE PROCEDURE theo sau l tn ca n (nu l temporary stored procedure th thm du # trc tn ca procedure. Nu mun encrypt th dng WITH ENCRYPTION trc ch AS) v cc input hoc ouput parameters. Nu l output th thm keyword OUTPUT ng sau parameter. Ta c th cho gi tr default cng lc vi khai bo data type ca parameter. K t sau ch AS l phn body ca stored procedure. Trong v d trn trc ht ta khai bo mt bin @CustomerID sau bt u mt transaction bng BEGIN TRANSACTION (ton b cng vic insert ny c thc hin trong mt Transaction ngha l hoc l insert thnh cng hoc l khng lm g c- all or nothing). Trc ht ta kim tra xem ngi khch hng l ngi mi hay c. Nu l ngi mi th ta "tin tay" insert vo Customers table lun cn nu khng th ch insert vo Orders table m thi. Nu l ngi customer mi ta ly CustomerID ln nht t Customers table b vo bin @CustomerID v sau tng ln mt n v dng cho vic Insert Customer dng k tip. Sau khi insert ngi customer mi ta tip tc cng vic bng vic kim tra xem Order mun insert c tn ti cha (v nu order tn ti th khi insert SQL Server s bo li do OrderID l Primary key). Nu nh order trn v l do no c trong DB th ta roll back v tr kt qu =1 cn nu khng th ta insert mt order mi vo v commit transaction vi kt qu tr v =0. Tng t nh vy nu ngi customer tn ti (sau ch else u tin) th ta ch vic insert order ging nh trn. Trong mi trng hp k trn ta u in ra kt qu v return. V d trn y ch mang tnh hc hi cn trn thc t database c th phc tp hn nhiu nn vic

vit stored procedure i hi kin thc vng chc v SQL v k nng v programming.

Tnh lng qun Cn nh nm xa anh thng ni Mnh s yu nhau rt bn lu Nhng sao bng thy anh v tnh Chng ni vi em cu yu nng nn Ri nhng sng gi nh a ti V bng bin mt bng hnh anh anh nh lng qun cu n tnh Git nc mt ri tnh chng mnh Tnh yu l nhng am m bao m thao thc Tnh yu l nhng chua cay kh ni ln thnh li Tnh yu n chng ai ng Ri s m thm bin mt Tnh yu l nhng m say trong tim m c Tnh yu l khi sng bng dng ai mt m Tnh yu ni cu mong ch Tnh lng qun th Li xa em v cht vng bng ai ngy xa !!

Potrebbero piacerti anche