SqlDataAdapter知识

SqlDataAdapterDataSetSQL Server之间的桥接器。SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射 Fill(它可填充DataSet中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。

简介

但是,除非 MissingSchemaAction,否则这个隐式创建的架构中不包括主键信息。也可以使用FillSchema,让 SqlDataAdapter创建 DataSet的架构,并在用数据填充它之前就将主键信息包括进去。
在这里插入图片描述

DataSet

作用:DataSetDataAdapter读取数据。
问:什么是DataAdapter
答:DataAdapter对象在DataSet与数据之间起桥梁作用

string strConn="uid=账号;pwd=密码;database=数据库;server=服务器";//SQL Server链接字符串
SqlConnection ConnSql=new SqlConnection (strConn); //Sql链接类的实例化
ConnSql.Open ();//打开数据库//使用SqlDataAdapter时没有必要从Connection.open()打开,SqlDataAdapter会自动打开关闭它。
string strSQL="SELECT * FROM 表名1 "; //要执行的SQL语句
SqlDataAdapter da=new SqlDataAdapter(strSQL,ConnSql); //创建DataAdapter数据适配器实例
DataSet ds=new DataSet();//创建DataSet实例
da.Fill(ds,"自定义虚拟表名");//使用DataAdapter的Fill方法(填充),调用SELECT命令
ConnSql.Close ();//关闭数据库

提示

如果只需要执行SQL语句或SP,就没必要用到DataAdapter ,直接用SqlCommandExecute系列方法就可以了。sqlDataadapter的作用是实现DatasetDB之间的桥梁:比如将对DataSet的修改更新到数据库。

SqlDataAdapterUpdateCommand的执行机制是:当调用SqlDataAdapter.Update()时,检查DataSet中的所有行,然后对每一个修改过的Row执行SqlDataAdapter.UpdateCommand ,也就是说如果未修改DataSet中的数据,SqlDataAdapter.UpdateCommand不会执行。

结尾

有关更多信息,请参见 向 DataSet添加现有约束。SqlDataAdapterSqlConnectionSqlCommand 一起使用,以便在连接到 SQL Server 数据库时提高性能。SqlDataAdapter 还包括 SelectCommand、InsertCommand、DeleteCommand、UpdateCommandTableMappings属性,


C#中SqlDataAdapter的使用小结

SqlDataAdapter对象

一、特点介绍

1、表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。
2、在SqlDataAdapterDataSet之间没有直接连接。当完成SqlDataAdpater.Fill(DataSet)调用后,两个对象之间就没有连接了。

二、使用介绍

1、创建SqlDataAdapter

string strSQL=“Select * from Customers”;
    SqlCommand cmd=new SqlCommand(strSQL,cn);
    SqlDataAdapter da=new SqlDataAdapter();
    da.SelectCommand=cmd;

2、SqlDataAdapter构造函数
string strConn=“Provider=.....”;

string strSQL=select * from Customers”;
  SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);

string strConn=“Provider=.....”;

SqlConnection cn=new SqlConnection(strConn);
  SqlDataAdapter da=new SqlDataAdapter(select * from Customers”,cn);

string strConn=“Provider=.....”;

string strSQL=select * from Customers”;
  SqlConnection cn=new SqlConnection(strConn);
  SqlCommand cmd=new SqlCommand(strSQL,cn);
  SqlDataAdapter da=new SqlDataAdapter(cmd);

3、从查询中获取结果
①使用Fill方法

SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);
    DataSet ds=new DataSet();
    da.Fill(ds);   //这里ds中的表名为Table

②使用Fill方法创建DataTable对象和DataColumn对象

SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);
    da.TableMapping.Add(“Table”,“Customers”);    
    DataSet ds=new DataSet();
    da.Fill(ds);

③使用重载Fill方法

 SqlDataAdapter.Fill(DataSet,“Customers”);
    SqlDataAdapter.Fill(DataTable);
    SqlDataAdapter.Fill(DataSet,intStartRecord,intNumRecords,“TableName”);

④开放和关闭连接
如果调用了一个SqlDataAdapter对象的Fill方法,而SelectCommand属性的Connection关闭了,那么SqlDataAdapter就会开放一个连接,然后提交查询、获取结果、最后关闭连接。如果在调用前开放了Connection,那么操作之后仍然保持开放。

SqlDataAdapter daCustomers,daOrders;
    daCustomers=new SqlDataAdapter(“Select * from Customers”,cn);
    daOrders=new SqlDataAdapter(“Select * from Orders”,cn);
    DataSet ds=new DataSet();
    cn.Open();
    daCustomers.Fill(ds);
    daOrders.Fill(ds);
    cn.Close();

⑤多次调用Fill方法

刷新DataSet中的数据,最简单的解决方法就是清空DataSet(或DataTable),然后再次调用DataAdapter对象的Fill方法。

三、属性方法事件介绍

1、属性
AcceptChangeDuringFill:确定由DataAdapter所获取的行的RowState(默认为True)。
DeleteCommand:获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录。
InsertCommand:获取或设置一个 Transact-SQL 语句或存储过程,以在数据源中插入新记录。
SelectCommand:获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。
UpdateCommand:获取或设置一个 Transact-SQL 语句或存储过程,用于更新数据源中的记录。
TableMappingsSqlDataAdapter用来将查询的结果映射到DataSet的信息集合。
ContinueUpdate:控制SqlDataAdapter在遇到一个错误之后是否继续提交更改(默认为false)。

2、方法
Fill:执行存储于SelectCommand中的查询,并将结果存储在DataTable中。
FillSchema:为存储在SelectCommand中存储的查询获取架构信息。获取查询中的各列名称和数据类型。
GetFillParameters:为SelectCommand获取一个包含着参数的数组。
Update:向数据库提交存储在DataSet(或DataTable、DataRows)中的更改。该方法会返回一个整数值,其中包含着在数据存储中成功更新的行数。

3、事件
FillError:当DataAdapter遇到填充DataSetDataTable的一个错误时,该事件被触发。
RowUpdated:向数据库提交一个修改的行之后被触发。
RowUpdating:向数据库提交一个修改的行之前被触发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值