Tải bản đầy đủ (.pdf) (748 trang)

Tài liệu Professional ADO.NET Programming pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.65 MB, 748 trang )


Summary of Contents
Introduction 1
Chapter 1: Data Access and .NET 9
Chapter 2: The .NET Data Providers 45
Chapter 3: Visual Studio .NET and ADO.NET 69
Chapter 4: Using DataReaders 133
Chapter 5: The DataSet 163
Chapter 6: Using the DataAdapter 207
Chapter 7: Typed DataSets and DataSet Schemas 235
Chapter 8: XML and the DataSet 271
Chapter 9: Constraints, Relations, and Views 317
Chapter 10: Transactions 365
Chapter 11: Mapping 387
Chapter 12: Making a Data Services Component 409
Chapter 13: ADO.NET and Web Services 455
Chapter 14: SQL Server Native XML Support 517
Chapter 15: Performance and Security 551
Chapter 16: Integration and Migration 589
Chapter 17: Creating a Custom .NET Data Provider 625
Chapter 18: Case Study – Cycle Couriers 671
Index 707
Table of Contents
Introduction 1
What Is ADO.NET? 1
What Does This Book Cover? 1
Who Is This Book For? 3
What You Need To Use This Book 3
Conventions 3
Customer Support 4
How to Download the Sample Code for the Book 4


Errata 4
E-mail Support 4
p2p.wrox.com 5
Why this System Offers the Best Support 6
Chapter 1: Data Access and .NET 9
The .NET Framework 9
The Common Language Runtime 10
Garbage Collection 11
The Common Language Infrastructure 11
Assemblies 11
The Common Type System 12
The Common Language Specification 12
.NET Class Libraries 12
Not Another Data Access Technology? 13
Brief History of Data Access 13
ODBC 13
DAO 13
RDO 14
OLE DB 14
ADO 14
Introduction to ADO.NET 15
Advantages of Using Managed Classes 15
Cross-Language Support 15
Cleaner Architecture 15
XML Support 15
Optimized Object Model 16
Table of Contents
ii
Architectural Overview of ADO.NET 16
.NET Data Providers 16

Data Provider Components 16
Existing Data Providers 19
The DataSet 21
The DataTable Class 23
Updating the Data Source 24
ADO.NET and XML 25
Typed DataSets 27
ADO.NET and ADO 2.6 28
Disconnected Data Access 29
Read-Only, Forward-Only Access 30
Provider-Specific Classes 31
Using ADO 2.x in .NET 34
Using ADO.NET 36
C# Example 36
Visual Basic.NET Example 36
JScript.NET Example 37
Managed C++ Example 38
J# Example 39
ADO.NET Events 40
Summary 42
Chapter 2: The .NET Data Providers 45
The SQL Server Data Provider 46
The OLE DB Data Provider 47
Meet the Players 47
Connection 48
Command 49
DataReader 49
DataAdapter 52
Establishing Connections 53
The SqlConnection and OleDbConnection Classes 53

Constructing a Connection 53
Storing Connection Strings in the Configuration File 54
Connection Events 56
Connection Pooling in the Data Providers 58
Using Commands 59
The SqlCommand and OleDbCommand Classes 59
Using a Command with a T-SQL Statement 59
Executing the Command 60
Using a Command with a Stored Procedure 63
Using the SqlParameter and OleDbParameter Classes 64
Summary 67
Table of Contents

iii
Chapter 3: Visual Studio .NET and ADO.NET 69
Connection Classes 70
SqlConnection and OleDbConnection Data Components 70
Adding the Connection String 72
Retrieving Connection Strings Programmatically 76
Adding an Event 77
Command Data Components 79
SqlCommand and OledbCommand Data Components 80
Defining a Query Command 81
Executing a Stored Procedure 87
Data Adapter Components 91
Table Mappings 101
DataSet Data Component 103
The Typed Dataset 104
Adding a Typed Dataset to the Project 104
Relating Two or More Tables 108

