我有这段代码:
public void chyt_data()
{
try
{
SqlCommand novyprikaz = new SqlCommand("SELECT * FROM zajezd WHERE akce=" + currentrowstring, spojeni);
spojeni.Open();
SqlDataReader precti = novyprikaz.ExecuteReader();
if (precti.Read())
{
zakce.Text = precti.GetString(0);
zname.Text = precti.GetString(2);
}
}
catch (Exception ex)
{
MessageBox.Show("Chybové hlášení2: " + ex.Message.ToString());
}
spojeni.Close();
}
如果我在其中插入列名,就像这样:
zakce.Text = precti.GetString("akce");
它不起作用。
是的,请有人帮我解决这个问题吗? 非常感谢你它有两个错误:
1:错误1'System.Data.Common.DbDataReader.GetString(int)'的最佳重载方法匹配有一些无效的参数
2:错误2参数1:无法从'string'转换为'int'
答案 0 :(得分:6)
您需要GetOrdinal功能
zakce.Text = precti.GetString(precti.GetOrdinal("akce"));
zname.Text = precti.GetString(precti.GetOrdinal("name"));
答案 1 :(得分:2)
对于像:
这样的事情zakce.Text = precti.GetString("akce");
有几种选择:
zakce.Text = (string)precti["akce"];
或者如果您确定它是string
:
zakce.Text = Convert.ToString(precti["akce"]);
或:
int idx = precti.GetOrdinal("akce");
zakce.Text = precti.GetString(idx);
答案 2 :(得分:1)
SqlDataReader.GetString()
方法仅接受int
类型的参数。因此,您必须传递列号而不是列名来获取值。
有关详细信息,请参阅MSDN。
答案 3 :(得分:1)
这样做
if (precti.Read())
{
zakce.Text = precti[0].ToString();
zname.Text = precti[2].ToString();
}