前几天在做代码时,遇到这样一个问题:
在查询返回一个dt时,进行判断,如果为空的话,要给结果集加上默认的一行,其中初始几个必须的字段,获得新的dt.
如下:
string selSQL = "select DWID,to_char(fssj,'yyyy-mm-dd hh24:mi:ss') as FSSJ,BGR from xx ";
DataTable dt = dbHelpSql.Query(selSQL);
//如果dt为空,即是首次添加尚未生成初始报告,则取事件表中的单位ID加入结果表中
if (dt == null || dt.Rows.Count <= 0)
{
string selSQL_i = string.Format("select 'aa' as DWID,'{0}' as FSSJ,'aa' as BGR from xx where rownum=1", DateTime.Now.ToString());
dt = dbHelpSql.Query(selSQL_i);
}
此上面有时候可以,有时不行,后来才发现,当数据库表中如果有数据时,dt才会有返回值,如果表中为空,则 'xxx' as 字段的方法则返回值为空。
因为此种方法不可行,需要往空的dt源里,插入一行自定义的行:
if (dt == null || dt.Rows.Count <= 0)
{
DataRow dr = dt.NewRow();
dr[0] = dwiddt.Rows[0]["dwdm"].ToString();
dr[1] = DateTime.Now.ToString();
dt.Rows.Add(dr);
}
在此行中不定义的列是空值。既不需要的列不用初始化。