Generating and Filling a Typed DataSet Object 110
Using the Techniques Acquired to Create a Web Service 112
The DataView Data Component 116
Using the DataView to View Selected Rows 117
Filtering Rows Using a Filter Expression 117
Filtering Rows on Row State 118
Using the DataView to Sort Rows 119
The DataGrid Component 120
DataGrid Web Component 120
Binding the DataGrid Component to a Data Source 120
Formatting the DataGrid 122
Sorting DataGrid Records 125
Selecting, Editing, Updating, and Deleting DataGrid Records 125
Breaking a DataGrid into Pages 128
DataGrid Window Component 129
Summary 130
Chapter 4: Using DataReaders 133
A Note About the Chapter Contents 134
The Basics of a DataReader 135
The IDataReader Interface 135
The IDataRecord Interface 135
The ADO.NET DataReaders 136
DataReader Operations 138
Creating a DataReader 139
The ExecuteReader Method 139
Creating and Using a DataReader 140
Table of Contents
iv
Simple Data Retrieval With the DataReader 141
Executing Stored Procedures with a DataReader 143

Navigating Multiple Result Sets 147
Accessing the Data in a Type-Safe Manner 148
SQL Server Types 150
Getting the Result Set's Schema 151
Bringing it all Together 153
Commonly Encountered Exceptions 157
IndexOutOfBoundsException 157
InvalidOperationException 158
DataReader Performance Considerations 158
Column Ordinal versus Column Name 159
Type Safe Access versus Non-Type-Safe Access 160
Summary 161
Chapter 5: The DataSet 163
The DataTable 164
DataColumn 165
DataRow 166
Constraints 166
Primary Key 167
Dynamically Constructing a DataTable 168
DataTable Events 169
DataTable Events Example 170
Populating a DataSet 180
Constructing a DataAdapter 181
Invoking Fill 182
DataAdapter Example 183
The Tables Collection 185
Populating the Tables Collection with Multiple DataTables 185
Multiple DataSet Tables Example 186
Retrieving the Tables Collection Metadata 188
The Relations Collection 190

DataRelations Example 192
Merging DataSets 197
Merging Two DataSets 198
Merging Two DataSets and Maintaining Original Values 198
Merging Two DataSets with Different Schemas 198
Caching DataSets for Better Performance 199
Summary 204
Table of Contents

v
Chapter 6: Using the DataAdapter 207
The DataAdapter Base Class 207
DataAdapter and DataSet 208
More Details for the Fill Method 212
Using More Complex Queries 213
Filling a DataSet Object with Few Records 217
Filling a DataSet Object with Only the Schema 219
Filling a DataSet Object that Already has a Schema 222
Updating a Database 222
Using a CommandBuilder Object 223
Using SQL Commands 225
Making Updates Using Stored Procedures 228
The DataAdapter's Events 230
Summary 232
Chapter 7: Typed DataSets and DataSet Schemas 235
Overview of XSD 236
Simple Types 236
Basic Data Types 236
Attributes 238
Enumerations 239

User-Defined Types 240
Facets 240
Complex Types 241
Mixed Attribute 241
Element Groups 242
ll Element 242
choice Element 242
sequence Element 243
group Element 243
Attribute Groups 244
XSD Annotation 244
documentation Element 245
appinfo Element 245
XmlSchema Class 245
DataSet Schemas 247
Schema Translation 247
Generating Tables and Columns 248
Constraints 250
Keys 250
Unique Constraints 250
Foreign Keys (Keyrefs) and Relationships 250
Typed DataSets 254
Building Strongly Typed DataSets in Visual Studio .NET 255
Building Typed DataSets Manually 259
Strongly Typed DataSets and Relational Data 260
Typed DataSet Performance 262
Table of Contents
vi
Annotating Typed DataSets 262
codegen 263

