【问题标题】:Can't put column name into GetString无法将列名放入 GetString
【发布时间】:2013-07-10 11:40:51
【问题描述】:

我有这个代码:

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:Error 1 'System.Data.Common.DbDataReader.GetString(int)' 的最佳重载方法匹配有一些无效参数

2:错误 2 参数 1:无法从 'string' 转换为 'int'

【问题讨论】:

  • 你不能那样做。 SqlDataReader.GetString() 只接受 int 类型的参数 (msdn.microsoft.com/en-us/library/…)
  • 非常感谢,所以如果值是 char,我应该使用 GetChar 对吗?
  • @MarekŠíp 不; SqlDataReader 不支持 GetChar - 它不起作用

标签: c# sql sqlcommand getstring


【解决方案1】:

您需要GetOrdinal 函数

zakce.Text = precti.GetString(precti.GetOrdinal("akce"));
zname.Text = precti.GetString(precti.GetOrdinal("name"));

【讨论】:

    【解决方案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);
    

    【讨论】:

      【解决方案3】:

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

      请参阅MSDN 了解更多信息。

      【讨论】:

        【解决方案4】:

        这样做

          if (precti.Read())
                {
        
                    zakce.Text = precti[0].ToString();
                    zname.Text = precti[2].ToString();
        
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-17
          • 1970-01-01
          • 2015-08-22
          • 2019-12-18
          • 1970-01-01
          相关资源
          最近更新 更多