舊的算法:
for(int i=0;i<dtVendor.rows.count;i++)
{
sql = "select count(1) from tb_vendor where vendor='"+dtVendor.Rows[i][0].ToString()+"'";
if(check(sql)>0)
sql2 = "insert into ……";
}
當dtVendor的資料有幾百筆的時候,速度就非常慢了。。。這個算法很糟糕。。。。以後切忌不可如此使用。
新的算法:
StringBuilder sb= new StringBuilder();
sb.Append(" create table #temp1(……)");
sb.Append(" insert into #temp1");
sb.Append(" select '" + dtVendor.Rows[0][0].ToString() + "'\n");
for (int i = 1; i < dtVendor.Rows.Count; i++)
{
if (!string.IsNullOrEmpty(dtVendor.Rows[i][0].ToString()))
{
sb.Append(" union select '" + dtVendor.Rows[1][0].ToString() + "'\n");
}
}
sb.Append(" ;");
sb.Append(" select A.vendor from #temp1 A inner join tb_vendor B on A.vendor = B.vendor");
這樣就可以去掉上百個 " select count(1)".
另外insert也可以用拼sql的方法,這樣又可以省掉上百個" insert into".
浙公网安备 33010602011771号