typedName 263
typedPlural 263
typedParent 263
typedChildren 263
nullValue 263
msdata 264
ConstraintName 264
ConstraintOnly 264
UpdateRule 264
DeleteRule 264
PrimaryKey 264
Relationship 264
Annotated Typed DataSet Example 265
Summary 268
Chapter 8: XML and the DataSet 271
XmlDocument (W3C DOM) 272
XPath 275
Axis 276
Node Test 277
Predicate 277
DataSet Schemas 280
Schema Inference 280
Inference Rules 280
Inference Rules in Action 281
Supplied Schemas 285
Document Validation with Schemas 286
XmlValidatingReader 286
DataSets and XML Data 289
Loading XML 289
XmlReadMode 290

Writing XML 291
Fidelity Loss and DataSet Schemas 293
DataSet Marshaling 295
DataSet Serialization 295
Transferring DataSet XML Between Applications 295
Data Filtering 299
Select Method 300
Data Views 303
The DataSet and the XmlDataDocument 305
Relational Projection of DOM View via XSD 306
Relational Projection Views with a Typed DataSet 309
Using XSL and XSLT Transformations 310
Summary 314
Table of Contents

vii
Chapter 9: Constraints, Relations, and Views 317
Constraints 318
Unique Constraint 319
ForeignKeyConstraint 321
Custom Constraint 326
DataRelations 333
XML and DataRelations 337
DataViews 340
Sorting 341
Filtering 343
Operators 344
Relationship Referencing 344
Aggregate Functions 345
Functions 346

Filtering on Row State 346
Editing Data in the DataView 348
DataViewManager 349
Databinding 350
Bringing it Together 352
Examples 354
Example 1 354
Example 2 357
Summary 362
Chapter 10: Transactions 365
What is a Transaction? 365
ACID Properties 366
Database Transactions 366
Transaction Vocabulary 367
ADO.NET Transaction Support 367
Transaction Class 369
Methods of the Transaction class 369
Writing Transactional Database Applications 370
Implementing Transactions 370
Running the Application 373
Examining the Effect of Isolation Level 373
What are Isolation Levels? 374
Some Related Terms 374
Possible Isolation Levels in ADO.NET 374
Changing Isolation Levels 375
When to Use Transactions 377
Transactions and Performance 378
Default Behavior for Transactions 378
Transactions and User Confirmation 378
Simultaneous ADO.NET and DBMS Transactions 379

Table of Contents
viii
Advanced Techniques 379
Savepoints 379
Nested Transactions 382
Using Transactions with a DataSet and DataAdapter 382
Summary 384
Chapter 11: Mapping 387
Using the SQL AS Keyword 387
The ADO.NET Mapping Mechanism 389
Using Mapping when Retrieving Data 389
The MissingMappingAction and MissingSchemaAction Properties 392
Inserting Records Using Mapped Names 393
Web Services with Mapping 396
Creating the Supplier Database 398
Creating the Supplier Web Service 400
Creating the Pet Lovers Application 401
Summary 406
Chapter 12: Making a Data Services Component 409
Installing ODBC .NET 410
What is a Data Service Component and Why Use it? 411
What is the Data Service Component? 411
What are the Benefits? 412
Creating a Data Service Component 413
The Data Service Component 413
The DataLayer Namespace – Public Enumerators 414
The ConfigSettings Class – Public Properties 415
The ConfigSettings Class – Public Constructors 416
The Commands Class – Public ExecuteQuery Method 418
The Commands Class – Public ExecuteNonQuery Method 422

The Commands Class – Private Connection Method 422
Creating an Assembly Information File 423
Compiling the Data Service Component 424
Deploying a Data Service Component 425
The Global Assembly Cache – (GAC) 425
Making a Reference to Wrox_DL in machine.config 428
Using the Data Service Component 428
Using in a ASP.NET Web Form 429
Executing SQL Text 429
Executing Stored Procedures 435
Using in a Web Service 438
Table of Contents

