| Introduction | |
| ADO's Big Idea | |
| The Look and Feel of ADO ADO Components and Libraries | |
| Summary | |
| ADO IN DEPTH | |
| ADO Unplugged | |
| Recordset and Field Objects | |
| Look, No Connection! - Creating a Standalone Recordset | |
| Basic Recordset Navigation | |
| Find, Sort, and Filter | |
| Working with Pages | |
| Modification Operations | |
| ADO Data Types and Attributes | |
| Data Types | |
| Attributes | |
| Decimal and Numeric Data Types | |
| Introducing Property Objects | |
| Recordset Optimizations | |
| Cloning | |
| Recordset Error Handling | |
| Records ets Compared to Other Data Structures | |
| The Data Structure Performance "Shoot-out" | |
| Performance Tests Applied in the "Shoot-out" | |
| The "Shoot-out" Results | |
| Summary | |
| Recordsets with SQL Data Sources | |
| ADO and ODBC | |
| The Open Method | |
| Staying Connected-Cursor Control | |
| Forward-Only Cursor | |
| Static Cursor | |
| Keyset Cursor | |
| Dynamic Cursor | |
| Unspecified Cursor | |
| Staying Connected-Lock Control | |
| Read-Only Lock | |
| Pessimistic Lock | |
| Optimistic Lock | |
| Batch Optimistic Lock | |
| Examining the Fields Collection | |
| Handling Null Data | |
| Handling Large Data Fields | |
| Handling Special Columns | |
| Dynamic Field Properties | |
| Modifications and Locking with Client-Side Cursors | |
| Overcoming Missing Fields | |
| Modifications Applied to Joins | |
| Specifying a Unique Table | |
| Resynchronizing Connected Recordsets | |
| Using Index and Seek | |
| Processing Multiple Recordsets | |
| Optimization for SQL Data Sources | |
| Append-only Recordsets | |
| Cache Size | |
| Summary | |
| Explicit Connections | |
| Creating and Using Connections | |
| Data Link Files | |
| Other Properties Used When Connecting | |
| The Execute Method | |
| Getting Schema Information | |
| Connection Properties | |
| ADO and Transactions | |
| Programming Transactions with ADO | |
| Concurrency and Isolation | |
| ADO and Errors | |
| Connection Pooling | |
| A Two-Tier Pooling Scenario | |
| An N-Tier Pooling Scenario | |
| Summary | |
| Explicit Commands | |
| Why Use Command Objects? | |
| Parameters and Parameter Objects | |
| The Lazy Way to Use Parameters | |
| The Inefficient Way to Use Parameters | |
| Using Explicit Parameter Objects Efficiently | |
| Commands with Multiple Parameters | |
| Working with Stored Procedures | |
| Stored Procedure Example | |
| Stored Procedures with Multiple SELECT Statements | |
| Stored Procedures and Temporary Tables | |
| Command Optimizations | |
| Summary | |
| The ADO Event Model and Asynchronous Processing | |
| Connection Events | |
| Recordset Events | |
| Strategies for Using Events | |
| Asynchronous Processing | |
| Opening a Connection Asynchronously | |
| Cancelling an Asynchronous Command | |
| Asynchronous Fetch with Client-side Cursors | |
| Summary | |
| Disconnected Recordsets | |
| ADO in an N-Tier Environment | |
| The Mechanics of Disconnecting | |
| Batch Updating | |
| Preprocessing a Batch Update | |
| Postprocessing a Batch Update | |
| Advanced Postprocessing | |
| Resynchronizing Disconnected Recordsets | |
| Disconnected Recordsets and Stored Procedures | |
| Recordset Marshalling | |
| Batch Updating Using an N-Tier Model | |
| Recordset Persistence | |
| Persisting with a Stream Object | |
| Persisting Using the ASP Response Object | |
| Persisting with a PropertyBag | |
| Persisting with an MSMQ Message Body | |
| Explicit Persisting | |
| Summary | |
| Recordset Recursion and Data Shaping | |
| The Idea of Data Shaping | |
| Creating the Connection String | |
| Relation-based Hierarchies | |
| Hierarchical Recordset Navigation | |
| Generic Hierarchical Recordset Navigation | |
| Updating Hierarchical Recordsets | |
| Creating Complex Shapes Using Reshaping | |
| Chapterless Child Recordsets | |
| Avoiding Command Objects | |
| Extending and Fabricating Recordsets Using Data Shaping | |
| Fabricated Hierarchical Recordsets | |
| Combining Provider and Fabricated Recordsets | |
| Parameterized Data Shaping | |
| External Parameters | |
| Internal Parameters | |
| Combining Internal and External Parameters | |
| Group-based Hierarchies | |
| Functions Supported by the COMPUTE Statement | |
| Combining Group-based and Parameterized Relation-based Hierarchies | |
| Summary | |
| Working with Documents - Records and Streams | |
| Semi -structured Data | |
| The Internet Publishing Provider | |
| The Record Object | |
| Opening and Closing Records | |
| Deleting, Moving, and Copying Resources | |
| The GetChildren Method | |
| Using Records and Recordsets | |
| Streams | |
| Opening, Closing, and Saving Streams | |
| Uploading and Downloading Using Streams | |
| Stream Content Manipulation | |
| Summary | |
| The ADO Data Definition Language and Security Model (ADOX) | |
| The Death of DAO | |
| Using ADOX | |
| Working with Table Objects | |
| Adding Tables into SQLServer | |
| ADOX and Jet | |
| Using ADOX Security Features with Jet | |
| Summary | |
| Creating Simple Providers | |
| Why Do It? | |
| The Simple Provider Interface | |
| Creating a Read-only Provider | |
| ReadingVB Source Code | |
| Creating the Record Source Object Class | |
| Creating the Data Source Object Class | |
| Registering and Using Simple Providers | |
| Creating an Updateable Provider | |
| Supporting OLEDBSimple Provider Listeners | |
| Implementing deleteRows | |
| Implementing insertRows | |
| Implementing set Variant | |
| Data Shaping with Simple Providers | |
| Summary | |
| ADO AT LARGE | |
| Binding and Data-aware Objects | |
| Binding with Controls | |
| Binding Programmatically | |
| Using Format Objects | |
| Binding to Controls and Properties That Are Not Data Aware | |
| Binding with Classes | |
| Creating a Nonvisual Data Consumer | |
| The Data Repeater Control | |
| Binding Hierarchical Recordsets | |
| Displaying Complex Hierarchies | |
| Summary | |
| The Data Environment | |
| What Is a Data Environment? | |
| Building a Form Using Drag-and-Drop | |
| Building a Form Using Explicit Binding | |
| Using the Data Environment Programmatically | |
| Adding Code to the Data Environment | |
| Using Parameterized Commands | |
| Executing Before Loading the Form | |
| Executing After Loading the Form | |
| Defining Hierarchical Recordsets | |
| Making Data Environments into Components | |
| Summary | |
| ADO, DNA, MTS, and COM+ | |
| What Are MTS and COM+? | |
| Non-Transactional Components | |
| Transactional Components | |
| Connection-oriented vs. Transaction-oriented Systems | |
| Creating Transactional Components Using ADO | |
| Distributed Transactions | |
| Controlling Secondary Objects in COM+ | |
| Controlling Secondary Objects in MIS | |
| Summary | |
| RDS and DHTML | |
| RDS and DHTML in Action | |
| RDS Components and Architecture | |
| The RDS DataControl | |
| The RDS DataSpace | |
| The RDSServer DataFactory | |
| The MS Remote Provider | |
| RDS Customization Handlers | |
| Using RDS with Custom Business Objects | |
| Summary | |
| Multidimensional ADO (ADOMD) | |
| OLAP and Multidimensional Data | |
| The MDX Command Language | |
| ADOMD - Dimensions and Axes | |
| Working with a Three-dimensional Cellset | |
| Creating Slices Using a WHERE Clause | |
| Using ADODB Recordsets with OLAP Servers | |
| Drill Down - Hierarchies, Levels, and Members | |
| Defining Axes with Multiple Levels | |
| ADOMD-aware Controls | |
| Summary | |
| Glossary | |
| Index | |
| Table of Contents provided by Publisher. All Rights Reserved. |