C# 选择存储过程输出的第二列

C# 选择存储过程输出的第二列,c#,wpf,visual-studio-2010,linq,C#,Wpf,Visual Studio 2010,Linq,我的存储过程返回 1 skl meter 50 我希望我的c程序从输出中选择skl 我现在正在做这个 SqlDataReader dr=comm.ExecuteReader(); var fal = dr.Read(); if (fal) { var skl = dr.GetString(1); } 但它不起作用 如何从sql输出中选择Skl或任何其他值 问题是,即使输出中不存在skl,它也会选择skl。如果您的过程返回的数据超过1行,那么我建议绑定到Datagrid。 通过这种方式

我的存储过程返回

1 skl meter 50
我希望我的c程序从输出中选择skl

我现在正在做这个

SqlDataReader dr=comm.ExecuteReader();
var fal = dr.Read();

if (fal)
{
   var skl = dr.GetString(1);
}
但它不起作用

如何从sql输出中选择Skl或任何其他值


问题是,即使输出中不存在skl,它也会选择skl。如果您的过程返回的数据超过1行,那么我建议绑定到Datagrid。 通过这种方式,您还可以查看输出,这是一种ui调试方式。 一旦datagrid视图显示了数据行,我就会这样做:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if(row.Cells["Name of the field"].Value != DBNull.Value)
    {
        string Myval = row.Cells["Name of the field"].Value;
    }
}

但要做到这一点并进行检查还有很长的路要走。老实说,我认为您使用的方法应该有效,您是否收到错误?还是该值错误?

您需要检查null和hasrows

         if(rdr.HasRows)
         {
                rdr.read();
                string strValue = string.Empty;
                if (!rdr.IsDBNull(1)) strValue = rdr.GetString(1);
          }
          else {} // woops

它怎么不起作用??您是否有错误?如果有:错误是什么?您能否澄清该输出是显示为文本,还是在结果集中?如果列在结果集中,最好按名称而不是顺序选择列。是否可以显示StoredProcess文本?