Build Your Own ASP.NET 3.5 Website Using C# & VB (89 page)

Read Build Your Own ASP.NET 3.5 Website Using C# & VB Online

Authors: Cristian Darie,Zak Ruvalcaba,Wyatt Barnett

Tags: #C♯ (Computer program language), #Active server pages, #Programming Languages, #C#, #Web Page Design, #Computers, #Web site development, #internet programming, #General, #C? (Computer program language), #Internet, #Visual BASIC, #Microsoft Visual BASIC, #Application Development, #Microsoft .NET Framework

BOOK: Build Your Own ASP.NET 3.5 Website Using C# & VB
10.76Mb size Format: txt, pdf, ePub

More on SqlDataSource

The SqlDataSource object can make programming easier when it’s used correctly

and responsibly. However, the simplicity of the SqlDataSource control comes at

the cost of flexibility and maintainability, and introduces the potential for performance problems. The main advantage of your new
AddressBook.aspx
file is that it’s incredibly easy

and quick to implement, especially if you’re using Visual Web Developer.

However, embedding SQL queries right into your
.aspx
files does have a major disadvantage if you intend to grow your web site: in more complex applications containing many forms that perform data-related tasks, an approach that sees you storing all of your SQL queries inside different SqlDataSource controls can degenerate very quickly into a system that’s very difficult to maintain. When you’re writing real-world applications, you’ll want to have all the data access logic centralized in specialized classes. This way, a change to the database design would mean that you’d need to change only the data access code; if your application was written

using SqlDataSource controls, you’d need to check each web form and update it

manually.

Another disadvantage of using the SqlDataSource is that its sorting and paging

features usually aren’t as fast and efficient as they could be if you used a custom

SQL query that returned the data already paged and/or sorted from the database.

When we use the GridView’s paging feature, for example, the SqlDataSource control

doesn’t limit the number of records we read from the database. Even if only a small

subset of data needs to be shown, unless customizations are implemented, the entire

table will be read from the database, and a subset of the data displayed. Even if only

three records need to be displayed,
all
of the records in the table will be returned. An interesting property of SqlDataSource that’s worth noting is DataSourceMode,

whose possible values are DataSet or SqlDataReader. The DataSet mode is the

default mode, and implies that the SqlDataSource will use a DataSet object to retrieve its data. We’ll analyze the DataSet class next. The other mode is Licensed to [email protected]

Advanced Data Access

515

SqlDataReader, which makes the SqlDataSource use your old friend, the

SqlDataReader, behind the scenes.

So, what is this DataSet class? Since version 1.0, the .NET Framework has come

with a number of objects—DataSet, DataTable, DataView, SqlDataAdapter, and

others—that provide
disconnected
data access. So, instead of having the database

return the exact data you need for a certain task in the exact order in which you

need it, you can use these objects to delegate some of the responsibility of filtering

and ordering the data to your C# or VB code.

Both the DataSet and SqlDataReader settings of DataSourceMode have advantages

and disadvantages, and the optimum approach for any task will depend on the task

itself. There are circumstances in which it makes sense to store the data locally,

and you need to be aware of all the possibilities in order to be able to make an informed decision about which mode to use.
Working with Data Sets and Data Tables

We’ve been working with databases for a while now. Initially, you learned about

the SqlDataReader, and used it to populate your controls. Then, in the first half of

this chapter, we gained first-hand experience with the data source controls, which

can automate many features for you. Let’s learn about one more technique you can

use to get data to your visitors.

I know that all these options can be confusing at first, but hang in there. You need

to play around with all of them before you can become an experienced ASP.NET

developer!

The DataSet object is at the center of Microsoft’s model for presenting
disconnected

data
. Disconnected data—data that resides in memory and is completely independent

of the data source—gives us a raft of new opportunities of developing desktop and

web apps.

In
Chapter 9, you learned about the role that data readers
play in relation to applications and database data. Whenever we need to access data from a database, we create a connection object and a command object. These two objects are used together

to create a data reader object, which we can use within our application by binding

it to a data control for presentation purposes. Figure 12.20 illustrates this process.

Licensed to [email protected]

516

Build Your Own ASP.NET 3.5 Web Site Using C# & VB

So, what’s the problem? Well, while they’re the fastest way to retrieve data from a

database, data readers can’t be used to carry out any significant work—you can’t

use them to sort, filter
, or page through the data. As the arrows in Figure 12.20 show
, data readers present a forward-only stream of data to the application: you can’t go

back to a previous record, or reuse that data reader somewhere else. Moreover, once

a data reader has been created, it remains tied to the database. This means that you

can’t make multiple requests to a database using the same data reader.

Data sets, on the other hand, are much more flexible. Imagine a virtual database

that you’re free to use in code whenever and however you wish. That’s a data set.

As we’ll see in the next section, data sets have all the bells and whistles that databases offer, including tables, columns, rows, relationships, and even queries! A data set is a memory-resident copy of database data, so, once a data set has been created,

it can be stored in memory and its ties to the database can be broken. Then, when

you need to work with the data, you don’t need to re-query the database—you simply

retrieve the data from the data set again and again. Figure 12.21 illustrates this point.

Figure 12.22. Multiple pages making multiple requests from the same data set

An even greater advantage of data sets is that they can be shared among multiple

requests, as illustrated in Figure 12.22.

What this means is that you simply need to create the data set once per request.

Once the data set has been created, it can be used by many different pages, all of

which may make multiple—and even different—requests to that data set.

However, data sets require more memory and resources than do data readers. A data

reader simply keeps track of its position within the results of a query, whereas a

data set can contain a local copy of an entire database. The larger the amount of

data kept in the data set, the more memory the data set uses.

Licensed to [email protected]

Advanced Data Access

517

Figure 12.20. Retrieving data using a data reader

Figure 12.21. Breaking the data set’s ties to the data source once it has been created

When you’re deciding whether to use data readers or data sets, you need to consider

the purpose for which you need the data. This decision is important, because it affects:

■ resources consumed on the database server

■ resources consumed on the application server

■ the overall application architecture

Licensed to [email protected]

518

Build Your Own ASP.NET 3.5 Web Site Using C# & VB

If you’re only reading the data, using a data reader can make sense. If you also need

to update, insert, or delete data, or you need to process the data within your code,

data sets might be of more help.

This section will teach you everything you need to know to begin working with

data sets.

What Is a Data Set Made From?

A data set comprises many parts, all of which are required for its usage. We’ll meet

and discuss the following classes in this section:

■ DataSet

■ SqlDataAdapter

■ DataTable

■ DataColumn

■ DataRow

■ DataRelation

■ DataView

We need to use most of these classes in order to work with data sets. For instance,

the SqlDataAdapter class acts as the communication point between the DataSet

and the database. The data adapter knows how to fill a DataSet with data from the

data source; it also knows how to submit to the data source any changes you’ve

made to a DataSet.

Data Adapters

Of all these objects, only SqlDataAdapter depends on a particular data provider,

and as such, it’s interchangeable with other classes that work with data providers,

including OracleDataAdapter, OleDbDataAdapter, and so on. As this class

is the bridge between the database and your local data storage objects (the other

classes mentioned), it makes sense for the class to be database-specific. The

DataSet, DataTable, and other classes store the data locally and don’t need to

Other books

This Is How by Burroughs, Augusten
The Perfect Blend by Allie Pleiter
Gemini by Ward, Penelope
Man of the Trees by Hilary Preston
A Fair Maiden by Joyce Carol Oates
Into the Web by Cook, Thomas H.
Untitled by Unknown Author