我有一個存儲過程的數據表。我想添加一個名爲「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