1

我有这个代码:

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'

4

4 回答 4

6

您需要GetOrdinal函数

zakce.Text = precti.GetString(precti.GetOrdinal("akce"));
zname.Text = precti.GetString(precti.GetOrdinal("name"));
于 2013-07-10T11:50:27.127 回答
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);
于 2013-07-10T11:51:58.343 回答
1

SqlDataReader.GetString()方法只接受带int类型的参数。所以你必须通过列号而不是列名来获取值。

有关详细信息,请参阅MSDN

于 2013-07-10T11:48:43.813 回答
1

这样做

  if (precti.Read())
        {

            zakce.Text = precti[0].ToString();
            zname.Text = precti[2].ToString();

        }
于 2013-07-10T11:50:04.483 回答