首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

构建DataTable报错。该怎么处理

2012-06-15 
构建DataTable报错。。。C# codeDataTable dt new DataTable()DataColumn can_use new DataColumn()can

构建DataTable报错。。。

C# code
            DataTable dt = new DataTable();            DataColumn can_use = new DataColumn();            can_use.DataType = System.Type.GetType("System.Int32");            can_use.ColumnName = "can_use";            dt.Columns.Add(can_use);            DataColumn start_date = new DataColumn();            start_date.DataType = System.Type.GetType("System.DateTime");            start_date.ColumnName = "start_date";            dt.Columns.Add(start_date);                        DataColumn end_date = new DataColumn();            end_date.DataType = System.Type.GetType("System.DateTime");            end_date.ColumnName = "end_date";            dt.Columns.Add(end_date);            DataColumn des = new DataColumn();            des.DataType = System.Type.GetType("System.String");            des.ColumnName = "des";            dt.Columns.Add(des);            DataColumn gps_date = new DataColumn();            gps_date.DataType = System.Type.GetType("System.Boolean");            gps_date.ColumnName = "gps_date";            dt.Columns.Add(gps_date);            dt = SQLHelper.ExecuteDateSet(conStr, CommandType.Text, sqlStr, null).Tables[0];            OracleDataReader dr = SQLHelper.ExecuteReader(conStr, CommandType.Text, sqlStr, null);            DataRow dataRow;            if (dr.HasRows)            {                    while (dr.Read())                {                    string temp_canUse = dr["can_use"].ToString();//是否可用。1:可用,0:不可用                    string temp_startDate = dr["start_date"].ToString();//空闲时间段开始时间                    string temp_endDate = dr["end_date"].ToString();//空闲时间段结束时间                    string temp_des = dr["des"].ToString();//描述                    bool temp_gpsIsFree = IsEmpty(sim, DateTime.Parse(temp_startDate), DateTime.Parse(temp_endDate));//该段时间内是否有gps数据                    dataRow = dt.NewRow();                    dataRow["can_use"] = temp_canUse;                    dataRow["start_date"] = DateTime.Parse(temp_startDate);                    dataRow["end_date"] = DateTime.Parse(temp_endDate);                    dataRow["des"] = temp_des;                    dataRow["gps_date"] = true;                    dt.Rows.Add(dataRow);                }            }


错误行:dataRow["gps_date"] = true;

错误原因:列“gps_date”不属于表 Table。


没做过winform,晕!!!

[解决办法]
前面给dt加了这么些个列。
完事又dt = SQLHelper.ExecuteDateSet(conStr, CommandType.Text, sqlStr, null).Tables[0];
那dt的列岂不是由Tables[0]决定的了。。。
[解决办法]
好像是dataRow[0]["gps_date"]
[解决办法]
你为什么不用ado.net的dataadpter来直接获取datatable呢?
你这样折腾,把用ado.net的一点点优势全搞没了。
[解决办法]
当进入Read方法体时。你断点下在这“ dataRow = dt.NewRow();

看下此时dt的结构!包含了哪些列?

热点排行