2 fhongchan FHongchan 于 2013.07.29 12:55 提问

关于 将dt按照dr的样子改造,并且得到dr里面的数据 出问题了

#region 将dt按照dr的样子改造,并且得到dr里面的数据
public static DataTable Convertdrtodt(SqlDataReader dr)
{
DataTable dataTable = new DataTable();//建一个新的实例

        for (int i = 0; i < dr.FieldCount; i++)
        {
            DataColumn mydc = new DataColumn();//关键的一步
            mydc.DataType = dr.GetFieldType(i);
            mydc.ColumnName = dr.GetName(i);

            dataTable.Columns.Add(mydc);//关键的第二步  
        }
        while (dr.Read())
        {
            DataRow mydr = dataTable.NewRow();//关键的第三步
            for (int i = 0; i < dr.FieldCount; i++)
            {
                mydr[i] = dr[i].ToString();
            }

            dataTable.Rows.Add(mydr);//关键的第四步
            mydr = null;
        }

        dr.Close();
        return (dataTable);//别忘了要返回datatable,否则出错
    }
    #endregion

这一段的代码 我执行到mydr[i] = dr[i].ToString(); 还是有结果的

为什么到dataTable.Rows.Add(mydr);//关键的第四步

添加行元素进去的时候就没有结果了

2个回答

FHongchan
FHongchan   2013.08.05 13:51
已采纳

不知道为什么,结果却是可以正确的转出来的..

u010618015
u010618015   2013.07.29 13:18

我将你的代码复制下,运行起来是没有问题的而且也能得到结果, 但是在dr.close()的时候IDataReader对象却发生了异常

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
DataRow dr = dt.NewRow();
DataTable dt = new DataTable(“t1”); DataRow dr = dt.NewRow(); dt.Rows.Add(dr);/// /// 构造用户信息细节表 /// /// public static DataTable getAllDetail() { DataTable dt = new DataTable(); dt.C
好烦啊 ds dt dr
DataSet ds = new DataSet(); DataTable dt = new DataTable(); ds.Tables.Add(dt); dt.Columns.Add("fName", typeof(System.String)); dt.Columns.Add("lName", t
DR的升级改造
<br />   要想清楚升级DR,首先要清楚DR整机的工作流程:首先,探测器准备完毕,然后X光机曝光,曝光的同时探测器开始采集,曝光结束后,探测器停止采集,同时向计算机单元发送图象数据。从这里可以看出,升级DR和原来的升级CR没有本质的区别,唯一的区别只是DR与X光机间有电缆连接,而CR与X光机间没有电缆连接。<br /><br />    找到了两者间的区别了,我们再来分析DR与X光机间的电缆的作用。<br /><br />    说简单点,这条电缆的主要作用就是DR告诉X光机,平板探测器准备好了,你可
关于卷一中DR/BDR选举过程解释
为什么MA网络上需要进行DR和BDR的选举?如果每个路由器都发送自己的LSDB数据库的话,网络中会有大量LSA流量,而且这些lsa中很大一部分都是重复的.所以为了减少LSA数据包占用的带宽,选举DR和BDR来代表大家发送LSA.   650) this.width=650;" style="border-bottom:0px;border-left:0px;border-top:0px;borde
lvs的DR模型工作流程从ip数据层的详细分析(科来)
lvs的DR模型工作流程从ip数据层的详细分析 时间2012-07-22 作者itnihao 邮箱 itnihao@qq.com 博客 http://itnihao.blog.51cto.com Vip           192.168.16.20 Real server1  192.168.16.2  Real server3  192.168.16.4  序列号
负载均衡之LVS/DR模式
和NAT模式不同,DR的负载均衡调度器工作在网络七层协议中的数据链路层,也就是第二层。它通过修改数据包的目标MAC地址,将数据包转发到实际应用服务器上,最重要的是,实际服务器的响应数据包将直接返回给用户端,而不需要经过负载调度器 1、LVS、DR简介 LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,
Excel导入DataGridView和SQL 带进度条
这是在摸索一个晚上总结的使用经验,保证100%可用, 引用 Microsoft.Office.Interop.Excel.dll 窗体新建一个DataGridView ,要有个状态栏的进度条(可选) 说明: GetDataFromExcelByCom函数是用于将EXCEL导入到DataGridView的 使用方法,在click事件下 DataTable dt = GetDataFromExcelByCom(true); //使用 Microsoft.Office.Interop.Excel导入EXCEL数据到datatable里 dataGridView1.DataSource = dt; //dataGridview显示数据源 insertToSql函数是将dt中的各项值导入SQL,注意的是EXCEL字段要与SQL字段一样,且声明变量时的数据类型要一致 使用方法:在click事件下 DataRow dr = null; for (int i = 0; i < dt.Rows.Count; i++){ dr = dt.Rows[i]; insertToSql(dr); } 导入过程中,如果遇到错误,注意EXCEL中的空格,判断一下就行了 if (dr["iszftime"].ToString() != "") { iszftime = Convert.ToDateTime(dr["iszftime"].ToString()); } else { iszftime = null; }
OSPF中的 DR的选举规则
以下是我整理出来的关于OSPF DR的选举规则,大家参考一下: DR:指的是指定路由器,为了避免路由器之间建立的完全的邻接关系而引起大量的开销,OSPF要求在多路访问的网络中要选举一个DR,每个路由器都要与这个DR路由器建立邻接关系,在这个网络中,每个路由器都要与这个路由器交换路由信息,由这个路由器负责通知其他的路由器,告知整个网络的拓扑。 BDR:作为DR的备份之用,备份指定路由器,在指定路
lvs DR模式的笔记
最近在配置lvs,想用lvs做个VIP
DR/BDR
在OSPF中,有两个相当重要的概念:DR和BDR。我们先来看看什么叫DR,什么叫BDR,然后再来看看他们都是做什么的。     DR:designated router  指定路由器。     BDR:backup designated router  备份指定路由器。     在一个LAN连接中,OSPF将选举出一个路由器做为DR,再选举一个做为BDR,所有其他的和DR以及BDR相