前幾天在做代碼時,遇到這樣一個問題:
在查詢返回一個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);
}
在此行中不定義的列是空值。既不需要的列不用初始化。