黑马程序员之ADO.NET学习笔记: SqlDataAdapter(数据适配器)

-------------------------------------------------2345王牌技术员联盟2345王牌技术员联盟、期待与您交流!-----------------------------------------------------

1. 构造函数 

  四个重载:   

    1.无参

    2.SqlDataAdapter(SqlCommand) 执行命令对象实例

    3. SqlDataAdapter(String,SqlConnection) →只能指定查询语句连接对象实例

    4.SqlDataAdapter(String, ConnectionString) → SelectCommand和一个连接字符串初始化 SqlDataAdapter类的一个新实例

   Note:第四个重载就把连接对象和命令对象都包含进去了!

2. 填充数据(Fill)

  最简单的填充数据 

DataSet dataSet= new DataSet();

using (SqlConnection conn= new SqlConnection(""))

{

     conn.Open();

     SqlCommandcommand=conn.CreateCommand();

     command.CommandText= "select name,age,addressfrom MyInformation";

     SqlDataAdapterdataAdapter= newSqlDataAdapter(command);

     dataAdapter.Fill(dataSet);  //填充数据

}

 3.使用“SqlCommandBuilder”对数据进行增删改查

 添加数据

 using (SqlConnection conn =new SqlConnection(ConnectionString()))

 {

      conn.Open();

      //构建查询语句,也可以指定SqlCommand,其中变换的方法有很多

      SqlDataAdapter da =new SqlDataAdapter("select LastName,FirstName from dbo.Employees", conn);

      DataSet ds =new DataSet();

      da.Fill(ds);

      //这句话很重要,它会把你在DataSet增加的数据转化为SQL语句用来更新数据库

      SqlCommandBuilder cmdBuilder =new SqlCommandBuilder(da);

       //添加行,实例化一个行对象,注意是用NewRow来创建行

       DataRow row =ds.Tables[0].NewRow();

       row[0] ="Yang";

       row[1] ="鬼头";

       ds.Tables[0].Rows.Add(row); //添加到表中

       da.Update(ds);            //DataSet中表和数据库进行对比,更新

 }

 修改数据

 using (SqlConnectionconn =newSqlConnection(""))

 {

     SqlDataAdapter da =new SqlDataAdapter("SQL语句或你自己定义的命令对象", conn);

     DataSet ds =new DataSet();

     da.Fill(ds);

     //很重要的一句话

     SqlCommandBuilder cmdBuilder =newSqlCommandBuilder(da);

     ds.Tables[0].Rows[12][1] =""; //修改数据

     da.Update(ds);

     //调用Update方法其中隐式的调用了AcceptChanges方法,更新数据集中的数据

     //如果你继续使用这个数据集而没有调用这个方法,在后面的使用会出现异常

     ds.AcceptChanges(); //这句话可以不写的

 }

 删除数据

  using (SqlConnection conn =new SqlConnection(""))

 {

      SqlDataAdapter da =new SqlDataAdapter("SQL语句或你自己定义的命令对象", conn);

      DataSet ds =new DataSet();

      da.Fill(ds);

      SqlCommandBuilder cmdBuilder =new SqlCommandBuilder(da);

      //删除数据

      ds.Tables[0].Rows[12].Delete();

      da.Update(ds); //这边会隐式调用DataTableAcceptChanges方法

 }

 Note(很重要的注意点):值得注意的是Update方法已经隐式帮我调用了AcceptChanges,不比担心状态为改变删除数据会报错,微软已经帮我们都做好了,其实背后就是做的Table.AcceptChanges()这件事,如果在一般的DataTable中会怎么样,提交自上次调用AcceptChanges以来对该行进行的所有更改,在调用这个方法之后,表中所有更改将会提交,所有行状态(RowState)状态都将变为Unchanged,在DataSet中我将会说到这些内容!

4.关于“SqlDataAdapter”Fill方法的一些讨论

    简单的写一下,MSDN上都有的,查一下就知道了!

指定填充数据的数量,如:

//从第五行到第十行数据填充DataSet  

//上面的定义错了

//应该是从第六行开始,后面的十条记录

 da.Fill(ds,5,10,”MyTable”)


--------------------------------------------------- 2345王牌技术员联盟2345王牌技术员联盟、期待与您交流!---------------------------------------------------------

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值