DataSet ds = new DataSet();
   ds = MyMeans.getDataSet("select sum(data) from hourdata where elec_classID=1 and datetime between dateadd(dy,-1,getdate()) and dateadd(mi,-1,getdate())");
  if (ds.Tables[0].Rows.Count > 0)
  {
       data_sumday = Convert.ToSingle(ds.Tables[0].Rows[0].ItemArray[0]);
       MyMeans.getsqlcom("insert into daydata values(1,1,1,getdate()," + data_sumday + "," + data_sumday + "*0.638)");
  }当ds取得的是空值时, Convert.ToSingle(ds.Tables[0].Rows[0].ItemArray[0])就会报错因为是select所以ds.Tables[0].Rows.Count好像永远都等于1该用什么判断条件来防止ds=null时进入条件呢?   ds!=null 已试过是不行滴

解决方案 »

  1.   


    DataSet ds = new DataSet();
       ds = MyMeans.getDataSet("select sum(data) from hourdata where elec_classID=1 and datetime between dateadd(dy,-1,getdate()) and dateadd(mi,-1,getdate())");
      if (ds.Tables[0].Rows.Count > 0 && !string.IsNullOrEmpty(ds.Tables[0].Row[0].ItemArray[0] as string)))
      {
           data_sumday = Convert.ToSingle(ds.Tables[0].Rows[0].ItemArray[0]);
           MyMeans.getsqlcom("insert into daydata values(1,1,1,getdate()," + data_sumday + "," + data_sumday + "*0.638)");
      }
      

  2.   

    是因为使用聚合函数sum(data)才导致ds.Tables[0].Rows.Count等于1的你可以通过【ds.Tables[0].Rows[0].ItemArray[0] == DBNull.Value】来判断是不是空值
      

  3.   

    用 (ds.Tables[0].Rows[0].ItemArray[0] is DBNull)来判断是否是空值,
       DataSet ds = new DataSet();
       ds = MyMeans.getDataSet("select sum(data) from hourdata where elec_classID=1 and datetime between dateadd(dy,-1,getdate()) and dateadd(mi,-1,getdate())");
      if (ds.Tables[0].Rows.Count > 0 &&(!(ds.Tables[0].Rows[0].ItemArray[0] is DBNull)) )
      {
           data_sumday = Convert.ToSingle(ds.Tables[0].Rows[0].ItemArray[0]);
           MyMeans.getsqlcom("insert into daydata values(1,1,1,getdate()," + data_sumday + "," + data_sumday + "*0.638)");
      }