The System.Data Namespace

The System.Data Namespace
This book will take advantage of three namespaces that allow you to work
with data within the application in this book: System.Data,
System.Data.OleDb, and System.Data.SqlClient. (Microsoft and other vendors
will add support for additional data namespaces in the future.) The
System.Data namespace contains classes that manage data within memory.
System.Data.OleDb and System.Data.SqlClient provide classes that can
connect to data sources, read and write data, and fill System.Data objects
with data.

The SqlClient and OleDb Namespaces
Microsoft has provided two namespaces that we'll use for managing data
throughout this book. The System.Data.OleDb namespace allows you to work
with data using "unmanaged" OLE DB providers (unmanaged means that the
namespace uses code written outside of the .NET CLR). The
System.Data.SqlClient namespace allows you to work with data in Microsoft
SQL Server 7.0 or higher, using the SQL Server native API (with no OLE DB
provider required). The classes and their members are almost identical in
name and functionality. Table 4.1 provides a list of the most commonly used
classes from the System.Data.OleDb and System.Data.SqlClient namespaces. To
make things simpler, we've removed the namespace-specific prefixes from
each object. Add the appropriate prefix ("OleDb" or "Sql") to each of these
class names.

Table 4.1. ADO.NET Classes Class  Description 
Connection  This class is responsible for making the actual connection to
the database. It has methods for starting, committing, and rolling back
transactions as well. 
Command  This class allows you to submit SQL statements to a data source or
to call stored procedures. It can either perform action queries (INSERT,
UPDATE, and DELETE) or execute SELECT statements to return a DataReader
object. 
DataReader  This class provides forward-only, read-only access to data. If
you're an ADO developer, you're familiar with this type of data access梚t's
similar to the default ADO Recordset (often called a fire hose cursor). 
DataAdapter  This class encapsulates a connection and one or more commands
(SELECT, UPDATE, DELETE, and INSERT). It can retrieve and update data and
uses its SelectCommand property to fill a DataSet or DataTable object with
data. 


The System.Data Classes
The System.Data class provides a number of classes, but you'll only use a
few of them when developing your applications. The classes described here
all work with data in memory rather than interacting with any particular
data source. You can typically use these in-memory data stores to both view
and update data. Table 4.2 provides a list of the most commonly used
System.Data classes.

Table 4.2. System.Data Classes Class  Description 
DataSet  This data cache is much like an in-memory database. It can contain
one or more DataTable objects. You can store the data as well as the schema
information for the tables. You may also set relationships between
DataTable objects within a DataSet object. 
DataTable  A DataTable provides a collection of DataRow objects. Each
DataRow object is, in turn, made up of a collection of DataColumn objects.
A DataTable is a single table or a single view of data. A DataTable can be
populated via a DataAdapter object. 
DataView  A DataView object is used to sort or filter the data within a
DataTable. You can also use a DataView for searching data as well. 


Making database access part of the underlying .NET Framework means that any
language targeting the .NET platform will have access to the same set of
data classes. In addition, because the data-access classes are part of the
.NET Framework, if or when the framework is ported to alternate platforms
such as Linux, the same data classes should be available in the new
platforms as well.

This set of data classes in .NET is known collectively as ADO.NET. ADO.NET
is different from previous Microsoft database access technologies in
several ways. It's more highly focused on disconnected data access, which
makes it easier for Web developers to work with data. ADO.NET separates
objects that talk to data sources from objects that just hold data. The
data classes also "speak" fluent XML. This makes it easier to transmit data
from one application to another, regardless of operating system or
transport mechanism.

A Data-Handling Example
The following example reads data from the Products table in the Northwind
sample database. It uses a number of the ADO.NET classes, including
OleDbDataAdapter and DataSet.

The procedure shown in this section, XMLGet, first creates a connection
string and a SQL string. It passes these two strings to the constructor of
the OleDbDataAdapter object. The code then calls the OleDbDataAdapter
object's Fill method in order to fill the DataSet object with data.

NOTE

You don't need to type System.Data.OleDb.OleDbDataAdapter here because VB
.NET automatically includes an Imports statement that imports the
System.Data namespace.



The Fill method is responsible for creating an implicit OleDbConnection
object using the supplied connection string. Next, the Fill method creates
an OleDbCommand object and uses the SELECT statement to read the data from
the data source. The Fill method reads the data and fills one table within
the DataSet object. The code closes the collection, leaving you with just
the filled DataSet object.

The DataSet object's GetXml method returns its entire set of data as an XML
stream. Your code can handle the XML in any way it requires梩he following
code snippet places the XML into a text box on the sample page:

Private Sub XMLGet()
    Dim strConn As String
    Dim strSQL As String
    Dim da As OleDb.OleDbDataAdapter
    Dim ds As DataSet

    strConn = "Provider=sqloledb;Data
     Source=(local);Initial Catalog=Northwind;User ID=sa"
    strSQL = "SELECT ProductID, ProductName FROM Products"

    da = New OleDb.OleDbDataAdapter(strSQL, strConn)

    ds = New DataSet()
    da.Fill(ds)

    txtXML.Text = ds.GetXml()
End Sub

If you know that you are only going to be using SQL Server, you might
choose to use the SqlClient namespace. The classes in this namespace are
specific for SQL Server and will give you a little better performance when
working with SQL Server. The following code snippet provides the same
functionality, using the SqlClient namespace classes:

Private Sub XMLGetSqlClient()
    Dim strConn As String
    Dim strSQL As String
    Dim da As SqlClient.SqlDataAdapter
    Dim ds As DataSet

    strConn = "Server=(local);Database=Northwind;" _
     "User ID=sa"
    strSQL = "SELECT ProductID, ProductName FROM Products"
    da = New SqlClient.SqlDataAdapter(strSQL, strConn)

    ds = New DataSet()
    da.Fill(ds)

    txtXML.Text = ds.GetXml()
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值