- 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的结构!包含了哪些列?