ix
Performance and Optimization Tips 440
Object Pooling 440
Building a Hit Tracker Component 441
Transactions 448
Uninstalling the Components 452
Summary 453
Chapter 13: ADO.NET and Web Services 455
Setting Up the Code Samples 456
Web Services – The New DCOM 458
Common Standards 458
Supply and Demand – Web Service Providers and Consumers 459
Building a Basic Web Service 460
Building a Basic Consumer 465
Building an HTTP Consumer 466
Capturing the Data in an XmlDocument 469
Build a SOAP Consumer in Visual Studio .NET 471

Discovering Web Services 472
Building the Consumer Code Behind Class 477
What is a Proxy Client? 480
The WSDL.exe Utility 482
Storing a Web Service URL in a Configuration File 484
Exchanging Data in Web Services 485
Working with DataSets 486
Building a Pre-populated DataSet Derived Class 486
Building the Web Service Method 488
Building a Windows Form Consumer with Visual Studio .NET 489
Running the Windows Form Project 491
DataSets as Input Arguments 491
Building a Web Form Consumer 493
Using XML with Web Services 498
Working with Custom Classes as XML 499
Working with XML Attributes 503
Working with XML Elements and Attributes 504
Working with Multiple Custom Classes As XML 505
Web Service Security 506
Using Windows Authentication 507
Adding Credentials to a Consumer 507
Using SOAP-based Authentication 508
Building a Private Web Service 509
Building the Consumer 511
Summary 514
Table of Contents
x
Chapter 14: SQL Server Native XML Support 517
FOR XML 518
FOR XML – Optional Arguments 521

FOR XML RAW 522
Using FOR XML RAW with ADO.NET 523
FOR XML AUTO 525
FOR XML AUTO and ADO.NET 527
FOR XML EXPLICIT 529
FOR XML EXPLICIT – Two-Level Example 531
Entity Encoding 532
Directives 533
FOR XML EXPLICIT – Three-Level Example 536
FOR XML EXPLICIT – ADO.NET 539
FOR XML EXPLICIT – Conclusion 541
OPENXML 541
OPENXML Stored Procedures: Deletion and Updates 544
OPENXML ADO.NET: Insertion, Deletion, and Updates 545
Summary 547
Chapter 15: Performance and Security 551
Optimizing Data Access 551
DataReader or DataSet? 552
Memory Consumption 552
Traversal Direction 552
Multiple Result Sets 553
Round Trips 553
Stored Procedures 554
Compiled Query Caching 555
Configuring DataAdapter Commands 555
High-Volume Data Processing 559
Latency 559
Cached Data 560
ASP.NET Object Caching 564
Birds of a Feather (Functionality Grouping) 567

Marshaling Considerations 568
DataSet Serialization 569
XML over HTTP 571
Connection Pooling 571
SqlConnection 572
OleDbConnection 572
Message Queuing 573
To Queue or Not to Queue 573
Sending Messages 574
Receiving Messages 575
Table of Contents

xi
Security Concerns 576
Code Access Security 576
Administration 577
Code Groups 577
Permission Sets 578
Permissions 578
CAS in Action 579
SSL 583
Encryption 584
Summary 586
Chapter 16: Integration and Migration 589
InterOp 590
COM InterOp and the RCW 590
Accessing ADO from .NET 590
Whether to Access ADO from .NET 590
Accessing ADO from .NET 591
Platform Invocation Services (PInvoke) 594

Migration 595
ADO Data Types 596
Migrating Connections 597
Migrating the Recordset 599
Forward-Only Data Access 600
Publishing RecordSet Changes 603
Migrating Commands and Stored Procedures 609
Changes in XML Persistence 615
Handling Exceptions and Errors 618
Streams 620
Summary 622
Chapter 17: Creating a Custom .NET Data Provider 625
Data Provider Library 626
Application Requirements 626
Retail Store 626
E-Commerce Site 627
Telephone Sales 627
Architecture and Design 627
Distributed Order Entry System 628
The Order Class and Schema 629
A Sample Order 629
Implementing the Data Provider Assembly 630
The OQProvider Namespace 630
The OrderObject 631
The OrderItem 634
Table of Contents
xii
An MSMQ Review 636
Sending Messages 636
Receiving Messages 638

