SQL语法和缺失值

ari*_*rin 0 c# sql asp.net

嗨我有三张桌子如下

在此输入图像描述

我只想获得一个学生通过的课程清单(标记> 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实际上将光标放在第一行)