当前位置:编程学习 > C#/ASP.NET >>

DataTable 操作问题


SqlDataAdapter da = new SqlDataAdapter("select * from 表", conn);
            DataSet ds = new DataSet();
          da.Fill(ds," ");


ds.Tables[0]获取到了数据,现在我想得到数据集里的前100-200行的数据,接下来怎么操作。。
我是菜鸟,请贴代码!!! --------------------编程问答-------------------- --------------------编程问答-------------------- datatable对象.select(sql语句) --------------------编程问答-------------------- datatable对象.select(sql语句)  这个是正确的。。,在这里取你想要的记录。 --------------------编程问答-------------------- datatable对象.select(sql语句)这个可以 --------------------编程问答--------------------
引用 2 楼 wangyue4 的回复:
datatable对象.select(sql语句)


--------------------编程问答--------------------
引用 1 楼 bdmh 的回复:
通过rows的索引得到啊,99-199
C# code

            for (int i = 99; i < 200; i++)
            {
                dt.Rows[i].....
            }
这种方式,.select好像不能处理这种情况 --------------------编程问答--------------------

            SqlDataAdapter da = new SqlDataAdapter("select * from 表", conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = ds.Tables[0];
            List<DataRow> list = new List<DataRow>();
            foreach (DataRow dr in dt.Select())
            {
                list.Add(dr);
            }
            IEnumerable<DataRow> result= list.Skip(100).Take(100);//获取100至200行的数据.
--------------------编程问答--------------------

        
        SqlDataAdapter da = new SqlDataAdapter("select row_number over (order by 某字段) as row_num,* from 表", conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DataTable dt = ds.Tables[0];
        DataRow[] drr = dt.Select(" ROW_NUM >= 100 AND ROW_NUM <= 200");
        DataTable Need_Rows = dt.Clone() ;
        for (int i = 0; i < drr.Length; i++)
        {
             Need_Rows.ImportRow(drr[i]);
        }
        dataGridView1.DataSource = Need_Rows;
        

        
--------------------编程问答--------------------
引用 4 楼 cjh200102 的回复:
datatable对象.select(sql语句)这个可以


.select()里面的语句怎么写.... --------------------编程问答--------------------


datatable对象.select(sql语句)这个可以


.select()里面的语句:select top 100 *  from  tables  where id not in (select top  100 id from tables)
--------------------编程问答--------------------
引用 9 楼 a645588 的回复:
引用 4 楼 cjh200102 的回复:

datatable对象.select(sql语句)这个可以


.select()里面的语句怎么写....


后面就写你查100-200行的sql语句。。 --------------------编程问答--------------------
引用 10 楼 titi__11296 的回复:
datatable对象.select(sql语句)这个可以


.select()里面的语句:select top 100 *  from  tables  where id not in (select top  100 id from tables)

不是对数据库操作了,也不知道表名,数据是EXCEL里读出来的 --------------------编程问答-------------------- 不是这么写的,只写where语句。你的datatable表里必然有id字段吧。
datatable对象.select("id>=100 and id<=200") --------------------编程问答-------------------- 还有lz你为什么不在一开始取数据时就取出100-200的数据呢
sql:select   top    100   *   from   (select   top 200 *   from    表名   order   by   id)   aa   order   by   id   desc


先取出前200条记录,然后反序排列,然后再取其前100条数据,结果就是原数据的第100-200行数据 --------------------编程问答--------------------
引用楼主 a645588 的回复:
C# code

SqlDataAdapter da = new SqlDataAdapter("select * from 表", conn);
            DataSet ds = new DataSet();
          da.Fill(ds," ");



ds.Tables[0]获取到了数据,现在我想得到数据集里的前100-200行的数据,接下来怎么……

DataTable dt=ds.Tables[0];
dt.select("ID between 100 and 200"); --------------------编程问答-------------------- ("select top 200 * from 表", conn);
--------------------编程问答-------------------- 下面是 将一条SQL 查选出来的记录,填充到DS里的 例子,填充时可以 选择从第几行填,填多少行,返回DataSet


/// <summary>
        /// 根据SQL查询返回DataSet对象,如果没有查询到则返回NULL
        /// </summary>
        /// <param name="sql">查询语句</param>
        /// <param name="sRecord">开始记录数</param>
        /// <param name="mRecord">最大记录数</param>
        /// <param name="strTableName">表名</param>
        /// <returns>DataSet</returns>
        public DataSet returnDS(string sql, int sRecord, int mRecord, string strTableName)
        {

            DataSet ds = new DataSet();
            try
            {
                 SqlCommand cmd = new SqlCommand(sql, con);
                 cmd.CommandTimeout = 20;
                 this.Open();
                 SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                 adapter.Fill(ds, sRecord, mRecord, strTableName);

            }
            catch (Exception e)
            {
                ds = null;
                throw (e);
               
            }
            finally
            {
                this.Close();
            }

            return ds;

        }



如果 后续还想 使用其他行,就不要用这个方法了

用循环来实现即可
--------------------编程问答-------------------- datatable.Select().Skip(100).Take(100) --------------------编程问答-------------------- 你那问题这样可以解决啊

引用 1 楼 bdmh 的回复:
通过rows的索引得到啊,99-199

C# code

            for (int i = 99; i < 200; i++)
            {
                dt.Rows[i].....
            }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,