本文意在说明一下DataSet.Merge(Table)和多个Table合并到一个里面的操作.因为是新手,代码肯定有很多问题,欢迎大家批评指正. 如果你有更好的解决方案,请告诉我.谢谢.
先说一下需求:ASP.NET+MYSQL
查询连续N天的邮件发送日志.在库里,表是按天存放的,表名也是按天命名的.例如:mailsend20090302,mailstatus20090302,两张表有ID关联.为了调试简单,我把日期直接写死.在点查询按钮之后,首先根据得到的日期拼凑表名,得到两个表名数组,然后调用MySqlHelper类里的方法,下面是数据库操作的代码.因为用的是MySql,所以需要添加一个MySql.Data.dll引用.另外前两天看过string 与stringbuilder之间的区别,所以拼sql 时用了stringbuilder,然后用其ToString()赋给数组.
对数据做点说明:
mstatus:all,success,failure
mtype:jobs,email
pageindex,pagesize为分页控件的属性,分别表示第N页,和每页显示多少数据.
拼表名的方法:
Code1
//数据库表名2
string[] sendTables;3
string[] statusTables;4
5
//拼表名6
voidGetTableName()7
{8
stringdateFrom="2009-01-07";9
stringdateTo="2009-01-10";10
TimeSpan ts=Convert.ToDateTime(dateTo)-Convert.ToDateTime(dateFrom);11
intcounter=ts.Days+1;12
sendTables=newstring[counter];13
statusTables=newstring[counter];14
15
for(inti=0; i
{17
sendTables[i]="mailsend"+Convert.ToDateTime(dateFrom).AddDays(i).ToString("yyyyMMdd");18
statusTables[i]="mailstatus"+Convert.ToDateTime(dateFrom).AddDays(i).ToString("yyyyMMdd");19
}20
21
}22
Code1
usingSystem;2
usingSystem.Data;3
usingSystem.Configuration;4
usingSystem.Web;5
usingSystem.Web.Security;6
usingSystem.Web.UI;7
usingSystem.Web.UI.WebControls;8
usingSystem.Web.UI.WebControls.WebParts;9
usingSystem.Web.UI.HtmlControls;10
usingMySql.Data.MySqlClient;11
usingSystem.Text;12
13
namespaceMultiTable14
{15
publicclassMySqlHelper16
{17
privatestaticstringstrConn=ConfigurationManager.AppSettings["connStr"].ToString();18
//多天查 询 sendTables,statusTables,muser,mdomain,mstatus,pageindex,pagesize19
privatestaticstring[] PrepareSelectString2(string[] sendTables,string[] statusTables,stringmuser,stringmdomain,stringmstatus,stringmtype,intpageindex,intpagesize)20
{21
string[] strSelect=newstring[sendTables.Length];22
StringBuilder sbCommand2=newStringBuilder();23
for(inti=0; i