说明
ADO.Net 是一个COM组件库,定义了一套用于访问数据库的标准,这个标准以接口的形式提供。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。
ADO.NET除了提供链接式数据访问技术之外,也提供了另外一种开放式方法,那就是在内存中模拟一个数据(DataSet),一个内存中的数据库(DataSet)可以包含多个在内存中的表(DataTable)和内存中的视图(DataView),并且也允许在表存在一些关系(DataRelation)。同时在一个内存中的表(DataTable)或者内存中的视图(DataView)中也允许存在行(DataRow)和列(DataColumn) 。
一、Connection对象、Command对象和DataReader对象
connection 对象
数据库连接对象!
command对象
数据库命令对象,执行添加、删除、修改、查询数据的操作命令。也可用来执行存储过程。
Command 主要有三个方法:
-
ExecuteNonQuery () :执行一个 SQL 语句,返回受影响的行数,这个方法主要用
于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。 -
ExecuteReader ():执行一个查询的 SQL 语句,返回一个 DataReader 对象。
-
ExecuteScalar ():从数据库检索单个值。这个方法主要用于统计操作。
DataReader对象
读取行的只读流的方式,绑定数据时比使用数据集方式性能要高。DataReader 对象不能通过直接实例化,必须借助与相关的 Command 对象来创建实例,例如用 SqlCommand 的实例的 ExecuteReader()方法可以创建SqlDataReader 实例。
DataReader对象读取数据是需要与数据库保持连接,所以在使用完之后应该立即调用他的Close()方法关闭,并关闭与之相关的Connection对象。
二、DataAdapter对象、DataSet对象与DataTable对象
DataAdapter 对象
作为一个数据集与数据源数据交换的媒介,利用数据库链接对象。
他的selectCommand属性是一个command对象,他从数据源中检索数据,(Connection)连接的数据源,使用数据库命令对象(Command)规定的操作从数据源中检索出数据送往数据集对象(DataSet),或者将数据集中经过编辑后的数据送回数据源。
他的fill方法用于使用DataAdapter的selectcommand的结果来填充DataSet。
dataAdapter1.Fill(dataSet11, "Products");//填充dataSet11数据集中的"Products"表
注意:一个数据集中可以放置多张数据表。但是每个数据适配器只能够对应于一张数据
表
DataSet对象
DataSet 对象也称为数据集对象,DataSet 对象用于表示那些储存在内存中的数据,它相当于一个内存中的数据库。它可以包括多个 DataTable 对象及 DataView 对象。 DataSet主要用于管理存储在内存中的数据以及对数据的断开操作。
//供前台页面调用的方法,这个方法必须是protected或者public
protected void ShowData()
{
//实例化Connection对象
SqlConnection connection = new SqlConnection("Data Source=(local);Initial
Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
//实例化Command对象
SqlCommand command = new SqlCommand("select * from UserInfo where sex=0",
connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
/*
下面的被注释掉的代码与上面的代码是等效的
SqlDataAdapter adapter = new SqlDataAdapter("select * from UserInfo where sex=0",
connection);
*/
DataTable data = new DataTable();
adapter.Fill(data);
/* 下面的被注释掉语句与上面填充DataTable的效果是一样的,我更倾向于没有注释掉的部分
DataSet ds = new DataSet();//实例化DataSet
adapter.Fill(ds, "UserInfo");//填充ds中的"UserInfo"表
DataTable data = ds.Tables["UserInfo"];
*/
for (int i = 0; i < data.Rows.Count; i++)
{
Response.Write("<tr><td>" + data.Rows[i]["UserId"].ToString() + "</td>");
Response.Write("<td>" + data.Rows[i]["UserName"].ToString() + "</td>");
Response.Write("<td>" + data.Rows[i]["RealName"].ToString() + "</td>");
Response.Write("<td>" + data.Rows[i]["Age"].ToString() + "</td>");
//下面是按照列顺序直接读取值,并且根据值来判断最终显示结果
Response.Write("<td>" + (bool.Parse(data.Rows[i]["Sex"].ToString()) == true ? "男" :
"女") + "</td>");
//根据列顺序读,列的值需要做相应转换
Response.Write("<td>" + data.Rows[i]["Mobile"].ToString() + "</td>");
//根据列名来读取,列的值需要做相应转换
Response.Write("<td>" + data.Rows[i]["Phone"].ToString() + "</td>");
Response.Write("<td>" + data.Rows[i]["Email"].ToString() + "</td></tr>\n");
}
DataTable对象
核心对象。它主要包括 DataRow 和 DataColumn,分别代表行和列。