在asp.net中找不到我的查询错误

yra*_*lik 0 database asp.net gridview

我在这个gridview的每一行都有一个gridview和linkbuttons.当我单击其中一个按钮时,我会获得此行的courseName,courseCode和term列值的值.这是我的代码:

 int row = -1;
        int.TryParse(e.CommandArgument as string, out row);

        GridViewRow gdrow = instCourses.Rows[row];

        // *** Get the underlying data item - in this case a DataRow
        DataRow dr = ((DataTable)this.instCourses.DataSource).Rows[gdrow.DataItemIndex];

        // *** Retrieve our context
        string courseCode = dr["CourseCode"].ToString();
        string courseNumber = dr["CourseNumber"].ToString();
        string term = dr["Term"].ToString();
        SqlConnection con = new SqlConnection();
        con.ConnectionString = Userfunctions.GetConnectionString();
        con.Open();
        SqlCommand cmd=new SqlCommand("select RegisterTable.StudentID,StudentTable.Name,StudentTable.Surname from RegisterTable INNER JOIN StudentTable where RegisterTable.StudentID=StudentTable.StudentID and RegisterTable.CourseCode=@courseCode and RegisterTable.Term=@term and RegisterTable.CourseNumber=@courseNumber",con);
        cmd.Parameters.AddWithValue("@courseCode", courseCode);
        cmd.Parameters.AddWithValue("@courseNumber", courseNumber);
        cmd.Parameters.AddWithValue("@term", term);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        studList.DataSource = dt;
        studList.DataBind();
Run Code Online (Sandbox Code Playgroud)

这些值按照我的预期返回,但我认为我的查询有问题,它说关键字'where'附近的语法不正确.有谁能看到这个问题?

谢谢

Tim*_*ter 5

格式化您的SQL查询,您将看到问题:

select RegisterTable.StudentID,StudentTable.Name,StudentTable.Surname 
from RegisterTable INNER JOIN StudentTable 
where RegisterTable.StudentID=StudentTable.StudentID 
and RegisterTable.CourseCode=@courseCode 
and RegisterTable.Term=@term 
and RegisterTable.CourseNumber=@courseNumber
Run Code Online (Sandbox Code Playgroud)

ON加入中没有条款.

from RegisterTable INNER JOIN StudentTable 
    ON RegisterTable.StudentID=StudentTable.StudentID 
where ....
Run Code Online (Sandbox Code Playgroud)

顺便说一下,在C#中你可以使用逐字字符串文字来格式化你的sql:

string sql = @"
    SELECT registertable.studentid, 
           studenttable.name, 
           studenttable.surname 
    FROM   registertable 
           INNER JOIN studenttable 
                   ON registertable.studentid = studenttable.studentid 
    WHERE  registertable.coursecode = @courseCode 
           AND registertable.term = @term 
           AND registertable.coursenumber = @courseNumber";
Run Code Online (Sandbox Code Playgroud)

然后,更容易在sql-queries中找到错误.