在 C# 中使用 ExecuteScalar 访问列名?

Access column name with ExecuteScalar in C#?

我有一个存储过程 returns 0 或 1 取决于某些结果。我经常手动执行此过程,因此要描述 success/failure 在 SSMS 中很容易查看但在代码中仍可读为 0/1,我 select 0 或 1 作为不同的列名称,即 SELECT 0 AS ThisReasonSELECT 0 AS ThatReason.

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

您想做的是获取两位信息作为查询的结果。要使用 ExecuteScalar,您需要先 "pack" 将这两位合二为一。例如,您可以 return 一个以“+”或“-”开头的字符串,表示 success/failure,字符串的其余部分可以是 "reason".

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

不是 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)
        }
    }
}