【问题标题】:SqlDataReader filling combobox IsDBNull issueSqlDataReader 填充组合框 IsDBNull 问题
【发布时间】:2013-08-26 16:51:06
【问题描述】:

您好,我已尝试处理 Null 异常,但仍收到异常警告:数据为 null 此方法或属性无法在 null 值上调用。

这是我的代码:

 spojeni.Open();
        string sql_combobox = "SELECT column FROM tableO RDER BY nazev ASC";
        SqlCommand combobox = new SqlCommand(sql_combobox, spojeni);


        try
        {
            SqlDataReader dr = combobox.ExecuteReader();
            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    comboBox1.Items.Add(dr["column"]);
                }
            }

            dr.Close();
            dr.Dispose();
            spojeni.Close();
        }

【问题讨论】:

  • 在检查中,您正在检查第 0 列,但在 Add 调用中,您将按名称获取列。我冒昧地猜测您请求的列实际上不是第 0 列。
  • 不,Select query 只有1 列,这意味着0column 相同。
  • 哪一行给你错误?if (!dr.IsDBNull(0)) 或 comboBox1.Items.Add(dr["column"]); ?
  • @NoOne 和其他所有人,对不起,这是我没有提到的另一种方法的错误。再次抱歉。
  • @Marek 那是什么方法?你的意思是你的问题已经解决了?

标签: c# sql sql-server winforms


【解决方案1】:

我从你的代码中得到了什么

spojeni.Open();
//change your query string there was an error in it
string sql_combobox = "SELECT column FROM table ORDER BY nazev ASC";
SqlCommand combobox = new SqlCommand(sql_combobox, spojeni);


try
{
   SqlDataReader dr = combobox.ExecuteReader();
   while (dr.Read())
   {
       if (!dr.IsDBNull(0))
       {
          comboBox1.Items.Add(dr.GetString(0));
       }
   }

   dr.Close();
   dr.Dispose();
   spojeni.Close();
}

【讨论】:

  • 如果是这样,我想例外是SQLException(语法错误)就在ExecuteReader
  • @KingKing 你是对的。这就是为什么我想知道给出错误的那一行。
【解决方案2】:

您需要指定要检查的列...尝试以下操作:

if (dr["column"] != DBNull.Value)
{
    comboBox1.Items.Add(dr["column"]);
}

【讨论】:

  • 如果你能解释一下为什么IsDBNull 不起作用,那就完美了?
猜你喜欢
  • 2014-05-03
  • 2013-06-22
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多