我有一个存储过程的数据表。我想添加一个名为“Assessment”的列,它将从sql查询中填充。最后,我想用这个数据表填充一个商店。在Visual Studio中我看到,包含 “SITEID” 的数据表中的列被命名为7。但我收到此错误:C#从数据库添加数据表中的列
Load failed:Column '7' does not belong to table .
,代码:
DAL.DBDataContext dc = new DAL.DBDataContext();
try
{
SqlConnection sqlConnection1 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
SqlDataReader sqlreader;
cmd.CommandText = "StorProc";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@CTid", ctid));
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
sqlreader = cmd.ExecuteReader();
var dt = new DataTable();
dt.Load(sqlreader);
//Add assessment column
dt.Columns.Add("Assessment", typeof(System.String));
var data = new List<object>();
foreach (DataRow r in dt.Rows)
{
if (r[7] != null)
{
var res = (from d in dc.Doctors
join ct in dc.CTUsers on d.id equals ct.DoctorId
where ct.CTid == ctid && ct.SiteId == Int32.Parse(r["7"].ToString())
select d).FirstOrDefault();
r["Assessment"] = res.Assessment;
}
data.Add(r);
}
this.storeSites.DataSource = dt;
this.storeSites.DataBind();
sqlConnection1.Close();
}
catch (Exception a)
{
X.Msg.Alert("Warning", "Load failed:" + a.Message).Show();
}
r [6]或r [8]是否有效?似乎很奇怪,列名是'7'。 – pookie
如果我在sql服务器中运行存储过程,那么列名称就像“id”等。但是,如果我在Visual Studio中打开ItemArray,我只能看到数字。检查上传的照片 – atroul
本质上,'Int32.Parse(r [“7”]。ToString()'是你的问题,我相信 – pookie