(NOTE: Each chapter concludes with a Summary.)
Preface.
Acknowledgments.
1. Windows DNA and COM.
Distributed Internet Applications.
The Windows DNA Architecture.
The Presentation Tier.
The Business Logic Tier.
The Data Tier.
DNA Summary.
DNA Scenarios.
The Client-Server Architecture.
The Web.
Component Object Model.
Reuse.
Challenges.
The COM Solution.
COM+ and Attributes.
The Benefits of COM.
COM Aggregation.
Using COM Objects with ATL.
COM Component Encapsulation.
2. Universal Data Access.
Universal Data Server.
Universal Data Access in Detail.
UDA Components.
Open DataBase Connectivity.
OLE DB.
ODBC versus OLE DB.
OLE DB Versions.
ActiveX Data Object.
OLE DB Templates.
Using Raw OLE DB.
Using the OLE DB Consumer Templates.
The OLE DB Template Extensions.
3. The OLE DB Wizard.
Is the Wizard a Good Thing?
Using the Wizard.
Creating an ATL Project.
Invoking the Wizard.
Generated Code.
Opening a Table.
Opening a Command.
Adding Support for Changes.
Using Stored Procedures.
Improvements to the Generated Code.
The MFC Wizard.
OLE DB Consumer Template Classes Overview.
Table Command Rowset Accessor Architecture.
Putting Classes Together.
CassessorRowset.
Closing CaccessorRowset.
4. Errors and Error Mechanisms.
HRESULT.
Interpreting HRESULT.
HRESULT in Practice.
Error Info and Error Records.
Tracing Errors.
IerrorInfo.
IerrorRecords.
Using the OLE DB Classes.
Getting the Basic Error Information.
Getting a Custom Error Object.
ErrorInfo Support.
Putting Things Together.
5. OLE DB Properties.
The Notion of Property.
Properties and Property Sets.
Property Set GUIDs.
Property Groups.
Property Operations.
Setting Properties.
DBPROPSET.
DBPROP.
Using the Raw Structures.
CDBPropSet.
Setting One Property.
Required and Optional Properties.
Column Identifiers.
Custom Property Classes.
Checking the Property Status.
Getting Properties.
DBPROPIDSET.
CDBPropIDSet.
Memory Management.
Getting One Property.
Enumerating Properties.
Enumerating Errors.
Getting Property Information.
DBPROPINFOSET.
DBPROPINFO.
CDBPropertyInfoSet.
Summary.
6. Data Sources and Sessions.
Some History.
Proprietary Database.
ODBC.
Opening a Data Source Programmatically.
ProgID and CLSID.
Opening a Data Source with User Name and Password.
Opening a Data Source from a Set of Properties.
Opening a Data Source with Incomplete Information.
Security.
Data Links and Initialization Strings.
Storing the Connection String.
Opening a Data Source Interactively.
The Data Link Properties Dialog.
The Organize Data Links Dialog.
Service Components and Resource Pooling.
Resource Pooling.
Closing a Data Source.
Enumerators.
The Root Enumerator.
Enumerator Navigation.
Data Sources and Enumerators.
Provider Enumerators.
Data Source Extensions.
Saving the Connection String to a File.
Editing a Data Source.
Getting the CLSID.
Sessions.
Summary.
7. Tables and Commands.
Table or Command?
Tables.
Opening a Table.
Commands.
Ccommand.
Opening a Command.
Closing a Command.
Preparing a Command.
Commands with Parameters.
Commands with Multiple Results.
Command Extensions.
Commands with Multiple Parameter Accessors.
Commandswith Multiple Parameter Sets.
Summary.
8. Rowsets.
Rowset Objects.
Rowset Classes.
Rowsets and Rows.
Row Management.
Row Count and Position.
Cursor Movement.
Row Identity.
Bookmarks.
Bookmark Types.
Bookmark Position.
Standard Bookmarks.
Rowset Properties.
Setting Properties at Creation Time.
Getting Properties.
Bulk Rowsets.
Rowset Arrays.
Client Cursor Service Component.
Finding Rows.
A Find Example.
Using the Find.
Summary.
9. Accessors.
Overview.
Column and Parameter Accessors.
Input and Output Accessors.
Bindings.
Accessors as Collections of Bindings.
Accessor Classes.
CaccessorBase.
Distinguishing the Accessor Classes.
CnoAccessor.
Using Caccessor.
Column Binding Macros.
Length and Status Binding Macros.
Precision and Scale Macros.
Column Type and Size Macros.
Auto Accessors.
Multiple Accessors.
Binding by Reference.
Provider-Owned Memory.
Client-Owned Memory.
BSTR.
Binding Method Summary.
Parameter Binding.
Dynamic Accessors.
Using Dynamic Accessors.
Getting and Setting Data Parts.
Using CdynamicParameterAccessor.
Extending Dynamic Accessors.
Summary.
10. Exchanging Data.
Getting Data.
Auto Accessors.
GetDataHere.
From the Consumer to the Data Store.
Deleting a Row.
Setting Data.
Inserting a Row.
Rowset Method versus SQL.
Deferred Updates.
Setting Deferred Changes.
Using Deferred Updates.
Pending Status.
Pending Rows: Navigating the Cache.
Transmitting the Changes.
Updating All Changes.
Undoing Changes.
Undoing All Changes.
Original and Last Visible Data.
Deferred Changes and Transactions.
Notifications.
Rowset Listeners.
Event Reasons.
Event Phase.
Notification Example.
Summary.
11. BLOBs.
BLOB Types.
Content.
Access Method.
Long and Short BLOBs.
Fixed-Size and Variable-Size BLOBs.
BLOBs as In-Memory Data.
BLOBs as In-Memory Data by Reference.
BLOB as Storage Object.
Storage Interfaces.
Retrieving BLOB Data with a Storage Object.
Storing BLOB Data with a Storage Object.
Storing BLOBs by Writing on a Storage Object.
Storing BLOBs with a Consumer-Provided Storage Object.
BLOB Properties.
Handling Several BLOBs.
Converting Interfaces, Memory, and Files.
Accessing Persistent COM Objects.
Summary.
12. Transactions.
The Need for Transactions.
The Transaction Approach.
Transaction Properties.
Atomicity.
Consistency.
Isolation.
Durability.
Using Transactions.
Simple Transaction.
Transaction Retention.
Rowset Preservation.
Preservation Demo.
Isolation Levels.
Transaction Isolation Demo.
Read Uncommitted Transactions.
Read Committed Transactions.
Repeatable Read Transactions.
Serializable Transactions.
Isolation Levels and Locks.
Sessions with No Transactions.
Asynchronous Transactions.
Using Transaction Outcome.
Getting Events from the Transaction.
Nested Transactions.
Using Nested Transactions.
Distributed Transactions.
Microsoft Distributed Transaction Coordinator.
Using MS DTC.
Transactions and Components.
Component Granularity.
Microsoft Transaction Server and COM+ Components.
Transaction Enlistment.
13. Indexes, Chapters, and Views.
Indexes.
Index Type.
Using Indexes.
Opening an Index.
Seeking a Row.
Restricting the Index Range.
Chapters.
Using a Chapter.
CrowsetEx.
Hierarchical Rowsets.
Example.
Traditional Approach.
Chapter Approach.
Data Shaping Service.
Navigating Hierarchical Rowsets.
Views.
When to Use Views.
Opening a View.
View Type.
Sorting a View.
Filtering a View.
View Chapters.
Stacking Views.
14. Schema, Definitions, and Synchronization.
Querying and Navigating the Schema.
Restrictions.
The Catalog/Schema Model.
Catalogs.
Tables.
Columns.
Views.
Procedures.
Indexes.
Keys.
Privileges.
Provider Types.
Modifying the Schema.
Using CTableDefinition.
Using CIndexDefinition.
Synchronizing the Schema.
Checking Binding at Compile Time.
Binding by Name.
Creating Tables from the Code.
15. OLAP.
From Tabular to Multidimensional Data.
Multidimensional Sessions and Commadns.
Datasets.
The Dataset Object.
Cdataset.
Working with Datasets.
Metadata: Axis Information.
Axis Navigation.
Axis with Multiple Dimensions.
Axis Information with Multiple Dimensions.
Using CAxisAccessor with Multiple Dimensions.
Cells.
Cell Identification.
Cell Accessors.
Getting Cell Data.
Cell Ranges.
Using Multidimensional Data with Rowsets.
OLAP Schema.
16. Hierarchical Data.
Object Overview.
Direct Binding.
Working with Direct Binding.
The Row Object.
Opening a Row.
Creating a Row.
Getting and Setting Column Values.
Scoped Operations.
Document Model.
Row Folder Object.
Opening and Creating a Row Folder.
Enumerating Children.
Streams.
Opening a Stream.
Reading and Writing in a Stream.
Epilogue.
Appendix A: Advanced C++ Techniques.
Inheriting from a Template Parameter.
Default Template Parameters.
Type Definition Overloading.
Appendix B: OLE DB Types and Conversions.
Conversion Table.
Index.