我的存储过程返回此
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
答案 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