嗨我有三张桌子如下

我只想获得一个学生通过的课程清单(标记> 60).
我使用了这种SQL语法
string queryString = "select c.coursename from Courses c, RegisteredIn R where R.CourseId=c.id and R.StudentId=StudentId and R.mark > 60 ";
Run Code Online (Sandbox Code Playgroud)
我这样做是为了打印出结果
System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
reader.Read();
result = string.Empty;
int counter = 1;
while (reader.Read())
{
_coursename = reader[0].ToString();
result += string.Format("{1} - Course Name : {0} </br> ",
_coursename,
counter);
counter++;
}
Response.Write(result);
reader.Close();
Run Code Online (Sandbox Code Playgroud)
结果显示
1 - Course Name : ADE
2 - Course Name : LMW
3 - Course Name : PBC
Run Code Online (Sandbox Code Playgroud)
这是正确的,但第一个值缺少结果应该是
1 - Course Name : AWM
2 - Course Name : ADE
3 - Course Name : LMW
4 - Course Name : PBC
Run Code Online (Sandbox Code Playgroud)
我无法弄明白为什么它一直在跳过第一个结果
好心提醒 ..
谢谢
Kir*_*oll 11
摆脱你的第一个电话Read:
System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
reader.Read(); // <-- Remove this
Run Code Online (Sandbox Code Playgroud)
你有你的什么while循环已经足够:
while (reader.Read()) { ... }
Run Code Online (Sandbox Code Playgroud)
(还有一个反直觉的旁注:结果集从第一个记录之前的位置开始,所以第一次调用Read实际上将光标放在第一行)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |