选择存储过程输出的第2列

时间:2012-03-19 08:57:29

标签: 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

2 个答案:

答案 0 :(得分: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;
    }
}

但这是一个漫长的方式来做和检查。要诚实地使用我认为应该使用的方法,你收到错误吗?或者价值是错的?

答案 1 :(得分:0)

您需要检查null和hasrows

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