【问题标题】:If SQL DB column is NULL insert into datagridview 0如果 SQL DB 列是 NULL 插入 datagridview 0
【发布时间】:2013-09-16 17:36:30
【问题描述】:

大家好,我得到了这个查询,它可能在 klisluz.cenaklisluz.pocet 列中包含 null 或 DBNull(不确定)值。

请问,如果有 null,我该如何防止这些列在这个 sQuery 中出现,以便我可以插入到 datagridview 0 中?

由于这是 JOIN 查询,我不确定应该在哪里实现 ISNULL(klisluz.pocet,0) 和 ISNULL(klisluz.cena)

DataTable dt = new DataTable();
string sZakce = string.Empty;
if (zakce != null && zakce.Text != null)
{
    sZakce = zakce.Text;
}

string sQuery = string.Format("SELECT zajsluz.akce, zajsluz.text, klisluz.cena,
  klisluz.pocet, klisluz.subkey, zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON
  zajsluz.ID = klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and 
  ISNULL(klisluz.subkey, '" + vyberradek + "') = '" + vyberradek + "'
  GROUP BY klisluz.subkey, zajsluz.akce, klisluz.cena, zajsluz.text,
  klisluz.pocet, zajsluz.ID", sZakce);
SqlDataAdapter SDA = new SqlDataAdapter(sQuery, spojeni);
SDA.Fill(dt);
dtg_ksluzby.DataSource = dt;

感谢您的宝贵时间。

到目前为止,我尝试过这个:

for (int i = 0; i < (dtg_ksluzby.Rows.Count - 0); i++)
{

    if (dtg_ksluzby.Rows[i].Cells["pocet"].Value == null ||
       (string)dtg_ksluzby.Rows[i].Cells["pocet"].Value == string.Empty)
    {
    dtg_ksluzby.Rows[i].Cells["pocet"].Value = 0;
    }
    if (dtg_ksluzby.Rows[i].Cells["cena"].Value == null ||
      (string)dtg_ksluzby.Rows[i].Cells["cena"].Value == string.Empty)
    {
    dtg_ksluzby.Rows[i].Cells["cena"].Value = 0;
    }
}

但出现异常,无法找到这些列名。

【问题讨论】:

  • 您必须在 SELECT 子句中执行此操作。检查@Soner的答案

标签: c# sql sql-server datagridview


【解决方案1】:

您可以使用ISNULL (Transact-SQL)

用指定的替换值替换NULL。

语法;

ISNULL ( check_expression , replacement_value )

例如;

SELECT ...., ISNULL(klisluz.cena, 0), ISNULL(klisluz.pocet, 0)

【讨论】:

    【解决方案2】:

    试试下面的查询

    string sQuery = string.Format("SELECT zajsluz.akce, zajsluz.text, klisluz.cena,
      ISNULL(klisluz.pocet,0) as [pocet], klisluz.subkey, zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON
      zajsluz.ID = klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and 
      ISNULL(klisluz.subkey, '" + vyberradek + "') = '" + vyberradek + "'
      GROUP BY klisluz.subkey, zajsluz.akce, klisluz.cena, zajsluz.text,
      ISNULL(klisluz.pocet,0), zajsluz.ID", sZakce);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 2013-08-06
      相关资源
      最近更新 更多