【问题标题】:Access column name with ExecuteScalar in C#?在 C# 中使用 ExecuteScalar 访问列名?
【发布时间】:2016-08-07 09:52:47
【问题描述】:

我有一个根据某些结果返回 0 或 1 的存储过程。我经常手动执行此过程,因此要在 SSMS 中轻松查看成功/失败但在代码中仍可读取为 0/1 的描述,我选择 0 或 1 作为不同的列名,即 SELECT 0 AS ThisReason 或 @ 987654322@.

几乎可以肯定有更好的方法来处理这个问题,但这让我很好奇 - 在 C# 中使用 ExecuteScalar 时是否可以读取您选择的列的名称?

【问题讨论】:

    标签: c# tsql stored-procedures sql-server-2014 executescalar


    【解决方案1】:

    不是ExecuteScalar,而是ExecuteReaderSqlDataReader.GetName

    using (var con = new SqlConnection("connection-string"))
    using (var cmd = new SqlCommand("storedprocedurename", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        // parameters here...
        con.Open();
        using (var rd = cmd.ExecuteReader())
        {
            if (rd.Read())
            {
                string column = rd.GetName(0); // first column
                int value = rd.GetInt16(0);    // or rd.GetInt32(0)
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您想要做的是作为查询的结果获取两位信息。要使用ExecuteScalar,您首先需要将这两个位“打包”为一个。例如,您可以返回一个以“+”或“-”开头的字符串,表示成功/失败,字符串的其余部分可以是“原因”。

      ExecuteScalar 没有其他方法可以做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-19
        • 2018-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-08
        相关资源
        最近更新 更多