The OQConnection 638
The OQCommand 643
The OQParameterCollection and OQParameter 648
The OQDataReader 652
The OQDataAdapter 657
The OQException 663
Utilizing the Custom Data Provider 663
A Retail Store Interface 664
An E-Commerce Web Site Interface 665
The Telephone Sales Interface 667
Summary 669
Chapter 18: Case Study – Cycle Couriers 671
Requirements 673
Customer 674
Recipient (Addressee) 674
Cyclist 674
Call Center Operator 675
Design 675
User Interface Layer 676
The Customers View 677
The Cyclist View 679
The Call Center Operator View 679
Business Layer 681
Customer 681
Package 681
Cyclist 681
User Authentication 682
Package Status Change 682
Data layer 682
Implementation 683

Database Detail 683
Customers 683
Cyclists Table 684
CyclistStates Table 684
Packages Table 684
Relationships 686
Class Description 686
ServiceCustomer 687
ServicePackage 689
ServiceCyclist 692
Web Interface classes 693
Call Center Operator Application 696
Hardware Configuration 699
Table of Contents

xiii
How to Deploy the System 700
Installing the Web Application and Web Service 700
Installing the Client – Call Center Application. 702
How to Build the System 703
Summary 704
Index 707
Table of Contents
xiv


Introduction
What is ADO.NET?
ADO.NET is a large set of .NET classes that enable us to retrieve and manipulate data, and update data
sources, in very many different ways. As an integral part of the .NET framework, it shares many of its features:

features such as multi-language support, garbage collection, just-in-time compilation, object-oriented design,
and dynamic caching, and is far more than an upgrade of previous versions of ADO.

ADO.NET is set to become a core component of any data-driven .NET application or Web Service, and
understanding its power will be essential to anyone wishing to utilize .NET data support to maximum effect.
What Does This Book Cover?
This book provides a thorough investigation of the ADO.NET classes (those included in the System.Data,
System.Data.Common, System.Data.OleDb, System.Data.SqlClient, and System.Data.Odbc
namespaces). We adopt a practical, solutions-oriented approach, looking at how to effectively utilize the
various components of ADO.NET within data-centric application development.

We begin our journey in Chapter 1 by looking at a brief history of data access in general, then looking more
closely at ADO.NET itself. This includes looking at some of the features and comparing it to ADO 2.6. This
theme continues into Chapter 2, which looks at the .NET data providers, which provide connectivity to a
variety of data stores.
Introduction
2
Chapter 3 moves on to delving into Visual Studio .NET and how this graphical user interface makes using
ADO.NET intuitive and easy to handle. The chapter includes a number of examples to demonstrate the
principles learned.

Now that we are a little more comfortable with ADO.NET, we can begin to delve deeper into the specifics of
the technology. Chapter 4 looks at the DataReader: what it is, why you would use it and also how you
would use it in a number of situations. This in-depth look continues in Chapter 5, where we learn about the
DataSet, while Chapter 6 introduces and explores the DataAdapter.

Chapter 7 takes a closer look at the DataSet, which enables us to work with data while disconnected from the
data source; this includes an introduction to how the XML Schema Definition (XSD) language is useful when
manipulating DataSets. This leads us nicely into Chapter 8, where we explore the use of XML with the
DataSet, covering various issues such as data marshalling and data filtering, amongst others.


Chapter 9 continues the look at the DataSet by examining constraints, relations and views, all of which
influence the way that data is presented and manipulated. The chapter introduces the DataView and includes
some examples.

Chapter 10 moves on to look at the topic of transactions, an important item in the business world where either
all the operations must succeed, or all of them must fail. The chapter examines, amongst other things, isolation
levels and their impact, performance, and advanced techniques.

The concept of mapping is explored in Chapter 11: this is where we can give our own names to unintuitive
column headings in order to understand the material better.

