第二个参数 String是指定DataSet 里表的名字,例如 sqlDataAdapter.fill(DataSet,"学生表") 
指定后,以后就可以这样调用这张表 DataSet.Tables["学生表"]
第二个参数可以不要的,如果不要第二个参数 String 那你调用这张表只能通过索引号,例如 DataSet.Tables[0] 如果填充的表比较多的话,用这个参数比较容易管理和
调用。
-----------------------------------------------------------------------------------
使用DataAdapter填充DataSet(1)

在选择了DataAdapter的类型(SqlDataAdapter或OleDbDataAdapter)并配置了DataAdapter来执行所需的任务之后,可以用创建的DataAdapter来填充DataSet。

1.使用DataAdapter填充DataSet

可以使用DataAdapter来填充DataSet。调用DataAdapter的Fill方法,并指定要填充的DataSet表。Fill方法隐式执行DataAdapter的SelectCommand中的SQL查询,查询的结果用于定义DataSet表的结构,并用数据来填充表。此外,Fill方法是可重载的。例如:

rowsAffected = aDataAdapter.Fill(DataSet);
rowsAffected = aDataAdapter.Fill(DataSet,strDataTableName);
rowsAffected = aDataAdapter Fil](DataTable);

当填充DataSet时,DataAdapter会强制一些约束,例如主键唯一性。为了提高性能,在填充DataSet前将EnforceConstraints属性设置为false,这将在数据加载过程中禁用约束检查。

aDataset.EnforceConstraints=false; 

【实例10-5】  使用Datadapter填充DataSet。

下面创建一个DataSet,它包含一个名为Department的表。使用名为daDepartment的DataAdapter来填充该表,并调用BeginLoadData方法来优化性能。

填充完该表之后,将一个DataGridView控件绑定到该表,该DataGridView将在屏幕上显示客户信息。

SqlDataAdapter daDept = new SqlDataAdapter(
"select * from humanresources.department", cn);
DataSet dsDept = new DataSet();
dsDept.Tables.Add(new DataTable("Department"));
dsDept.Tables[].BeginLoadData();
daDept.Fill(dsDept,"Department");
dsDept.Tables[].EndLoadData();
dataGridView1.DataSource = dsDept.Tables["Department"];

DataAdapter和Command在如何处理Connection对象上有一个主要的区别:在调用一个Command对象的执行方法前,将打开与该Command相关联的Connection对象,否则Command会抛出一个异常;DataAdapter则没有这样的需求。

如果要调用DataAdapter对象的Fill方法,并且SelectCommand属性的Connection已经关闭,DataAdapter将自动打开连接、提交查询、提取结果,然后关闭Connection。读者也许会发现DataAdapter非常有条不紊,它总是将SelectCommand属性的Connection恢复到其初始状态。但是如果在调用Fill方法之前已经打开Connection,调用以后Connection仍然处于打开状态。因此使用DataAdapter的Fill方法时,不需要手工打开Connection。

但在一些特殊情况下,也需要在执行DataAdapter的Fill方法之前先打开Connection。例如,在应用程序启动时,用多个DataAdapter对象将多个查询的结果填充到DaraSet中。可以使用DataAdapter对象的构造函数强制每个DataAdapter都使用相同的Connection对象。代码如下:

string strConn = "Provider=SQLOLEDB;Data Souroe=(local)"+
"Initial catalog=Northwind;Trusted_connection=Yes;";
OleDbConnection cn = new OleObconnection(strconn);
OleDbOataAdapter daCustomers,daOrders;
daCustomers = new OleDbDataAdapter("SELECT ... FROM Customers",cn);
daOrders = new OleDbDataAdapter("SELECT ... FROM orders",cn);
ds=new DataSet();
daCustomers Fill(ds):
daOrders.Fill(ds);

实际上,当两次打开和关闭Connection时,每次都调用DataAdapter对象的Fill方法。为了避免重复地多次打开和关闭Connection对象,在对DataAdapter对象调用Fill方法之前,先调用Connection对象的Open方法。如果要在填充数据以后关闭Connection,则应该像下面例子中显示的那样调用Close方法。

cn.Open();
daCusomers.Fill(ds);
daOrders.Fill(ds);
cn.Close();

2.高效地填充DataSet

填充DataSet最有效的方法是在填充DataSet前先定义显示架构,这意味着在填充DataSet前已经知道了DataTable、DataColumn和DataRelation。

断开式应用程序从数据库服务器中检索数据,由于事先知道数据的结构,因此可以创建类型化DataSet,其架构与所检索的数据结构相同,这使得数据在运行时可以被高效地加载。

在窗体设计器中创建类型化DataSet的步骤如下:

(1)将SqlDataAdapter控件或OleDbDataAdapter控件从工具箱拖放到窗体上。

(2)使用"数据适配器配置向导"按要求配置DataAdapter。

