我从数据库查询出两个结构相同的表table1,table2,一个取前10行,一个取后10行,想把这两个表合并成table3,并把table1和table2的值复制给table3,。这是我写的代码,查询了没数据。请大家帮忙看看。。。
cn.Open();
DataSet ds = new DataSet();
SqlDataAdapter sda1 = new SqlDataAdapter("select top 10 * from code order by i_id ", cn);
SqlDataAdapter sda2 = new SqlDataAdapter("select top 10 * from code order by i_id desc ", cn);
sda1.Fill(ds, "table1");
sda2.Fill(ds, "table2");
DataTable tb1 = new DataTable("table3");
ds.Tables.Add(tb1);
tb1 = ds.Tables["table1"].Clone();
object[] obj = new object[tb1.Columns.Count];
for (int i = 0; i < ds.Tables["table1"].Rows.Count; i++)
{
ds.Tables["table1"].Rows[i].ItemArray.CopyTo(obj, 0);
tb1.Rows.Add(obj);
}
dataGridView1.DataSource=ds.Tables["table3"];
cn.Close();
------解决思路----------------------
datatable.Merge(datatable)
------解决思路----------------------
直接用Merge方法就可以了。
------解决思路----------------------
你的sql语句改成存储过程,直接得到table3不行么?!
create procedure ptest
as
begin
select top 10 * into #t1 from zw_yingyez order by i_feeid
select top 10 * into #t2 from zw_yingyez order by i_feeid desc
select * from #t1
union all
select * from #t2
drop table #t1
drop table #t2
end
------解决思路----------------------
union一句的事情,干嘛还要搞个临时表呢
------解决思路----------------------
好吧,你赢了,除非他要查Top,否则还真无法将OrderBy放在一起查询