active data objects
DESCRIPTION
Active Data Objects. By CSJue. Microsoft Database Tech. DAO ( Data Access Objects) 由 C++ 寫成, 架構在 JET database engine 上, 可以直接存取和控制 database 。 ODBC(Open Database Connectivity) 以 C 寫成的 API, 為 MS 定的一個 Open standard 。 RDO(Remote Data Objects) 由 C++ 寫成, 架構在 ODBC 上, 其特點為充分支援網路。. - PowerPoint PPT PresentationTRANSCRIPT
Active Data ObjectsActive Data Objects
By CSJue
Microsoft Database Tech.Microsoft Database Tech.
• DAO (Data Access Objects)– 由 C++寫成 , 架構在 JET database engine上 , 可以直接存取和控制 database。
• ODBC(Open Database Connectivity)– 以 C寫成的 API, 為 MS定的一個 Open standard 。
• RDO(Remote Data Objects)– 由 C++寫成 , 架構在 ODBC上 , 其特點為充分支援網路。
Microsoft Database Tech.(cont.)Microsoft Database Tech.(cont.)
• OLE DB– 由 C++寫成 , 可處理多種資料 ( 如 ODBC, 試算表 ,
E-Mail, text, file…..), 並支援網路。
Client
RDO
ServerIIS
Server
Server
ODBC
Microsoft Database Tech.(cont.)Microsoft Database Tech.(cont.)
• ADO(Active Data Objects)– 由 C寫成 , 目的在使 OLE DB用起來方便 , 它用
ActiveX技術把 OLE DB包起來。
Client/Data Consumer
RDO
ODBC
DataStreams
ADOOLE DB
ODBCProvider
DAO
TextRelational data
The ADO Object Model
ActiveConnection
The ADO Object Model(Cont.)
• Connection object: Create a connection to a data provider.
• Recordset object: Create a set of records from a query.
• Command object: Execute SQL strings, stored procedures, or action queries
• Fields Collection:Recordset objects contain a collection of Field Objects that gives you access to column metadata
The ADO Object Model(Cont.)
• Parameters Collection: Contains all of the parameters associated with the Command object.
• Errors Collection:Connection objects contain an Errors collection.
• Properties Collection:Connection, Command, Recordset, and Field objects all include a Properties collection.
Connection object
• 主要在建立和維護 Command object, 使用它來管理 Recordset object.
• 建立 Connection ObjectSet objConn = Server.CreateObject(“ADODB.Connection”)
ObjConn.Open =”DSN=myDSN;UID=master;PWD=slave”
Set objRst = objConn.Execute(CommandText, RecordsAffected, Options)
• Connection pooling - 60 sec(default)
• Connection timeout - 15 sec(default)
Connection object (cont.)
• TransactionsObjConn.BeginTrans();…………………..If(ObjConn.Errors.Count=0)Then
ObjConn.CommitTransElse
ObjConn.RollbackTransEnd If
• Execute method– 直接建立 recordset object, 但只能得到一個唯讀 , 向前的游標
Connection object (cont.)
– Set objRst = objConn.Execute(CommandText, RecordsAffected, Options);
數值 Options Command Text 的型式
1 adCmdText 原文2 adCmdTable Table 名稱4 adCmdStoredProc
Stored procedure 或querydef
8 adCmdUnknown 未知的
Connection object (cont.)
• IsolationLevel–解決 Dirty Reads, Nonrepeatable Reads,
Phantom Records等同時性控制的問題– adXactUnspecified(-1), adXactChaos(16),
adXactBrowse (256), adXactReadUncommited (256), adXactCursorStability (4096), adXactReadCommitted (4096), adXactIsolated(1048576), adXactSerializable (1048576)
Command object
• 主要在達成 query
• 建立 Command objectway1: Set objCmd = Server.CreateObject(“ADODB.Command”)
Set objCmd.ActiveConnection = objConn
ObjCmd.CommandText=”qryPhoneMessagesFor”
way2:objCmd.ActiveConnection = “dsn=intranet ; database= intranet; uid=sa;pwd=..;” Or
objCmd.ActiveConnection = ”DRIVER={Microsoft Access Driver(*.mdb)}; DBQ=c:\data\…..\XXX.mdb”
Command object(cont.)
• Execute method– pCommand->Execute(RecordsAffcted,
Parameters, Options)
• CreateParameter & Parameters Collection
Recordset Object
• 完成資料庫管理 , 查詢的工作• 建立 Recordset object
– 設定好 ActiveConnection, CursorType, LockType, Source properties後 , 呼叫 Open method, 或直接把它們傳給 Open method--pRecordset->Open(source, activeconnection, cursortype, LockType, options)
Recordset Object(Cont.)
– CursorType:
Recordset Object(Cont.)
– Options:
Recordset Object(Cont.)
• Bookmark( 用 Rst.supports(adBookmark)測有無支援 )
• Page– 相關 properties:AbsolutePage, PageSize, Page
Count…
Recordset Object(Cont.)
• Filter– way1:使用判斷標準常數 ~adFilterNone(0), adFil
terPendingRecords (1), adFilterAffectedRecords (2), adFilterFetchedRecords(3)
– 使用比較字串來過濾 :• objRst.Filter = “for = ‘mpc’ AND on = ‘Date’ ”
• GetRows: Fetches a block of rows into an array.
Recordset Object(Cont.)
• Adding DataRst.AddnewRst(“field1”) = value1Rst(“field2”) = value2………….Rst.Update (EX. Addcust1.html)
• Updating dataRst(“field1”) = value1
……
rst.Update(EX. Update.asp)
Using ADO Objects in VC++
• Using #import#import “C:\ProgramFiles\Common Files\System\ADO\MSADO10.DLL”
no_namespace rename(“EOF”, “ADOEOF”)
• Initializing COMCoInitialize(NULL); CoUninitialize();
• Creating ADO objects_ConnectionPtr pConn;
hr = pConn.CreateInstance( “ADODB.Connection”);
• The ADO License Key
Reference
• Http://www.microsoft/accessdev/articles/moves202.htm ~ ADO Programming(ASP)
• http://www.microsoft.com/data/ado/sams/ch08.htm
• http://www.microsoft.com/data/ado
• Visual C++5 by David Bennett, part V
• 深入 Active Server Pages ~ ch15, 16, 17