我想在数据库中取出多条记录,如10条记录然后把这10条记录都添加到一个DataSet中,一起返回赋给DataGridview dg,
我之所以想这么做,是因为我现在要通过已知的1200记录的序号SN(0001~1200)在表sfism3.r_wip_tracking_t中查询多于1000条记录,我这样查:
select t.* from sfism3.r_wip_tracking_t t where t.sn in(
‘1000序号内’
)
这样做in里最多只能放1000个条件,而且速度很慢。
所以我想到先new一个DataSet ds,然后每查到一条记录就往ds里放,只到1200查完,然后一起把结果ds返回到界面赋给DataGridview.
我知道每查到一条记录都有一个Table
ds1=new DataSet();
ds1=GetData(SN);
ds1.Table[0];
....
这样ds里就添加了1200个Table了,我在界面就不知道怎么取到一个总的dg.DataSoure=ds.Table[0];
请问高手如何解决呢?给出完整的代码给高分,也许对你而言是简单,可对我没有解决过的就难了。
愿QQ交流,给高分.
我之所以想这么做,是因为我现在要通过已知的1200记录的序号SN(0001~1200)在表sfism3.r_wip_tracking_t中查询多于1000条记录,我这样查:
select t.* from sfism3.r_wip_tracking_t t where t.sn in(
‘1000序号内’
)
这样做in里最多只能放1000个条件,而且速度很慢。
所以我想到先new一个DataSet ds,然后每查到一条记录就往ds里放,只到1200查完,然后一起把结果ds返回到界面赋给DataGridview.
我知道每查到一条记录都有一个Table
ds1=new DataSet();
ds1=GetData(SN);
ds1.Table[0];
....
这样ds里就添加了1200个Table了,我在界面就不知道怎么取到一个总的dg.DataSoure=ds.Table[0];
请问高手如何解决呢?给出完整的代码给高分,也许对你而言是简单,可对我没有解决过的就难了。
愿QQ交流,给高分.
分页查询
N-M条记录
select top m * into 临时表(或表变量) from tablename order by columnname
set rowcount n
select * from 表变量 order by columnname descselect top n * from
(select top m * from tablename order by columnname) a
order by columnname desc
SqlConnection sqcon = new SqlConnection();
SqlDataAdapter da = new SqlDataAdapter(select t.* from sfism3.r_wip_tracking_t t where t.sn in(‘1000序号内’),sqlcon);
DataSet dataset = new DataSet();
da.Fill(dataset);
DataTable dt = dataset.Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
}
SqlDataAdapter da = new SqlDataAdapter(select t.* from sfism3.r_wip_tracking_t t where t.sn in(‘1000序号内’),sqlcon);
DataSet dataset = new DataSet();
da.Fill(dataset);
dataGridView.DataSource = DT.DefaultView;
DataTable DT = new DataTable();
sqlda.Fill(DT);
dataGridViewname.DataSource = DT.DefaultView;
要用
select t.* from sfism3.r_wip_tracking_t t where t.sn='0001'
查到一次记录放到DataTable dt中,
select t.* from sfism3.r_wip_tracking_t t where t.sn='0002'
查到第二个记录再添到dt中,如此下去,到最后添加1200个数据,dt中有1200个数据了一起返回给DataGridview
可以使用exists
TypeCombo.Columns.Add("TypeID", typeof(int));//添加列TypeID DataRow Typerow; //定义数据表行Typerow
Typerow = TypeCombo.NewRow();//将定义的表行绑定到数据表TypeCombo
Typerow["TypeID"] = 1;
Typerow["TypeName"] = "矿石";
TypeCombo.Rows.Add(Typerow); Typerow["TypeID"] = 2;
Typerow["TypeName"] = "焦炭";
TypeCombo.Rows.Add(Typerow);我想用这种方法做,可是我表的栏位很多,有几十个呢,麻烦
Typerow["TypeName"] = "矿石";
TypeCombo.Rows.Add(Typerow); Typerow["TypeID"] = 2;
Typerow["TypeName"] = "焦炭";
TypeCombo.Rows.Add(Typerow);
把这个 写成方法
这样每个序号查询一次,也要一个在数据库中一条条的比较,其效率不是更低吗?
(还增加了很多SQL语句传递的时间)
{ string tempStr = ""; for (int k = 0; k < dataGridView1.Columns.Count; k++)
{ if (k > 0)
{ tempStr += "\t"; // 间隔字符 } tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
}
}
我觉着用类似方法
每产生一个DataTable dt
dtAll.Merge(dt);或者每一个查询的Adapter全部Fill同一个DataSet即可
+1 个人觉得思路上有点问题,试问返回含有1200个dt的DS里,和返回1200行的DataTable哪个效率更高?无疑这是对系统资源的挥霍..“这样做in里最多只能放1000个条件,而且速度很慢。”——没见过有人这么用in的啊,查询上面可以作作文章,只要你的SN不是随机生成的序列查1200条不是难事
TypeCombo.Columns.Add("TypeID", typeof(int));//添加列TypeID DataRow Typerow; //定义数据表行Typerow
Typerow = TypeCombo.NewRow();//将定义的表行绑定到数据表TypeCombo
Typerow["TypeID"] = 1;
Typerow["TypeName"] = "矿石";
TypeCombo.Rows.Add(Typerow); Typerow["TypeID"] = 2;
Typerow["TypeName"] = "焦炭";
TypeCombo.Rows.Add(Typerow);