zoukankan      html  css  js  c++  java
  • C#与数据库访问技术总结(十四)之DataAdapter对象

    DataAdapter对象

    DataAdapter对象主要用来承接Connection和DataSet对象。

    DataSet对象只关心访问操作数据,而不关心自身包含的数据信息来自哪个Connection连接到的数据源,

    而Connection对象只负责数据库连接而不关心结果集的表示。

    所以,在ASP.NET的架构中使用DataAdapter对象来连接Connection和DataSet对象。

    另外,DataAdapter对象能根据数据库里的表的字段结构,动态地塑造DataSet对象的数据结构。

    DataAdapter对象的常用属性

    DataAdapter对象的工作步骤一般有两种,

    一种是通过Command对象执行SQL语句,将获得的结果集填充到DataSet对象中;

    另一种是将DataSet里更新数据的结果返回到数据库中。

    DataAdapter对象的常用属性形式为XXXCommand,用于描述和设置操作数据库。

    使用DataAdapter对象,可以读取、添加、更新和删除数据源中的记录。

    对于每种操作的执行方式,适配器支持以下4个属性,类型都是Command,分别用来管理数据操作的“增”、“删”、 “改”、“查”动作。

    SelectCommand属性:该属性用来从数据库中检索数据。

    InsertCommand属性:该属性用来向数据库中插入数据。

    DeleteCommand属性:该属性用来删除数据库里的数据。

    UpdateCommand属性:该属性用来更新数据库里的数据。

    例如,以下代码能给DataAdapter对象的selectCommand属性赋值。

    //连接字符串

    SqlConnection conn;

    //创建连接对象conn语句

    //创建DataAdapter 对象

    SqlDataAdapter da=new SqlDataAdapter;

    //给DataAdapter对象SelectCommand属性赋值

    da.SelectCommand =new SqlCommand(" select * from user ", conn);

    //后继代码

    同样,可以使用上述方式给其他的InsertCommand、DeleteCommand和UpdateCommand属性赋值。

    当在代码里使用DataAdapter对象的SelectCommand属性获得数据表的连接数据时,

    如果表中数据有主键,就可以使用CommandBuilder对象来自动为这个DataAdapter对象隐形地生成其他3个InsertCommand、DeleteCommand和UpdateCommand属性。

    这样,在修改数据后,就可以直接调用Update方法将修改后的数据更新到数据库中,而不必再使用InsertCommand、DeleteCommand和UpdateCommand这3个属性来执行更新操作。

    DataAdapter对象的常用方法

    DataAdapter对象主要用来把数据源的数据填充到DataSet中,以及把DataSet里的数据更新到数据库,同样有SqlDataAdapter和OleDbAdapter两种对象。

    它的常用方法有构造函数、填充或刷新DataSet的方法、将DataSet中的数据更新到数据库里的方法和释放资源的方法。

        1.构造函数

        不同类型的Provider使用不同的构造函数来完成DataAdapter对象的构造。对于SqlDataAdapter类,其构造函数说明如下表所示。 

    函数定义 

    参数说明 

    函数说明 

    SqlDataAdapter()

    不带参数

    创建SqlDataAdapter对象 

    SqlDataAdapter(SqlCommand selectCommand

    selectCommand:指定新创建对象的SelectCommand属性

    创建SqlDataAdapter对象。用参数selectCommand设置其Select Command属性

    SqlDataAdapter(string selectCommandText, SqlConnection selectConnection)

    selectCommandText:指定新创建对象的SelectCommand属性值

    selectConnection:指定连接对象

    创建SqlDataAdapter对象。用参数selectCommandText设置其Select Command属性值,并设置其连接对象是selectConnection 

    SqlDataAdapter(string   selectCommandText,String selectConnectionString

    selectCommandText:指定新创建对象的SelectCommand属性值

    selectConnectionString:指定新创建对象的连接字符串

    创建SqlDataAdapter对象。将参数selectCommandText设置为Select Command属性值,其连接字符串是selectConnectionString

     

    O1eDbDataAdapter的构造函数类似SqlDataAdapter的构造函数,如下表2所述。

    函数定义 

    参数说明

      函数说明 

    OleDbDataAdapter()

    不带参数

    创建OleDbDataAdapter对象

    OleDbDataAdapter( OleDbCommand  selectCommand)

    selectCommand:指定新创建对象的SelectCommand属性  

    创建OleDbDataAdapter对象。用参数selectCommand设置其SelectCommand属性

    OleDbDataAdapter(string selectCommandText,

    OleDbConnection  selectConnection)  

     

    selectCommandText: 指定新创建对象的SelectCommand属性值

    selectConnection:指定连接对象

    创建SqlDataAdapter对象。用参数selectCommandText设置其SelectCommand属性值,并设置其连接对象是selectConnection

    OleDbDataAdapter(string selectCommandText,Stnng selectConnectionString)

    selectCommandText:指定新创建对象的SelectCommand属性值

    selectConnectionString:指定新创建对象的连接字符串

    创建OleDbDataAdapter对象。将参数selectCommandText设置为SelectCommand属性值,其连接字符串是selectConnectionString

     

     

     

     

     

     

     

     

     

     

      

     

     

     

    2.Fill类方法.

    当调用Fill方法时,它将向数据存储区传输一条SQL SELECT语句。

    该方法主要用来填充或刷新DataSet,返回值是影响DataSet的行数。

    该方法的常用定义如表所示。 

    函数定义

    参数说明

    函数说明

    int Fill(DataSet  dataset)

    dataset:需要更新的DataSet

    根据匹配的数据源,添加或更新参数所指定的DataSet,返回值是影响的行数

    int Fill(DataSet dataset,

    string srcTable)

    dataset:需要更新的DataSet

    srcTable:填充DataSet的dataTable名

    根据dataTable名填充DataSet

     

     

     

     

     

     

     

    3.int  Update(DaraSetdataSet)方法

    当程序调用Update方法时,DataAdapter将检查参数DataSet每一行的RowState属性,根据RowState属性来检查DataSet里的每行是否改变和改变的类型,并依次执行所需的INSERT、UPDATE或DELETE语句,将改变提交到数据库中。

    这个方法返回影响DataSet的行数。

    更准确地说,Update方法会将更改解析回数据源,但自上次填充DataSet以来,其他客户端可能已修改了数据源中的数据。

    若要使用当前数据刷新DataSet,应使用DataAdapter和Fill方法。

    新行将添加到该表中,更新的信息将并入现有行。

    Fill方法通过检查DataSet中行的主键值及SelectCommand返回的行来确定是要添加一个新行还是更新现有行。

    如果Fill方法发现DataSet中某行的主键值与SelectCommand返回结果中某行的主键值相匹配,则它将用SelectCommand返回的行中的信息更新现有行,并将现有行的RowState设置为Unchanged。

    如果SelectCommand返回的行所具有的主键值与DataSet中行的任何主键值都不匹配,则Fill方法将添加RowState为Unchanged的新行。

  • 相关阅读:
    经典8锁问题--助你彻底搞懂锁的概念
    linux上安装mysql
    Jenkins安装详解
    第一篇:实时网络日志分析器和交互式查看器--GoAccess安装
    Centos7上安装python3.7
    Nginx报错收集
    免费yum源镜像地址
    nginx日志文件切割
    腾讯云绑定和配置弹性网卡和添加弹性网卡
    LNMP-WEB应用环境搭建
  • 原文地址:https://www.cnblogs.com/zi-xing/p/4058090.html
Copyright © 2011-2022 走看看