使用存储过程从数据库中检索数据表

时间:2013-02-26 20:12:41

标签: asp.net c#-4.0

让我详细解释一下我所拥有的场景以及我正在寻找的解决方案。 首先,我创建了一个存储过程,输出简单的东西,如2个表和一个消息'不要停在这里'“

T-SQL:

USE [mydb]
GO
/****** Object:  StoredProcedure [dbo].[BackupDatabase]    Script Date: 2/26/2013 11:29:10 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE [dbo].[testing]
AS
BEGIN
    select 'A' firstname, 'B' lastname;

    print 'dont stop here'

    select 1 final
END

到目前为止,我曾经使用datarowcollection类以单一方式查看表,我的静态方法如下所示:

C#:

 public static class DataMan
    {
        public static DataRowCollection SelectData(string sql)
        {
            SqlDataSource DS = new SqlDataSource(CS, sql);
            return ((DataView)DS.Select(DataSourceSelectArguments.Empty)).ToTable().Rows;
        }
public static string CS =  ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
}

我可以在这里轻松获得我需要的东西,并找到我想要的那个行:

DataRowCollection people = Util.SelectData("Select * from students")

但是现在我打算创建一个存储过程,就像我上面提到的那样,做这样的事情,例如:

**DataTableCollection** people = Util.SelectData("exec dbo.Testing")

更新

所以我可以从我的storedprocedure找到特定的表。

我曾尝试使用DataTable,DataSet,DataTableCollections但没有成功。我无法以正确的方式使用它们。

请帮帮我

谢谢

1 个答案:

答案 0 :(得分:3)

虽然它可以在您在此处说明的代码隐藏中使用,但SqlDataSource更常用于ASP.NET标记页面上的声明方式。但是,根据您的启动,在调用存储过程时,您应该将SqlCommandType设置为StoredProcedure,将过程的名称提供给SelectCommand,然后返回{{1 }}。反过来,DataReader支持DataReader方法,您可以调用该方法来检索您的过程提供的每个离散结果集。这是一个伪代码框架,试图说明如何利用它:

NextResult()