需求:查詢連續 N 天的郵件發送日誌。資料庫按天分表(如 send20090302、status20090302),透過 ID 關聯。使用 DataSet.Merge 將多天資料合併。
string[] sendTables, statusTables;
void GetTableNames()
{
string dateFrom = "2009-01-07";
string dateTo = "2009-01-10";
int days = (Convert.ToDateTime(dateTo) - Convert.ToDateTime(dateFrom)).Days + 1;
sendTables = new string[days];
statusTables = new string[days];
for (int i = 0; i < days; i++)
{
string suffix = Convert.ToDateTime(dateFrom).AddDays(i).ToString("yyyyMMdd");
sendTables[i] = "mailsend" + suffix;
statusTables[i] = "mailstatus" + suffix;
}
}
逐日查詢並 Merge 至主 DataTable,注意 PrimaryKey 設定避免重複。使用 StringBuilder 構建動態 SQL,參數化防注入。MySQL 需引用 MySql.Data.dll。
資料說明:mstatus(all/success/failure)、mtype(jobs/email)、分頁參數 pageindex/pagesize。