asp.net - 访问 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 还是访问值的方式错误?
解决方案
推荐阅读
- java - Java 套接字:如何知道我的 SslSocket 当前使用的是哪个版本的 TLS?
- python - 运行 EC2 Ubuntu 实例时的标头
- python - OpenCV 错误:(-215:Assertion failed) s >= 0 in function 'cv::setSize' in Face Recognition program: Python
- google-cloud-platform - Dataprep - 将数据附加到 BigQuery 表
- json - Python 3 - 从嵌套字典中的键中提取值
- c# - Swagger UI - 在不同控制器下显示端点
- python - python中的方位角计算(没有地理定位库)
- r - 根据数据框中两个不同列之间的匹配删除行
- python - 如何修复“ValueError:color kwarg 每个数据集必须有一种颜色。提供了 4 个数据集和 1 种颜色”?
- reactjs - 在目标“FBReactNativeSpec”和“Yoga”之间循环依赖;建筑可能会产生不可靠的结果