DataAdapter与DataSet紧密配合以创建数据的内存表示。
【DataReader与DataAdapter的区别】:
主要在于他们与数据库的连接方式不同:
DataReader对象通过打开一个连接,然后执行SQL命令,再检索数据库中的数据,当不再进行操作时关闭连接;
DataAdapter对象仅仅在需要填充DataSet对象时才使用数据连接,完成操作后将释放所有的服务器资源。
DataAdapter对象用于填充DataSet和更新数据库,可以将它看作连接DataSet与数据库的桥梁,通过它来获取或更新数据。
【常用属性】:SelectCommand:用于数据源中选择记录的Command对象。
【常用方法】:Fill:向DataSet的数据表中填充数据;
Update:将DataSet中的数据回传到数据库中。
【DataAdapter对象的使用】:
1、填充数据集
a、创建数据库连接对象;
b、创建查询数据库的SQL命令;
c、创建DataSet对象;
d、创建DataAdapter对像;
【语句】:SqlDataAdapter SqlDataAdapter对象=new SqlDataAdapter(SQL命令,数据库连接对象);
e、调用DataAdapter对象的Fill()方法填充DataSet对象。
【语句】:SqlDataAdapter对象.Fill(数据集对象,需要填充的数据表的名称);
【注意】:若需要填充的数据表不存在,数据集将自动创建一个数据表,然后再填充数据,否则将直接填充数据。
当访问DataSet中的数据时,需要对DataSet进行解析。
1、访问DataSet对象中的DataTable对象;
【语句】:DataSet对象.Table[表索引或表名];
2、访问DataTable对象中的DataRow对象;
【语句】:DataSet对象.Table[表索引或表名].Rows[行索引];
3、访问DataRow对象中的某列数据;
【语句】:DataSet对象.Table[表索引或表名].Rows[行索引][列索引或列名];
【注意】:表索引、行索引以及列索引都从0开始。当获取DataRow对象中某列的数据时需要进行显式类型转换。
2、更新数据源:
a、创建CommandBuilder对象,生成更新数据库的相关命令;
【语句】:SqlCommandBuilder SqlCommmandBuilder对象=new SqlCommandBuilder(SqlDataAdapter对象);
【注意】:CommmandBuilder对象用于通过DataAdapter对象的查询命令,检索表结构并自动生成所对应的INSERT、UPDATE和DELETE命令。
在DataAdapter对象查询命令必须至少返回一个主键或唯一列,若不存在任何主键和唯一列,则会生成命令失败,无法更新数据源。
b、调用DataAdapter对象的Update()方法更新数据源。
【语句】:SqlDataAdapter对象.Update(数据集对象,需要提交的数据表的名称);