ADO.NET数据访问方式:DataSet

  • ADO.NET数据访问方式:DataSet
  1. SqlDataReader数据连接方式: 数据库游标/查询结果放在数据库服务器而非本机上 一旦连接断开将无法再读取/这样做的好处是无论读取多少条数据 对程序所占用内存几乎没有影响
  2. ADO.Net中提供了程序集的机制将查询结果填充到本地内存中 这样断开连接 服务器都不影响数据的读取

DataSet dataSet = new DataSet();

SqlDataAdapter adapter = new SqlDataAdapter(dataSet);

adapter.Fill(dataSet);

retuen dataSet.DataTables[0];

  • DataSet
  1. DataSet: ADO.NET主要组件/是从数据源中检索到的数据在内存中的缓存/由一组DataTable对象组成
  2. .Tables属性: 获取包含在DataSet中的表的集合
  • DataTable
  1. DataTable: ADO.NET核心对象/表示内存中数据的一个表/使用DataTable的对象包括DataSet和DataView
  2. .Rows属性: 获取属于该表的行的集合/.NewRow()新建数据行
  • DataRow
  1. DataRow: DataTable主要组件/表示DataTable中一行数据
  • SqlDataAdapter
  1. SqlDataAdapter: DataSet和SQL Server之间的桥接器/表示用于填充DataSet和更新SQL Server数据库的一组数据命令和一个数据库连接(无法继承)
  2. .Fill()方法:填充DataSet或DataTable/.Update()方法:为DataSet中每个已插入&已更新&已删除的行调用相应的 INSERT&UPDATE&DELETE语句
  • DataSet(弱类型)的更新
  1. 更新行row[“name”]=jim / 删除行DataTable.Rows.RemoveAt() / 新增行DataTable.NewRow() / 这一切都是修改内存中的DataSet而非修改数据库
  2. DataRow.RowState属性: 行的状态(删除 修改 新增…)
  3. DataSet.GetChanges()方法: 取得变化的结果集
  4. SqlDataAdapter.Update()方法将修改提交到数据库(可提交DataSet DataTable DataRow) / 提交需要SqlDataAdapter的InsertCommand DeleteCommand UpdateCommand…自建非常麻烦 可用SqlCommandBuilder生成(new SqlCommandBuilder(adapter)/要求表必须有主键)
  • SqlCommandBuilder
  1. SqlCommandBuilder: 自动生成单表命令 / 用于将对DataSet所做的更改与关联的SQL Server数据库的更改相协调(无法继承)
  2. .GetUpdateCommand()方法 .GetDeleteCommand()方法…: 获取自动生成的 对数据库执行*操作所需的SqlCommand对象
  • DataSet(弱类型)的缺点
  1. 只能通过列名引用(dataSet.Tables[0].Rows[0][“username”]) 写错列名时无法提示错误
  2. 取得的字段值为object类型(int i3 = Convert.ToInt32(row[“name”])) 转换麻烦且易错
  3. 将DataSet传递给其他使用者时 别人很难判断出哪些为可使用列
  4. 无法使用Winforms ASP.Net的快速开发功能
  5. 强类型假设
public T_UsersRow
{
  public int Id
  {
    get
    {
      return ConvertToInt32(this[“id”]);
    }
  }
}

posted on 2011-09-18 19:19  les_vies  阅读(313)  评论(0编辑  收藏  举报

导航