A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁雅墨 中级黑马   /  2012-9-5 00:51  /  2151 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

3.从DataReader读取数据
  为每个记录调用Read方法:可以调用Read方法来访问DataRead对象中的一个记录,因为DataReader对象中的默认位置是在第一个记录的前面,所以必须在访问任何数据之前调用Read方法。当不再有可用记录时,Read方法就返回一个空值。
调用Read方法示例

while (dr.Read())

{
    lbName.Text += dr["au_name"];
}
  访问字段:可以通过顺序位置,名字或者调用适当的Get方法来访问一个字段,Get方法包括GetDateTime,GetDouble,GetInt32或GetString等。
调用Get方法来访问数据
dr.Read();

lbName.Text =dr.GetString(1) + "," +dr.GetString(2);
通过名字引用当前记录的数据字段
dr["au_fname"];

在ADO.NET中DataSet的作用是为数据源提供一个断开式的存储,而不必关心数据源,操作只用在DataSet中进行就行了。
  DataSet中的几个重要对象:
TablesCollection对象:DataSet里的表用DataTable来表示,一个DataSet里面可以包含多个DataTable,这些DataTable就构成了TablesCollection对象。每个DataTable中都包含一个ColumnsColleciton和一个RowsCollection对象。
RelationsCollection对象:各个DataTable之间的关系通过DataRelation来表达,这些DataRelation构成的集合就是RelationsCollection对象。
ExtendedProperties对象:这个对象用来定义特定的信息,比如密码、更新时间等。
  1.DataTable对象
创建一个DataTable:
DataTable MyTable;
MyTable = new DataTable ("Test");
MyTable.CaseSensitive = False;//是否区分大小写
MyTable.MinimumCapacity = 100;//数据库的最小记录空间
创建表列
DataTable MyTable;
DataColumn MyColumn;
MyTable = new DataTable ("表名");
MyColumn = MyTable.Columns.Add("列名",typeof(string));
MyColumn = MyTable.Columns.Add("列名",typeof(int));
创建表达式列
示例
//方法一
DataColumn tax = new DataColumn();
tax.DataType = typeof(Currency);
tax.Expression = "total*rate*0.20";
//方法二
MyTable.Columns.Add("tax", typeof(Currency), "total*rate*0.20");
  2.DataView对象
  DataView就时数据视图,为数据库结构提供了外模式的实现。同时DataView也可以为窗体控件和Web控件提供数据绑定功能,在每一个DataTable中内建了一个DataView为:DataTable.DefaultView()
  创建DataView:
DataView sortedView=new DataView(dataTable);
   对DataView进行排序:
dataTable.DefaultView.sort="lastName";
dataTable.DefaultView.sort="lastName,FirstName DESC";
  对DataView进行筛选和排序:
通过RowFilter属性设置实现筛选
DataView dv = new DataView(ds.Tables["Authors"]);
dv.RowFilter = "state = "CA"";
dv.Sort = "au_lname";
  3.DataColumn对象
示例
DataColumn colCustomerID = dtCustomers.Columns.Add("CustomerId",typeof(Int32));
colCustomerID.AllowDBNull = false;
colCustomerID.Unique = true;
  4.DataRow对象
  调用NewRow方法来创建一个新的DataRow对象
创建DataRow对象
DataRow drNewEmployee = dtEmployees.NewRow();
//使用索引或列名操作新行
drNewEmployee(0) = 11;
drNewEmployee(1) = "Smith";
//调用Add方法将行添加到DataRowCollection中
dtEmployees.Rows.Add(drNewEmployee);
  对行进行批处理更改:
  BeginEdit()开始更改,EndEdit()结束更改,同时将更改结果写入DataSet,CancelEdit(),取消更改
  例如:
row.BeginEdit();
对row进行更改
row.EndEdit();
  从DataTable中删除DataRow对象:
  一:DataRowCollection对象的Remove方法
示例
DataRow drEmployee = dtEmployees.Rows(3);
dtEmployees.Rows.Remove(drEmployee);
  二:DataRow对象的Delete方法
示例
drEmployee.Delete;
  比较:Remove方法时从DataRowCollection中删除DataRow,而Dalete方法只是对删除的行做标记。
  DataRow类包括RowState属性。RowState属性值表示从第一次创建DataTable(或从数据库加载DataTable)开始,行是否发生更改,如何更改以及通过何种方式更改。属性的可选值:Modified | Detached | Added。
  5.创建表关系

示例
//创建DataRelation
DataRelation dr;
DataColumn parentCol;
DataColumn childCol;
parentCol = ds.Tables["Customers"].Columns["CustomerID"];
childCol = ds.Tables["Orders"].Columns.["CustomerID"];
dr = new DataRelation("CustOrders", parentCol, childCol);
ds.Relations.Add(dr);
currentParentRow = ds.Tables["Customers"].Rows[DataGridName.SelectedIndex];

foreach(DataRow r in currentParentRow.GetChildRow("CustOrders"))

{

  Lable1.Text += r["OrderID"] + ",";

}

6.绑定数据
示例一
GridView.DataSource = ds;
GridView.DataMember = "Authors";
GridView.DataBind();示例二
GridView.DataSource = ds.Tables["Authors"];
GridView.DataBind();示例三
DataView dv = new DataView(ds.Tables["Authors"]);
dv.RowFilter = "state = "CA"";
GridView.DataSource = dv;

GridView.DataBind();
DataAdapter(即数据适配器)对象是一种用来充当DataSet对象与实际数据源之间桥梁的对象。DataSet对象是一个非连接的对象,它与数据源无关。而DataAdapter则正好负责填充它并把它的数据提交给一个特定的数据源,它与DataSet配合使用,可以执行新增、查询、修改和删除等多种操作。

DataAdapter对象是一个双向通道,用来把数据从数据源中读到一个内存表中,以及把内存中的数据写回到一个数据源中。两种情况下使用的数据源可能相同,也可能不相同。而这两种操作分别称作填充(fill)和更新(update)。
    DataAdapter对象的常用属性如表1所示。

表1  SqlDataAdapter对象的属性


属性

描述


DeleteCommand

获取或设置一个语句或存储过程,以从数据集删除记录

InsertCommand

获取或设置一个语句或存储过程,以在数据源中插入新记录

SelectCommand
获取或设置一个语句或存储过程,用于在数据源中选择记录
UpdateBatchSize
获取或设置每次到服务器的往返过程中处理的行数
UpdateCommand

获取或设置一个语句或存储过程,用于更新数据源中的记录

   DataAdapter对象的常用方法如表2所示

                          表2   SqlDataAdapter对象的方法
方法

描述

Dispose

删除该对象

Fill
用从源数据读取的数据行填充至DataSet对象中

FillSchema
将一个DataTable加入到指定的DataSet中,并配置表的模式
GetFillParameters

返回一个用于SELECT命令的DataParameter对象组成的数组

Update
在DataSet对象中的数据有所改动后更新数据源。
   关于DataAdapter对象中常用的Fill和Update方法,下面以SqlDataAdapter(DataSet 和 SQL Server 之间的桥接器)为例进行说明。
   当SqlDataAdapter对象通过Fill 方法填充DataSet对象时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。但是,除非将MissingSchemaAction属性设置为AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用FillSchema方法,让SqlDataAdapter对象创建DataSet对象的架构,并在用数据填充它之前就将主键信息包括进去

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

3 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
不错   很全  收藏咯
回复 使用道具 举报
支持!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马