我想在数据库中取出多条记录,如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交流,给高分.

解决方案 »

  1.   

    SELECT TOP 1200 * FROM TB
    分页查询
    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
      

  2.   

    你也许误会我的意思了,我是通过现有的1000多个记录查到数据,然后一起返回给DataGridview,你这做法还是不能解决我的问题啊,我怎么能够把这1200条记录集ds一起返回给DataGridview?
      

  3.   

    按照SN排序select top 1200
      

  4.   

    这样不可以的,我要的是规定条件的1200,不是前top 1200个数据
      

  5.   

    就如我建一个DataTable dt,我要把每次查到的一次记录都放到dt,我的意思是要添加1200次到dt中,然后再把这1200次添加的数据dt添加到DataSet ds中,把ds返回给DataGridview,明白我的意思了吧?
      

  6.   


    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++)
                {
                    
                }
      

  7.   

    ds里就添加了1200个Table ,感觉这样是错误的做法 。
      

  8.   

    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);
    dataGridView.DataSource = DT.DefaultView;
      

  9.   

    SqlDataAdapter sqlda = new SqlDataAdapter(selectstr, sqlcon);
                DataTable DT = new DataTable();
                sqlda.Fill(DT);
                dataGridViewname.DataSource = DT.DefaultView;
      

  10.   

    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='0002'
    查到第二个记录再添到dt中,如此下去,到最后添加1200个数据,dt中有1200个数据了一起返回给DataGridview
      

  11.   

    是的,这样是错误的,我要的是只往一个DataTable里面添加数据
      

  12.   

    分页存储过程查询数据,添加到dataset
    可以使用exists
      

  13.   

    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);我想用这种方法做,可是我表的栏位很多,有几十个呢,麻烦
      

  14.   

    Typerow["TypeID"] = 1;   
      Typerow["TypeName"] = "矿石";
      TypeCombo.Rows.Add(Typerow);  Typerow["TypeID"] = 2;
      Typerow["TypeName"] = "焦炭";
      TypeCombo.Rows.Add(Typerow);
    把这个 写成方法
      

  15.   


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

  16.   

    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();
                                       }
                }
    我觉着用类似方法
      

  17.   

    用类似上面的方法填充DATATABLE
      

  18.   

    我也知道往DataTable里填数据,可是怎么填更好,我要的是一个具体的实现方法,越简单越好.
      

  19.   

    建一个DataTable dtAll;
    每产生一个DataTable dt
    dtAll.Merge(dt);或者每一个查询的Adapter全部Fill同一个DataSet即可
      

  20.   


    +1 个人觉得思路上有点问题,试问返回含有1200个dt的DS里,和返回1200行的DataTable哪个效率更高?无疑这是对系统资源的挥霍..“这样做in里最多只能放1000个条件,而且速度很慢。”——没见过有人这么用in的啊,查询上面可以作作文章,只要你的SN不是随机生成的序列查1200条不是难事
      

  21.   

    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);