Chapter 12 looks at creating our own Data Services component: the benefits, the creation and deployment,
and using it once it exists. The chapter also looks at tips for better performance of data service components.
This leads well into Chapter 13, where we look at ADO.NET and Web Services, in particular exchanging data,
using XML, and security.

Chapter 14 looks again at the issue of XML, this time showing how SQL Server 2000 has native support for
this cross-platform standard of data retrieval. The chapter is example-based, showing all the native XML
options at every step.

Chapter 15 moves off into the more theoretical realm of performance and security. Both are important
considerations if we will be dealing with thousands of data access demands every minute. The chapter covers
many ways to increase performance and tighten security.

Chapter 16 discusses integration and migration, particularly accessing ADO from .NET and how to handle the
migration from ADO to ADO.NET.

Chapter 17 allows us to create our own custom .NET data provider. It goes through the whole process: why
we need our own provider, the architecture and design, and the actual implementation. The chapter also shows

a number of ways that we can utilize our custom provider. The same method is employed by Chapter 18,
which finishes the book by building a case study that uses ADO.NET in the middle layer of a multi-tier system
that tracks packages for a fictional inner city bicycle courier company.
Introduction
3
Who is This Book For?
This book is aimed at experienced developers, who already have some experience of developing or experimenting
within the .NET framework, with either C# or Visual Basic .NET. We do not cover the basics of C# or Visual
Basic .NET, and assume some prior experience of Microsoft data access technologies.
What You Need to Use This Book
To run the samples in this book you need to have the following:

q Windows 2000 or Windows XP
q The .NET Framework SDK. The code in this book will not work with .NET Beta 1.

The complete source code for the samples is available for download from our web site at

Conventions
We've used a number of different styles of text and layout in this book to help differentiate between the different kinds
of information. Here are examples of the styles we used and an explanation of what they mean.

Code has several fonts. If it's a word that we're talking about in the text – for example, when discussing a
For...Next loop, it's in this font. If it's a block of code that can be typed as a program and run, then it's also in
a gray box:

<?xml version 1.0?>

Sometimes we'll see code in a mixture of styles, like this:

<?xml version 1.0?>

<Invoice>
<part>
<name>Widget</name>
<price>$10.00</price>
</part>
</invoice>

In cases like this, the code with a white background is code we are already familiar with; the line highlighted
in gray is a new addition to the code since we last looked at it.

Advice, hints, and background information comes in this type of font.
Important pieces of information come in boxes like this.
Introduction
4
Bullets appear indented, with each new bullet marked as follows:

q Important Words are in a bold type font
q Words that appear on the screen, or in menus like the File or Window menu, are in a similar font to
the one you would see on a Windows desktop
q Keys that you press on the keyboard, like Ctrl and Enter, are in italics
Customer Support
We always value hearing from our readers, and we want to know what you think about this book: what you
liked, what you didn't like, and what you think we can do better next time. You can send us your comments,
either by returning the reply card in the back of the book, or by e-mail to Please be
sure to mention the book title in your message.
How to Download the Sample Code for the Book
When you visit the Wrox site, simply locate the title through our Search facility or by
using one of the title lists. Click on Download in the Code column, or on Download Code on the book's detail
page.


The files that are available for download from our site have been archived using WinZip. When you have
saved the attachments to a folder on your hard-drive, you need to extract the files using a de-compression
program such as WinZip or PKUnzip. When you extract the files, the code is usually extracted into chapter
folders. When you start the extraction process, ensure your software (WinZip, PKUnzip, etc.) is set to use
folder names.
Errata
We've made every effort to make sure that there are no errors in the text or in the code. However, no one is
perfect and mistakes do occur. If you find an error in one of our books, like a spelling mistake or a faulty piece
of code, we would be very grateful for feedback. By sending in errata you may save another reader hours of
frustration, and of course, you will be helping us provide even higher quality information. Simply e-mail the
information to ; your information will be checked and if correct, posted to the errata page
for that title, or used in subsequent editions of the book.

