21
Active Data Objects Active Data Objects By CSJue

Active Data Objects

  • Upload
    diem

  • View
    56

  • Download
    0

Embed Size (px)

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 Presentation

Citation preview

Page 1: Active Data Objects

Active Data ObjectsActive Data Objects

By CSJue

Page 2: Active Data Objects

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上 , 其特點為充分支援網路。

Page 3: Active Data Objects

Microsoft Database Tech.(cont.)Microsoft Database Tech.(cont.)

• OLE DB– 由 C++寫成 , 可處理多種資料 ( 如 ODBC, 試算表 ,

E-Mail, text, file…..), 並支援網路。

Client

RDO

ServerIIS

Server

Server

ODBC

Page 4: Active Data Objects

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

Page 5: Active Data Objects

The ADO Object Model

ActiveConnection

Page 6: Active Data Objects

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

Page 7: Active Data Objects

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.

Page 8: Active Data Objects

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)

Page 9: Active Data Objects

Connection object (cont.)

• TransactionsObjConn.BeginTrans();…………………..If(ObjConn.Errors.Count=0)Then

ObjConn.CommitTransElse

ObjConn.RollbackTransEnd If

• Execute method– 直接建立 recordset object, 但只能得到一個唯讀 , 向前的游標

Page 10: Active Data Objects

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 未知的

Page 11: Active Data Objects

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)

Page 12: Active Data Objects

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”

Page 13: Active Data Objects

Command object(cont.)

• Execute method– pCommand->Execute(RecordsAffcted,

Parameters, Options)

• CreateParameter & Parameters Collection

Page 14: Active Data Objects

Recordset Object

• 完成資料庫管理 , 查詢的工作• 建立 Recordset object

– 設定好 ActiveConnection, CursorType, LockType, Source properties後 , 呼叫 Open method, 或直接把它們傳給 Open method--pRecordset->Open(source, activeconnection, cursortype, LockType, options)

Page 15: Active Data Objects

Recordset Object(Cont.)

– CursorType:

Page 16: Active Data Objects

Recordset Object(Cont.)

– Options:

Page 17: Active Data Objects

Recordset Object(Cont.)

• Bookmark( 用 Rst.supports(adBookmark)測有無支援 )

• Page– 相關 properties:AbsolutePage, PageSize, Page

Count…

Page 18: Active Data Objects

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.

Page 19: Active Data Objects

Recordset Object(Cont.)

• Adding DataRst.AddnewRst(“field1”) = value1Rst(“field2”) = value2………….Rst.Update (EX. Addcust1.html)

• Updating dataRst(“field1”) = value1

……

rst.Update(EX. Update.asp)

Page 20: Active Data Objects

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

Page 21: Active Data Objects

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