A Brief History of Universal Data Access Managed Providers
Chapter 8. ADO.NET: Developing Database Applications
Many software applications benefit from storing their data in database management systems. A database management system is a software component that performs the task of storing and retrieving large amounts of data. Examples of database management systems are Microsoft SQL Server and Oracle Corporations Oracle. Microsoft SQL Server and Microsoft Access both include a sample database called Northwind. The Northwind database is used in the examples throughout this chapter. All examples in this chapter assume that the following declaration appears in the same file as the code: Imports System.Data Examples that use SQL Server also assume this declaration: Imports System.Data.SqlClient and examples that use Access assume this declaration: Imports System.Data.OleDb8.1 A Brief History of Universal Data Access
Database management systems provide APIs that allow application programmers to create and access databases. The set of APIs that each manufacturers system supplies is unique to that manufacturer. Microsoft has long recognized that it is inefficient and error prone for an applications programmer to attempt to master and use all the APIs for the various available database management systems. Whats more, if a new database management system is released, an existing application cant make use of it without being rewritten to understand the new APIs. What is needed is a common database API. Microsofts previous steps in this direction included Open Database Connectivity ODBC, OLE DB, and ADO not to be confused with ADO.NET. Microsoft has made improvements with each new technology. With .NET, Microsoft has released a new mechanism for accessing data: ADO.NET. The name is a carryover from Microsofts ADO ActiveX Data Objects technology, but it no longer stands for ActiveX Data Objects—its just ADO.NET. To avoid confusion, I will refer to ADO.NET as ADO.NET and to ADO as classic ADO. If youre familiar with classic ADO, be careful—ADO.NET is not a descendant, its a new technology. In order to support the Internet evolution, ADO.NET is highly focused on disconnected data and on the ability for anything to be a source of data. While you will find many concepts in ADO.NET to be similar to concepts in classic ADO, it is not the same.8.2 Managed Providers
When speaking of data access, its useful to distinguish between providers of data and consumers of data. A data provider encapsulates data and provides access to it in a generic way. The data itself can 344 be in any form or location. For example, the data may be in a typical database management system such as SQL Server, or it may be distributed around the world and accessed via web services. The data provider shields the data consumer from having to know how to reach the data. In ADO.NET, data providers are referred to as managed providers. A data consumer is an application that uses the services of a data provider for the purposes of storing, retrieving, and manipulating data. A customer-service application that manipulates a customer database is a typical example of a data consumer. To consume data, the application must know how to access one or more data providers. ADO.NET is comprised of many classes, but five take center stage: Connection Represents a connection to a data source. Command Represents a query or a command that is to be executed by a data source. DataSet Represents data. The DataSet can be filled either from a data source using a DataAdapter object or dynamically. DataAdapter Used for filling a DataSet from a data source. DataReader Used for fast, efficient, forward-only reading of a data source. With the exception of DataSet, these five names are not the actual classes used for accessing data sources. Each managed provider exposes classes specific to that provider. For example, the SQL Server managed provider exposes the SqlConnection, SqlCommand, SqlDataAdapter, and SqlDataReader classes. The DataSet class is used with all managed providers. Any data-source vendor can write a managed provider to make that data source available to ADO.NET data consumers. Microsoft has supplied two managed providers in the .NET Framework: SQL Server and OLE DB. The examples in this chapter are coded against the SQL Server managed provider, for two reasons. The first is that I believe that most programmers writing data access code in Visual Basic .NET will be doing so against a SQL Server database. Second, the information about the SQL Server managed provider is easily transferable to any other managed provider.8.3 Connecting to a SQL Server Database
Parts
» VB.NET - (O'Reilly) Programming Visual Basic NET
» What Is the Microsoft .NET Framework?
» hello, world An Example Visual Basic .NET Program
» Hello, Windows An Example Visual Basic .NET Program
» Hello, Browser An Example Visual Basic .NET Program
» Source Files Identifiers The Visual Basic .NET Language
» Numeric Literals String Literals Character Literals
» Date Literals Boolean Literals Nothing Summary of Literal Formats
» Custom Types Collections Types
» The Namespace Statement The Imports Statement
» Symbolic Constants Scope The Visual Basic .NET Language
» Access Modifiers Assignment The Visual Basic .NET Language
» Unary Operators Arithmetic Operators
» Relational Operators Operators and Expressions
» String-Concatenation Operators Bitwise Operators
» Logical Operators Operator Precedence
» Call Exit Branching Statements
» Goto If RaiseEvent Branching Statements
» Return Select Case Branching Statements
» For Each Iteration Statements
» Object Instantiation and New Constructors
» Handling Events Inheritance Classes
» Passing arrays as parameters
» Variable-length parameter lists Main method
» Implementing interface methods Overriding inherited methods
» Overloading Overloading inherited methods
» The MyBase Keyword Nested Classes Destructors
» Interfaces The Visual Basic .NET Language
» Enumerations The Visual Basic .NET Language
» Exceptions The Visual Basic .NET Language
» Delegates The Visual Basic .NET Language
» Using Events and Delegates Together
» Creating Custom Attributes Attributes
» Standard Modules Conditional Compilation
» Summary The Visual Basic .NET Language
» Common Language Infrastructure CLI and Common Language Runtime CLR
» Global Assembly Cache GAC Comparison of Assemblies, Modules, and Namespaces
» Application Domains Common Language Specification CLS
» Intermediate Language IL and Just-In-Time JIT Compilation Metadata
» Finalize Memory Management and Garbage Collection
» Dispose Memory Management and Garbage Collection
» A Brief Tour of the .NET Framework Namespaces
» Configuration File Format Configuration
» Configuration Section Groups The appSettings Section
» Adding event handlers Creating a Form in Code
» Handling Form Events Windows Forms I: Developing Desktop Applications
» Relationships Between Forms Windows Forms I: Developing Desktop Applications
» Merging Menus MDI Applications
» Detecting MDI Child Window Activation
» Component Attributes Windows Forms I: Developing Desktop Applications
» The Graphics Class 2-D Graphics Programming with GDI+
» The Pen Class 2-D Graphics Programming with GDI+
» The Brush Class 2-D Graphics Programming with GDI+
» System colors The Color Structure
» Alpha Blending 2-D Graphics Programming with GDI+
» Antialiasing 2-D Graphics Programming with GDI+
» The PrintPageEventArgs Class Printing
» The OnBeginPrint and OnEndPrint Methods Choosing a Printer
» The PageSettings Class Printing
» The PrinterSettings Class Printing
» Page Setup Dialog Box Print Preview
» Summary Windows Forms I: Developing Desktop Applications
» The Button Class The CheckBox Class The ComboBox Class
» The DateTimePicker Class The GroupBox Class The ImageList Class
» The Label Class The LinkLabel Class
» The ListBox Class Common Controls and Components
» The ListBox.ObjectCollection Class
» The ListView Class Common Controls and Components
» The MonthCalendar Class Common Controls and Components
» The Panel Class The PictureBox Class
» The RadioButton Class Common Controls and Components
» The TextBox Class The Timer Class
» Other Controls and Components
» Control Events Windows Forms II: Controls, Common Dialog Boxes, and Menus
» The Anchor Property Form and Control Layout
» Controlling dock order The Dock Property
» The Splitter control The Dock Property
» ColorDialog FontDialog OpenFileDialog Common Dialog Boxes
» PageSetupDialog PrintDialog PrintPreviewDialog SaveFileDialog
» Adding Menus in the Visual Studio .NET Windows Forms Designer
» Programmatically Creating Menus Menus
» Building Controls from Other Controls
» Building Controls That Draw Themselves Building Nonrectangular Controls
» Summary Windows Forms II: Controls, Common Dialog Boxes, and Menus
» Setting control properties using attributes Adding event handlers
» AutoEventWireup Handling Page Events
» The Button control Web Controls
» The CheckBox control The DropDownList control
» The Image control The Label control
» The ListBox control Web Controls
» The RadioButton control Web Controls
» The Table control Web Controls
» The TextBox control Web Controls
» Other web controls Web Controls
» HTML Controls Handling Control Events
» Programmatically Instantiating Controls More About Server Controls
» More About Validation-Control Tag Attributes
» Using Validation-Control Properties Providing a Summary View of Validation Failures
» Performing Custom Validation Adding Validation
» Using Directives to Modify Web Page Compilation
» The Server Object ASP.NET Objects: Interacting with the Framework
» The Application Object The Session Object The Cache Object The Request Object
» The Response Object ASP.NET Objects: Interacting with the Framework
» Discovering Browser Capabilities ASP.NET and Web Forms: Developing Browser-Based Applications
» The Session Object Maintaining State
» The Application Object Maintaining State
» Session and Application Startup and Shutdown global.asax Compiles to a Class
» Adding Global Objects Application-Level Code and global.asax
» ASP.NET authorization Authorization
» Windows NTFS authorization Code-access authorization
» IUSR_ComputerName Impersonation Accessing Network Resources
» User Controls Designing Custom Controls
» Creating a custom server control using Visual Studio .NET
» Creating a custom server control in code Using a custom server control in Visual Studio .NET
» Summary ASP.NET and Web Forms: Developing Browser-Based Applications
» The WebService Attribute The WebMethod Attribute
» Testing a Web Service with a Browser
» Consuming a Web Service in Visual Studio .NET
» Consuming a Web Service in Notepad
» Synchronous Versus Asynchronous Calls
» Web-Service Descriptions Web-Service Discovery
» Limitations of Web Services Summary
» A Brief History of Universal Data Access Managed Providers
» Connecting to a SQL Server Database
» Connecting to an OLE DB Data Source
» The DataSet Class Finding Tables
» Finding Column Values Finding Column Definitions Changing, Adding, and Deleting Rows
» Writing Updates Back to the Data Source
» Relations Between DataTables in a DataSet
» The DataSets XML Capabilities
» Binding a DataSet to a Windows Forms DataGrid
» Binding a DataSet to a Web Forms DataGrid
» Typed DataSets ADO.NET: Developing Database Applications
» Reading Data Using a DataReader
Show more