SqlCommand和SqlDataAdapter的区别

SqlCommand对应DateReader   SqlDataAdapter对应DataSet   SqlCommand的执行效率比较高,但不灵活,功能也有限   SqlDataAdapter的效率要低点,它是连接的,可随时更新数据,功能强大。   很多编程用其中一种就可以了。   SqlCommand是C#中与Sql数据库打交道的对象,几乎所有的Sql数据库操作都需要使用该对象来实现,但其功能有限,只是简单的实现了与Sql数据库的接口而已;   SqlDataAdapter是一个功能强大的SqL数据适配器,也用于操作Sql数据库,但它的操作都要通过SqlCommand来实现(有一个属性对象的类型就是SqlCommand),也就是说,可以把SqlDataAdapter看作是一个把一些特殊功能封装了、增强了的SqlCommand!   adapter是和dataset打交道的,command不能直接与dataset打交道,要通过adapter. adapter的定义是基于command的,当然也可以之间在定义adapter的时候写入sql语句和connection对象 如
dim ada as new sqlclient.sqladapter(select * from stu,conn1)

也可以这么写 dim com1 as new sqlclient.sqlcommand(select * from stu,conn1)
             dim ada as new sqlclient.sqladapter(com1)
想要把数据显示出来就不得不用到adapter来给dataset传值,而command不能直接传值给dataset 可以这样理解: DataSet用来装表的集合,里面可以装从SqlDataAdapter中返回的一系列的DataTable 如果返回的有多张表,那么我们可以通过索引的方式来找到想要的表:DataTable dt = ds.Tables[0];或DataTable dt = ds.Tables["products"]; DataSet可以直接做为数据控件的数据源,也可以从中获取表或表的视图来做为数据源.如: this.DataList1.DataSource = dt; this.DataList2.DataSource = dt.Tables[0]; this.Datalist3.DataSource = dt.Tables[0].DefaultView; 这三句的效果都是一样的. SqlDataAdapter是针对于SQL数据库的一个数据适配器,对应的还有OledbDataAdapter等等,它起着牵线搭桥的作用,我们可以用它来创建或是执行一个数据库操作命令,并将返回的结果集填充到DataSet中去.

你可能感兴趣的:(SqlCommand和SqlDataAdapter的区别)