To find errata on the web site, go to and simply locate the title through our Advanced
Search or title list. Click on the Book Errata link, which is below the cover graphic on the book's detail page.
E-Mail Support
If you wish to directly query a problem in the book with an expert who knows the book in detail then e-mail
, with the title of the book and the last four numbers of the ISBN in the subject field of
the e-mail. A typical e-mail should include the following things:
Introduction
5

q The title of the book, last four digits of the ISBN, and page number of the problem in the
Subject field
q Your name, contact information, and the problem in the body of the message

We won't send you junk mail. We need the details to save your time and ours. When you send an e-mail
message, it will go through the following chain of support:

q Customer Support – Your message is delivered to our customer support staff, who are the first

people to read it. They have files on most frequently asked questions and will answer anything
general about the book or the web site immediately.
q Editorial – Deeper queries are forwarded to the technical editor responsible for that book. They have
experience with the programming language or particular product, and are able to answer detailed
technical questions on the subject.
q The Authors – Finally, in the unlikely event that the editor cannot answer your problem, he or will
forward the request to the author. We do try to protect the author from any distractions to their
writing; however, we are quite happy to forward specific requests to them. All Wrox authors help
with the support on their books. They will e-mail the customer and the editor with their response,
and again all readers should benefit.

The Wrox Support process can only offer support to issues that are directly pertinent to the content of our
published title. Support for questions that fall outside the scope of normal book support is provided via the
community lists of our forum.
p2p.wrox.com
For author and peer discussion join the P2P mailing lists. Our unique system provides programmer to
programmer™ contact on mailing lists, forums, and newsgroups, all in addition to our one-to-one e-mail
support system. If you post a query to P2P, you can be confident that it is being examined by the many Wrox
authors and other industry experts who are present on our mailing lists. At p2p.wrox.com you will find a
number of different lists that will help you, not only while you read this book, but also as you develop your
own applications. Particularly appropriate to this book is the ADO.NET list.

To subscribe to a mailing list just follow these steps:

1. Go to
2. Choose the appropriate category from the left menu bar
3. Click on the mailing list you wish to join
4. Follow the instructions to subscribe and fill in your e-mail address and password
5. Reply to the confirmation e-mail you receive
6. Use the subscription manager to join more lists and set your e-mail preferences

Introduction
6
Why this System Offers the Best Support
You can choose to join the mailing lists or you can receive them as a weekly digest. If you don't have the time, or
facility, to receive the mailing list, then you can search our online archives. Junk and spam mails are deleted, and
your own e-mail address is protected by the unique Lyris system. Queries about joining or leaving lists, and any
other general queries about lists, should be sent to

Introduction
7
Introduction
8


Data Access and .NET
In this chapter, we're just going to take a fairly quick overview of ADO.NET. This will be fast-paced, and we
won't shy away from showing snippets of code, as this really is the best way to get to grips with the concepts.
Hopefully this chapter will give you a solid understanding of the basic workings of ADO.NET, and give you a
taste of some of its best features. By the end of the chapter, we hope that you'll be convinced of the advantages
of ADO.NET, and eager to go further into the book!

ADO.NET is the latest in a long line of data access technologies released by Microsoft. ADO.NET differs somewhat
from the previous technologies, however, in that it comes as part of a whole new platform called the .NET
Framework. This platform is set to revolutionize every area of development, and ADO.NET is just one aspect of that.
We'll therefore start by looking quickly at the main features of .NET.
The .NET Framework
It's no exaggeration to say that Microsoft's release of its new development and run-time environment,
the .NET Framework, will revolutionize all aspects of programming in the Microsoft world. The benefits of
this new platform will be felt in all areas of our code and in all types of application we develop. The .NET
Framework is in itself a huge topic, and we can't cover every aspect in detail here, but since it's important to

understand the basic principles behind .NET before attempting any ADO.NET programming, we'll quickly
review the basics here.

For more information about programming in the .NET environment, check out
Professional .NET Framework, ISBN 1-861005-56-3.

×