(3)右击新的DataAdapter对象,在弹出的快捷菜单中选择"生成数据集"命令。

(4)在弹出的"生成数据集"对话框中为新的DataSet类命名。

(5)选择要添加到DataSet中的表。

(6)选中"将此数据集添加到设计器"复选框。

(7)单击"确定"按钮,将创建一个从DataSet继承的类型化DataSet类,还将创建这个类的一个实例并将它添加到应用程序中。

(8)右击新的DataSet对象,在弹出的快捷菜单中选择"查看架构"命令。

(9)在XML设计器中检查DataSet的XSD架构。如果需要,可以通过将XSD架构元素从工具箱拖放到XML设计器上来修改和扩展XSD架构。

 

C#里sqlDataAdapter.fill(DataSet,String)的用法的更多相关文章

  1. 神奇的问题记录【SqlDataAdapter Fill DataSet】

    今天发现程序中有一张报表查询速度很慢[全条件要二分钟左右],查找相关原因,准备进行优化处理.注:报表调用存储过程,存储过程返回两个table就有以下神奇的故事: 直接将SQL语句在SSMS中执行发现全 ...

  2. SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释

    一.SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释:根据datatable名填充Dataset.myda.Fill(ds, ...

  3. 如何取消 SqlDataAdapter.Fill() 的执行(转载)

    问 Scenario: We have a DataGridView which is attached to DataAdapter (datatable), we load the data in ...

  4. STL string 常见用法详解

    string 常见用法详解 1. string 的定义 //定义string的方式跟基本数据类型相同,只需要在string后跟上变量名即可 string str; //如果要初始化,可以直接给stri ...

  5. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  6. String.format()用法

    package junit.test;   import java.util.Date; import java.util.Locale;   import org.junit.Test;   pub ...

  7. java中String的用法

    String的用法很活跃,也用到的很多.可以根据自己的需要查询API.这里只有concat和substring,indexof的用法 class TestString { public static ...

  8. C#中string.Format 用法详解

    这篇文章主要介绍了C#中string.format用法,以实例形式较为详细的讲述了string.format格式化的各种用法,非常具有实用价值,需要的朋友可以参考下 本文实例总结了C#中string. ...

  9. Oracle中dbms_random.string 的用法

    转载:https://blog.csdn.net/simonchi/article/details/8657787 DBMS_RANDOM.STRING(var1,var2) 这个函数有两个参数 va ...

随机推荐

  1. poj3494Largest Submatrix of All 1’s(最大全1子矩阵)

    题目链接:http://poj.org/problem?id=3494 题目大意: 出1个M*N的矩阵M1,里面的元素只有0或1,找出M1的一个子矩阵M2,M2中的元素只有1,并且M2的面积是最大的. ...

  2. 感想 - 猴子刷视频app

    看到一个视频,内容是一只猿猴熟练地像人一样刷短视频app,惟妙惟肖:https://pan.baidu.com/s/10-eibLmuybKtRJ-CKnruYA 抽象思考和语言才是人类独有的能力,视 ...

  3. 如何算gama(1/2)=sqrt(pi)?

    关键是算e^{-x^2}在0到oo的定积分是sqrt(pi)/2. 或者利用高斯密度函数来求解

  4. socket客户端的备份机制

    SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0); //设定服务器的地址信息 SOCKADDR_IN addrSrv; addrSrv.sin_a ...

  5. java tomcat虚拟目录的深入了解

    我们知道,Web网站中的内容(包括网页,图片,音频文件等)一般都存放在App的目录下.但随着网站内容的不断丰富,用户需要把不同层次的内容组织成网站的子目录.我们通常的做法是在网站主目录下新建子目录,并 ...

  6. SpringBoot使用Easypoi导出excel示例

    SpringBoot使用Easypoi导出excel示例 https://blog.csdn.net/justry_deng/article/details/84842111

  7. vue-cli项目中引入全局scss

    加载一个全局设置文件 在每个组件里加载一个设置文件,而无需每次都将其显式导入,是一个常见的需求.比如为所有组件全局使用 scss 变量.为了达成此目的: npm install sass-resour ...

  8. python如何导入自定义文件和模块$PYTHONHOME$\Lib\site-packages 方法

    python 中如何引用自己创建的源文件(*.py)呢? 也就是所谓的模块. 假如,你有一个自定义的源文件,文件名:saySomething.py .里面有个函数,函数名:sayHello.如下图: ...

  9. day04记

    useGeneratedKeys useGeneratedKeys这个只在insert语句中有效,正常情况下useGeneratedKeys默认为false 当useGeneratedKeys为tru ...

  10. [原创]Laravel 基于redis队列的解析

    目录 参考链接 本文环境 为什么使用队列 Laravel 中的队列 分发任务 任务队列 Worker Last-Modified: 2019年5月10日11:44:18 参考链接 使用 Laravel ...