如何解决访问 DataReader 值时出错访问 SqlDataReader 中的连接表结果
更新 - 问题已解决
以防万一一次检索所有数据,使用单个SQL语句检索联接表结果,但无法访问并收到以下错误
异常详情:System.IndexOutOfRangeException:crsName
顺便说一下,任何人都请提出一种更方便的方法来处理需要显示 JOIN 结果的 GridView。 而不是这种方法 - https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.datacontrolfieldcollection.add?view=netframework-4.8
BoundField courseBF = new BoundField();
courseBF.DataField="courseName";
courseBF.HeaderText="Course Name";
//Which is stated in Microsoft Document
这是代码接收错误
string userID = (string)Session["userID"];
string sql = "SELECT courseID from gpaSem where stuID=@userID";
string temp = "";
string temp02 = "";
string[] crsID;
string[] crsName;
string[] grade;
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand(sql,con);
cmd.Parameters.AddWithValue("@userID",userID);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
temp += ("!" + dr["courseID"]);
}
crsID = temp.Split('!');
crsID = crsID.Skip(1).ToArray();//course ID get
dr.Close();
con.Close();
con.Open();
temp = "";
foreach (string crs in crsID)
{
sql = "SELECT G.grade AS grade,C.crsName AS crsName FROM gpaSem G,course C WHERE G.courseID=C.courseID AND G.courseID=@courseID";
cmd.Parameters.AddWithValue("@courseID",crs);
dr = cmd.ExecuteReader();
if(dr.Read())
{
temp += "!" + dr["crsName"];//error
temp02 += "!" + dr["grade"];
}
}
crsName = temp.Split('!');
crsName = crsName.Skip(1).ToArray();//course name get
grade = temp02.Split('!');
grade = grade.Skip(1).ToArray();//grade get
dr.Close();
con.Close();
我的观点是,我应该在 SQL 语句中显式使用 JOIN 还是我访问值的方式错误?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com(将#修改为@)