c# - 如何读取存储过程输出并将其作为列表返回

标签 c# sql sql-server

我有一个包含复合键的表,以便从两个不同的表中检索数据。我已经创建了存储过程来执行此操作并且它工作正常:

存储过程:

ALTER PROC dbo.spp_adm_user_user_group_sel
AS 
BEGIN 
    SET NOCOUNT ON

    SELECT 
        g.name AS Group_Name, u.fullname, u.designation, 
        u.email, u.mobile 
    FROM 
        TBL_ADM_USER_GROUP g, TBL_ADM_USER u
    WHERE 
        g.id = u.group_id 
        AND (g.deleted IS NULL OR g.deleted <> 1)
END

结果是这样的:

Group_name  fullname    designation  email          mobile
Alex        fffffffff   Engineer     sss@mail.come  3333333333
Jon        hhhhhhhhh    programmer   hh@mail.com    020202028347

如您所见,存储过程没有任何参数。如何使用 C# 读取此输出并将其作为列表返回?

代码:

public List<string> GetData()
{
    using (SqlConnection con = new SqlConnection(Global.Config.ConnStr))
    {
        string group;

        DataTable dt = new DataTable();
        List<string> details = new List<string>();

        SqlCommand cmd = new SqlCommand("spp_adm_user_user_group_sel", con);
        cmd.CommandType = CommandType.StoredProcedure;

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);

        foreach (DataRow dr in dt.Rows)
        {
            details.Add(group);
        }
    }

    return details;
}

最佳答案

将你的代码改成这样

public List<yourClass> GetData()
{
using (SqlConnection con = new SqlConnection(Global.Config.ConnStr))
{

    DataTable dt = new DataTable();
    List<yourClass> details = new List<yourClass>();

    SqlCommand cmd = new SqlCommand("spp_adm_user_user_group_sel", con);
    cmd.CommandType = CommandType.StoredProcedure;

    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);

     foreach(DataRow dr in dt.Rows)
            {
                yourClass obj = new yourClass();

                obj.fullname= dr["fullname"].ToString();
                obj.email= dr["email"].ToString();

                details.Add(obj);
            }


            return details;
        }

关于c# - 如何读取存储过程输出并将其作为列表返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33883881/

相关文章:

c# - WinSCP .NET 程序集在处理中可以抛出哪些异常类型

c# - 在 C# 的结构中创建固定大小的字符串?

php - 查询失败!列计数与第 1 行的值计数不匹配

sql-server - 查询 XML 列

mysql - 从 MS SQL Server 插入到 MySQL 数据库

c# - 系统.Net.Sockets.Socketexception : An invalid argument was supplied Error Code:10022

c# - 使用 StoryQ 修改或配置输出

sql - 将逻辑事件组合在一起

mysql - 同一张表内两次内连接

java - 如何将我的 Web 应用程序连接到 SQL Server/SQL Server Express