跟小D每日学口语

DATATABLE的插入自定义列

插入数据的格式很简单如下
dt.Columns.Add("命名字段", typeof(类型));
            for ( int i = 0; i < dt.Rows.Count;i++ )
            {
                      //
            }
或者用foreach遍历
foreach (DataRow dr in dt.rows)
{
    //
}
今天重点的要讲一个问题,先看下面的代码
dt.Columns.Add("ul", typeof(int));
            for ( int i = 0; i < dt.Rows.Count;i++ )
            {
                strSql = "select top 1 Id from BBS where Classid = " + dt.Rows["Id"].ToString() + " order by Id desc";
                datb = DacTools.GetDataSet(strSql);//DacTools是个数据操作类,GetDataSet返回DATATABLE类型
                for (int n = 0; n < datb.Rows.Count; n++)
                {
                    dt.Rows["ul"] = datb.Rows[n]["Id"].ToString();//给命名字段ul赋值
                }
            }
strSql = "select top 1 Id from BBS where Classid = " + dt.Rows["Id"].ToString() + " order by Id desc";
这个查询出来只有一行数据,按理DATATABLE的ROWS行数为1,datb.Rows[n]索引n写0就行,可是不行,根据以前看的一篇文章,估计是开辟的内存地址不一样,于是再用一个循环,问题解决。
次代码也可写成
dt.Columns.Add("ul", typeof(int));
            foreach  ( DataRow dr in dt.Rows )
            {
                strSql = "select top 1 Id from BBS where Classid = " + dr["Id"].ToString() + " order by Id desc";
                datb = DacTools.GetDataSet(strSql);
                foreach (DataRow drw in datb.Rows)
                {
                    dr["ul"] = drw["Id"].ToString();
                }
            }
posted @ 2009-07-29 12:55  腐乳  阅读(1093)  评论(0)    收藏  举报