DataSet中添加多个记录问题

qinzugan 2010-08-01 01:33:32
我想在数据库中取出多条记录,如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交流,给高分.
...全文
318 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycg_893 2010-08-02
  • 打赏
  • 举报
回复
你如何得到已知的1200条记录,若是从数据库得到,那只需将这两个表相关联,并排除多余记录,多余的就是你要的。要多少条就取多少条。
ycg_893 2010-08-02
  • 打赏
  • 举报
回复
你应该主要从数据库的查询语句或设计问题着手,怎么样的需求需要这样的 IN(1,2,...,1200)条件。把具体需求与功能说清楚,或许有更好的解决办法。
abcabcabci 2010-08-01
  • 打赏
  • 举报
回复
DataTable TypeCombo = new DataTable();// 定义数据表TypeCombo

TypeCombo.Columns.Add("TypeName", typeof(string)); //添加列TypeName
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);

  • 打赏
  • 举报
回复
[Quote=引用 20 楼 csui2008 的回复:]
引用 12 楼 qinzugan 的回复:

8楼的哥们的做法还是不可以,只是实现在1000以内的序号,这种做法一样要用in,性能很差,我不用in()
要用
select t.* from sfism3.r_wip_tracking_t t where t.sn='0001'
查到一次记录放到DataTable dt中,
select t.* from sfism3.r_wip_tra……
[/Quote]

+1 个人觉得思路上有点问题,试问返回含有1200个dt的DS里,和返回1200行的DataTable哪个效率更高?无疑这是对系统资源的挥霍..

“这样做in里最多只能放1000个条件,而且速度很慢。”——没见过有人这么用in的啊,查询上面可以作作文章,只要你的SN不是随机生成的序列查1200条不是难事
jointan 2010-08-01
  • 打赏
  • 举报
回复
建一个DataTable dtAll;
每产生一个DataTable dt
dtAll.Merge(dt);

或者每一个查询的Adapter全部Fill同一个DataSet即可
HIpity 2010-08-01
  • 打赏
  • 举报
回复
jf _
qinzugan 2010-08-01
  • 打赏
  • 举报
回复
我也知道往DataTable里填数据,可是怎么填更好,我要的是一个具体的实现方法,越简单越好.
kj289907795 2010-08-01
  • 打赏
  • 举报
回复
来高人给指点哈嘛 关注
kj289907795 2010-08-01
  • 打赏
  • 举报
回复
用类似上面的方法填充DATATABLE
qinzugan 2010-08-01
  • 打赏
  • 举报
回复
还是不行啊
kj289907795 2010-08-01
  • 打赏
  • 举报
回复
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{

string tempStr = "";

for (int k = 0; k < dataGridView1.Columns.Count; k++)
{

if (k > 0)
{

tempStr += "\t"; // 间隔字符

}

tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();


}
}
我觉着用类似方法
qinzugan 2010-08-01
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 andy_liucj 的回复:]
引用 17 楼 qinzugan 的回复:
DataTable TypeCombo = new DataTable();// 定义数据表TypeCombo

TypeCombo.Columns.Add("TypeName", typeof(string)); //添加列TypeName
TypeCombo.Columns.Add("TypeID", typeof(int));//添加列Ty……
[/Quote]

是有来源的,就是从表中查询到的
qinzugan 2010-08-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 csui2008 的回复:]
引用 12 楼 qinzugan 的回复:

8楼的哥们的做法还是不可以,只是实现在1000以内的序号,这种做法一样要用in,性能很差,我不用in()
要用
select t.* from sfism3.r_wip_tracking_t t where t.sn='0001'
查到一次记录放到DataTable dt中,
select t.* from sfism3.r_wip_tra……
[/Quote]

你的解决办法呢?
我要能一下子查出多于1000笔,速度要快
andy_liucj 2010-08-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 qinzugan 的回复:]
DataTable TypeCombo = new DataTable();// 定义数据表TypeCombo

TypeCombo.Columns.Add("TypeName", typeof(string)); //添加列TypeName
TypeCombo.Columns.Add("TypeID", typeof(int));//添加列TypeID

DataRow T……
[/Quote]问题描述的有些混乱,这个不能用循环来实现吗?你要赋的值总有来源的吧
东莞寻香苑 2010-08-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qinzugan 的回复:]

8楼的哥们的做法还是不可以,只是实现在1000以内的序号,这种做法一样要用in,性能很差,我不用in()
要用
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='00……
[/Quote]

这样每个序号查询一次,也要一个在数据库中一条条的比较,其效率不是更低吗?
(还增加了很多SQL语句传递的时间)

powerchuangwai 2010-08-01
  • 打赏
  • 举报
回复
路过,顶贴 。。
kj289907795 2010-08-01
  • 打赏
  • 举报
回复
Typerow["TypeID"] = 1;
Typerow["TypeName"] = "矿石";
TypeCombo.Rows.Add(Typerow);

Typerow["TypeID"] = 2;
Typerow["TypeName"] = "焦炭";
TypeCombo.Rows.Add(Typerow);
把这个 写成方法
qinzugan 2010-08-01
  • 打赏
  • 举报
回复
DataTable TypeCombo = new DataTable();// 定义数据表TypeCombo

TypeCombo.Columns.Add("TypeName", typeof(string)); //添加列TypeName
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);

我想用这种方法做,可是我表的栏位很多,有几十个呢,麻烦
qinzugan 2010-08-01
  • 打赏
  • 举报
回复
我还是不知道怎么做,我就是想要一次性查到1200个序号的值,不放到in(序号)
wuyq11 2010-08-01
  • 打赏
  • 举报
回复
分页存储过程查询数据,添加到dataset
可以使用exists
加载更多回复(13)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