0

このグリッドビューのすべての行にグリッドビューとリンクボタンがあります。ボタンの 1 つをクリックすると、この行の 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();

値は期待どおりに返されますが、クエリに何か問題があると思います。キーワード「where」の近くの構文が正しくありませんと表示されます。誰でも問題を見ることができますか?

ありがとう

4

5 に答える 5

1

ONなしの内部結合があります

select RegisterTable.StudentID,StudentTable.Name,StudentTable.Surname from RegisterTable INNER JOIN StudentTable ON RegisterTable.studentid = StudentTable .id  where RegisterTable.StudentID=StudentTable.StudentID and RegisterTable.CourseCode=@courseCode and RegisterTable.Term=@term and RegisterTable.CourseNumber=@courseNumber
于 2013-06-05T13:24:49.400 に答える
1

ここに結合条件がありません

FROM RegisterTable INNER JOIN StudentTable

内部結合は次のようになります

from RegisterTable INNER JOIN StudentTable 
   ON RegisterTable.StudentID = StudentTable.StudentId

where句によれば、内部結合を使用せずに、デカルト積を使用するだけでクエリを作成できます。

select 
        RegisterTable.StudentID,
        StudentTable.Name,
        StudentTable.Surname 
from    RegisterTable, StudentTable 
where   RegisterTable.StudentID=StudentTable.StudentID and 
        RegisterTable.CourseCode=@courseCode and 
        RegisterTable.Term=@term and 
        RegisterTable.CourseNumber=@courseNumber
于 2013-06-05T13:24:57.577 に答える
1

クエリ構文が正しくありません。試す:

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

を に変更しWHEREONを完成させてから、残りの条件を句JOINに移動する必要があります。WHERE

于 2013-06-05T13:27:11.067 に答える