当前位置: 首页 > 图文教程 > 网络编程 > ASP > ADO.NET:ADODataReader类

ASP
用PreRender解决DataGrid分页最后一页行数不满的排版问题
基于ASP的站内多值搜索
XLS与MDB文件格式互换全攻略
一个用ASP生成html的新方法
将指定的asp文件内容生成HTML文件
使用Session记录页面地址和实现页面返回功能
IIS6架设网站常见问题及症状举例答疑
ASP调用WEBSERVICE文档
用Asp获取Dll加密新闻内容
Access2000数据库80万记录通用快速分页类
如何防止ASP木马在服务器上运行
如何使用javascript来写ASP程序
用存储过程实现ASP对数据库访问
学会在ASP中使用存储过程
ASP中和星期有关的自定义函数
水晶报表打印单据时增加空行或空白行的示例脚本
ASP+Access莫名奇妙的sql语句错误解决
ASP获取客户端MAC地址
在ASP中执行Ping命令,并且返回结果
如何使用ASP建立虚拟的FTP服务器

ASP 中的 ADO.NET:ADODataReader类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 46 ::
收藏到网摘: n/a

  原码下载地址:
http://www.codeproject.com/dotnet/ADONET_datareader/ADONET_datareader.zip

Introduction
ADO.NET is the .NET enhanced version of ADO that we all know and love. ADO.NET aims to address some of the deficiencies of traditional ADO such as lack of type safety, lack of an object oriented model, and inefficiencies in returning rows of data.

This first article will demonstrate the most common task when accessing a database: querying for data, and traversing that data from start to finish in order to display the contents (or subset thereof) of a table.

The ADODataReader class
ADO.NET replaces the concept of data rows with the DataSet object. This essentially provides us with full access to a given database, including all rows, tables and relationships in an object oriented and type-safe manner. It is, however, total overkill for the simple query and traversals that are most often performed on databases.

For this simple case .NET provides us with the ADODataReader class that is essentially a type safe read only, forward only rowset. All we need to do is open a connection to a database, send an SQL command, then traverse through the resultant ADODataReader using the Read command and process the results.

The easiest way to illustrate this is to show you some C# code. This code opens an Access database, reads all the information from a table, then populates a List View control with the data inside.

A few notes on the code:

StatusText is a RichTextBox control declared as System.WinForms.RichTextBox StatusText;
StatusText = new System.WinForms.RichTextBox ();
listView is a list view control declared as System.WinForms.ListView listView;
listView = new System.WinForms.ListView ();
The list view has been placed in report mode with grid lines using

listView.View = System.WinForms.View.Report;
listView.GridLines = true;


The Code
ADOConnection adoConnection = new ADOConnection();

// TODO: Change the location of this file
// The '@' means that the string will be treated as-is, and the
// '\'s will not be interpreted as the escape character.
// This saves typing "D:\\ADONETdemo..."
String strDatabaseFile = @"D:\ADONETdemo\Authors.mdb";

try
{
// Open a connection to the database
adoConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + strDatabaseFile + ";" +
"Persist Security Info=False;";
adoConnection.Open();

// Create an SQL command, set its connection and its command text
ADOCommand command = new ADOCommand();
command.ActiveConnection = adoConnection;
command.CommandText = "SELECT * FROM Author";

// Execute the command, and return the rows in the data reader object
ADODataReader dataReader;
command.Execute(out dataReader);

// Get the number of fields (columns) in the table
int nFields = dataReader.FieldCount;

// Setup the columns in the listview using the fields in the table
listView.Clear();
for (int i = 0; i<nFields; i++)
{
listView.InsertColumn(i, dataReader.GetName(i), 100, HorizontalAlignment.Left);
}

// Fill the rows in the listview using the data in the rows
int nRow = 0;
while (dataReader.Read())
{
// Create an array of subitems for quick insertion
// The subitems will be all fields in the row except for
// the first field
String [] subitems = new String[nFields-1];
for (int i = 1; i<nFields; i++)
{
subitems[i-1] = dataReader.GetValue(i).ToString();
}

// Insert a new item into the listview, and add the subitems
// at the same time. The item will be the first field in the
// row
listView.InsertItem(nRow, dataReader.GetValue(0).ToString(),
-1, subitems);
// next row.
nRow++;
}
dataReader.Close();

// Set the status text
StatusText.Text = nFields.ToString() + " c