zoukankan      html  css  js  c++  java
  • C#里sqlDataAdapter.fill(DataSet,String)的用法

    第二个参数 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[0].BeginLoadData();  
    daDept.Fill(dsDept,"Department");  
    dsDept.Tables[0].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架构。

     
  • 相关阅读:
    使用过的一些前端工具
    文档和元素中与几何形状和滚动相关的属性和方法
    文档元素选取和遍历中的一些容易忘记的概念
    只存在于理想中的客户端JavaScript时间线
    JavaScript函数代码和执行上下文--ECMA-262-5
    JavaScript中的闭包
    Git Note
    HDOJ 4463 Outlets 最短路
    HDOJ 4548 美素数
    HDOJ 2544 最短路
  • 原文地址:https://www.cnblogs.com/herizai/p/6972305.html
Copyright © 2011-2022 走看看