eg:
public DataSet getData(...)
 {  DataSet dataset1;
    ....    return dataset1;
  }

解决方案 »

  1.   

    private string ConnStr = "server=local;uid=sa;pwd=;database=DB"; //Connect DB
    public void ConnectDB(SqlConnection Conn)
    {
    Conn.ConnectionString = ConnStr;
    Conn.Open(); 
    } //Definition Put Query DataBase Sql Command Data into DataSet Function
    public int GetDBDataSet(string QuerySql,string QueryTable,DataSet ReDataSet)
    {
    System.Data.SqlClient.SqlConnection GetConnection;
    System.Data.SqlClient.SqlDataAdapter GetAdapter;
    GetConnection = new System.Data.SqlClient.SqlConnection(ConnStr);
    GetAdapter = new System.Data.SqlClient.SqlDataAdapter(QuerySql,GetConnection);
    GetAdapter.Fill(ReDataSet,QueryTable);
    GetAdapter.Dispose();
    GetConnection.Close();
    return 1;
    }
      

  2.   

    上面的代码是我自己写的一个函数,可以比较简单的通过输入一个SQL语句返回一个DataSet,其中是SQL查询语句的结果。比较好用。
      

  3.   

    如果是复杂的查询语句,最好用存存储过程,生成dataset,返回DataSet
      

  4.   

    谢谢各位,返回的dataset进行操作,能给大体讲解一下吗?
      

  5.   

    请问songhp(宋海鹏) 返回的是 int 还是 dataset ?
      

  6.   

    public DataSet GetDBDataSet(string QuerySql,string QueryTable)
    {
                               DataSet ReDataSet = null;
    System.Data.SqlClient.SqlConnection GetConnection;
    System.Data.SqlClient.SqlDataAdapter GetAdapter;
    GetConnection = new System.Data.SqlClient.SqlConnection(ConnStr);
    GetAdapter = new System.Data.SqlClient.SqlDataAdapter(QuerySql,GetConnection);
    GetAdapter.Fill(ReDataSet,QueryTable);
    GetAdapter.Dispose();
    GetConnection.Close();
    return ReDataSet;
    }这样就可以了
      

  7.   

    关于什么是dataset你可以找本书好好看看,肯定都讲的挺清楚的
      

  8.   

    如楼上几位所说:可以返回一个DataSet数据集在断开缓存中存储数据。数据集的结构类似于关系数据库的结构;它公开表、行和列的分层对象模型。另外,它包含为数据集定义的约束和关系。注意   如果您想要在断开与数据源的连接时使用一组表和行,则使用数据集。对于设计数据访问,使用数据集并非总是最佳的解决方案。有关更多信息,请参见数据访问策略建议。
    可以用 .NET Framework 命名空间的以下部分创建和操作数据集。
    数据集的基本组成部分通过标准编程构造(如属性和集合)向您公开。例如: DataSet 类包含数据表的 Tables 集合和 DataRelation 对象的 Relations 集合。 
    DataTable 类包含表行的 Rows 集合、数据列的 Columns 集合和数据关系的 ChildRelations 和 ParentRelations 集合。 
    DataRow 类包含 RowState 属性,该属性的值指示自数据表首次从数据库加载后,行是否已更改以及是如何更改的。RowState 属性的可能值包括 Deleted、Modified、New 和 Unchanged。 
    数据集、架构和 XML
    ADO.NET 数据集是以 XML 形式表示的数据视图,是一种数据关系视图。在 Visual Studio 和 .NET Framework 中,XML 是存储和传输各种数据时所用的格式。因此,数据集与 XML 有密切关系。数据集和 XML 之间的这种关系使您可以从数据集的以下功能中获益: 数据集的结构(表、列、关系和约束)可在 XML 架构中定义。XML 架构是 W3C(万维网联合会)的基于标准的格式,用于定义 XML 数据的结构。数据集可以使用 ReadXmlSchema 和 WriteXmlSchema 方法读写存储结构化信息的架构。如果无架构可用,数据集可以从通过关系方法结构化的 XML 文档中的数据推导(通过其 InferXmlSchema 方法)出一个。有关数据集和架构的更多信息,请参见 XML 架构介绍。 
    可以生成一个数据集类,在此类中并入架构信息以将其数据结构(如表和列)定义为类成员。(请参见下文“类型化数据集与非类型化数据集”)。 
    可以使用数据集的 ReadXML 方法将 XML 文档或流读入数据集,使用数据集的 WriteXML 方法将数据集以 XML 格式写出。因为 XML 是不同应用程序之间的标准数据交换格式,这意味着可以加载其他应用程序发送的包含 XML 格式信息的数据集。同样,数据集可以将其数据集写出为 XML 流或文档,以与其他应用程序共享或只是将其存储为标准格式。 
    可以创建数据集内容的 XML 视图(XMLDataDocument 对象),然后用关系方法(通过数据集)或 XML 方法查看和操作数据。这两种视图在更改时自动同步。 
    类型化数据集与非类型化数据集
    数据集可以类型化或非类型化。类型化数据集这样一种数据集,它先从基 DataSet 类派生,然后使用 XML 架构文件(.xsd 文件)中的信息生成新类。架构中的信息(表、列等)被作为一组第一类对象和属性生成并编译为此新数据集类。注意   有关数据集架构的更多信息,请参见 XML 架构和数据。
    因为类型化 DataSet 类从基 DataSet 类继承,所以此类型化类承接 DataSet 类的所有功能,并且可与将 DataSet 类的实例作为参数的方法一起使用。相形之下,非类型化数据集没有相应的内置架构。与类型化数据集一样,非类型化数据集也包含表、列等,但它们只作为集合公开。(不过,手动创建了表和非类型化数据集中的其他数据元素后,可以使用数据集的 WriteXmlSchema 方法将数据集的结构导出为架构。)在应用程序中可以使用这两种类型中的任何一种。不过,Visual Studio 对类型化数据集有更多工具支持,并且,类型化数据集使对数据集的编程更简单且不易出错。对比类型化和非类型化数据集中的数据访问
    类型化数据集的类有一个对象模型,在该对象模型中此数据集的表和列第一类对象。例如,如果使用的是类型化数据集,可以使用如下代码引用列:' Visual Basic
    ' This accesses the CustomerID column in the first row of 
    ' the Customers table.
    Dim s As String
    s = dsCustomersOrders1.Customers(0).CustomerID// C#
    // This accesses the CustomerID column in the first row of 
    // the Customers table.
    string s;
    s = dsCustomersOrders1.Customers[0].CustomerID;
    相比较而言,如果使用的是非类型化数据集,等效的代码为:' Visual Basic
    Dim s As String
    s = CType(dsCustomersOrders1.Tables("Customers").Rows(0).Item("CustomerID"), String)// C#
    string s = (string) dsCustomersOrders1.Tables["Customers"].Rows[0]["CustomerID"];
    类型化访问不但更易于读取,而且完全受 Visual Studio 代码编辑器中智能感知的支持。除了更易于使用外,类型化数据集的语法还在编译时提供类型检查,从而大大降低了为数据集成员赋值时发生错误的可能性。在运行时对类型化数据集中的表和列的访问也略为快一些,因为访问是在编译时确定的,而不是在运行时通过集合确定。尽管类型化数据集有许多优点,但在许多情况下需要使用非类型化数据集。最显而易见的情形是数据集无架构可用。例如,当应用程序正在与返回数据集的组件交互而您事先不知道其结构是哪种时,便会出现这种情况。同样,有些时候使用的数据不具有静态的可预知结构,这种情况下使用类型化数据集是不切实际的做法,因为对于数据结构中的每个更改,您都必须重新生成类型化数据集类。更常见的是,许多时候可能需要动态创建无可用架构的数据集。这种情况下,数据集只是一种方便的、可用来保留信息的结构(只要数据可以用关系方法表示)。同时,您还可以利用数据集的功能,如序列化传递到另一进程的信息或写出 XML 文件的能力。数据集的大小写敏感性
    在数据集中,默认情况下表和列的名称不区分大小写,即数据集中名为“Customers”的表也可能是指“customers”。这符合包括 SQL Server 在内的许多数据库的命名规则,即数据元素的名称无法通过大小写区分。注意   与数据集不同,XML 文档区分大小写,因此架构中定义的数据元素的名称区分大小写。例如,架构协议允许要包含的架构定义名为“Customers”的表和名为“customers”的另一个不同的表。这在架构用于生成数据集类时会导致名称冲突。有关更多信息,请参见 XML 的元素、属性和类型。
    不过,大小写敏感性可以成为决定数据在数据集中的解释方法的因素。例如,在数据集表中筛选数据时,根据比较是否区分大小写,搜索判据可能返回不同的结果。通过设置数据集的 CaseSensitive 属性,可以控制筛选、搜索和排序是否区分大小写。默认情况下,数据集中的所有表都继承此属性的值。(对于每个单独的表可以重写此属性。)填充数据集
    数据集是容器,因此需要用数据填充它。填充数据集时,将引发各种事件,应用约束检查,等等。有关更新数据集以及与更新相关的问题的更多信息,请参见 Visual Studio .NET 中的数据集更新。可以用多种方法填充数据集: 调用数据适配器的 Fill 方法。这导致适配器执行 SQL 语句或存储过程,然后将结果填充到数据集中的表中。如果数据集包含多个表,每个表可能有单独的数据适配器,因此必须分别调用每个适配器的 Fill 方法。 
    有关如何填充数据集的更多信息,请参见数据适配器介绍和创建数据适配器。有关如何使用数据适配器填充数据集的更多信息,请参见从 DataAdapter 填充 DataSet。 通过创建 DataRow 对象并将它们添加到表的 Rows 集合,手动填充数据集中的表。(只能在运行时执行此操作,无法在设计时设置 Rows 集合。)有关更多信息,请参见将数据添至表中。 
    将 XML 文档或流读入数据集。有关更多信息,请参见 ReadXml 方法。 
    合并(复制)另一个数据集的内容。如果应用程序从不同的来源(例如,不同的 XML Web services)获取数据集,但是需要将它们合并为一个数据集,该方案会很有用。有关更多信息,请参见 DataSet.Merge 方法。 
    数据集中的记录位置和导航
    因为数据集是完全断开的数据容器,所以数据集(与 ADO 记录集不同)不需要或不支持当前记录的概念。相反,数据集中的所有记录都可用。由于没有当前记录,因此就没有指向当前记录的特定属性,也没有从一个记录移动到另一个记录的方法或属性。(比较而言,ADO 记录集支持绝对记录位置和从一个记录移动到另一个记录的方法。)可以访问数据集中以对象形式出现的各个表;每个表公开一个行集合。可以像处理任何集合那样处理行集合,通过集合的索引访问行,或者用编程语言通过集合特定的语句来访问行。注意   如果将 Windows 窗体中的控件绑定到数据集,则可以使用窗体的绑定结构简化对个别记录的访问。有关更多信息,请参见在 Windows 窗体中定位数据。
    相关表和 DataRelation 对象
    如果数据集中有多个表,这些表中的信息可能是相关的。数据集没有这些关系的继承知识,因此为了使用相关表中的数据,可以创建 DataRelation 对象来描述数据集中表之间的关系。可使用 DataRelation 对象以编程方式获取父记录的相关子记录和从子记录获取父记录。更新数据集和数据存储区
    当数据集中的记录发生更改时,这些更改必须写回数据库。要将更改从数据集写入数据库,须调用数据适配器的 Update 方法,在数据集与其相应的数据源之间通信。用于操作个别记录的 DataRow 类包含 RowState 属性,该属性的值指示自数据表首次从数据库加载后,行是否已更改以及是如何更改的。可能的值包括 Deleted、Modified、New 和 Unchanged。Update 方法检查 RowState 属性的值,确定哪些记录需要写入数据库,以及应该调用哪个特定的数据库命令(添加、编辑、删除)。有关更新数据的更多信息,请参见 Visual Studio .NET 中的数据集更新。
      

  9.   

    也可返回DataTable
    return da.Tables[0];