0

私は....のような2つのテーブルを持っています

ここで、管理者はコースと学期ごとに科目を学部に割り当てます....

1] Assign_Subjects

Faculty_Id      varchar(20)     
Course_Id       varchar(20)     
Semester        varchar(20)     
Subject_Id      varchar(20)     
Subject_Name    varchar(50)     
Time            varchar(50)

INSERT INTO Assign_Subjects Values("F1","BCA",2,"DS","Data Structure","10-11")
INSERT INTO Assign_Subjects Values("F1","BCA",2,"C","C Programming","11-12")
INSERT INTO Assign_Subjects Values("F1","BCA",1,"QB","Q Basic","1-2")
INSERT INTO Assign_Subjects Values("F2","BCA",3,"SS","System Structure","10-11")
INSERT INTO Assign_Subjects Values("F2","BCA",3,"AC","Accountancy","11-12")

ここで教員は学生のためにマークを挿入します

2] 試験結果

Result_Id           int(Auto no and PK)
Enroll_Number       varchar(50) Checked
Student_Name        varchar(100)    Checked
Course_Id           varchar(50) Checked
Semester            varchar(50) Checked
Subject_Id          varchar(50) Checked
Subject_Name        varchar(50) Checked
MarksObtained       numeric(18, 0)  Checked
Exam_Type           varchar(50) Checked

今私の質問は、シングル ボタン クリックで、割り当てられたすべての科目のマークExam_Resultに挿入する方法です。

私が欲しいものは....

FillResult.aspxでは、ここで、管理者とボタン (onClick イベント)によって割り当てられたテキストボックス (または gridview/dalalist などの他の可能な方法) を持つすべてのサブジェクト名がマークを埋める必要があります...

注: 被験者は、被験者の固定数ではなく割り当てに従って表示されます。3 つまたは 5 つ以上の場合があります。

それで、どうして私はそうすることができるのですか..... ??

グリッドビュー、編集テンプレートまたはストアド プロシージャを介して ????

すべての答えは大歓迎です.....

4

1 に答える 1

0

マークを入力する対象の正確な数がわからない場合、それを行うためのクエリをどのように生成すればよいでしょうか?

それでも、ストアド プロシージャに SQL を配置することで、SQL インジェクション攻撃から保護することができます。

create PROCEDURE [dbo].[pr_GetAssignedSubjectsByFacultyIdAndSemester]
@FacultyID int,
@Semester nvarchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
SELECT [Faculty], [Subjects],[CreatedBy],[CreatedDate],[ModifiedBy],[ModifiedDate]
 FROM [dbo].[tblNotSure]
WHERE [FacultyID] = @FacultyID
AND [Semester] = @Semester
AND [IsDeleted] = 0
END

次に、コードでストアド プロシージャを呼び出します。パラメータ化されたコマンドに注意してください。これにより、SQL インジェクション攻撃が防止されます。たとえば、学期の ddl/textbox に入力したとします (または FireBug を使用して要素の値を編集します) 1 UNION SELECT * FROM Master.Users - このアドホック SQL を実行すると、SQL ユーザー アカウントのリストが返されますが、パラメーター化されたコマンドを介して渡されます。問題を回避します:

public static aClassCollection GetAssignedSubjectsByFacultyIdAndSemester(int facultyId, string semester)
{
var newClassCollection = new aClassCollection();
    using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString))
    {
        using (var command = new SqlCommand("pr_GetAssignedSubjectsByFacultyIdAndSemester", connection))
        {
            try
            {
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@facultyId", facultyId);
                command.Parameters.AddWithValue("@semester", semester);
                connection.Open();
                SqlDataReader dr = command.ExecuteReader();
                while (dr.Read())
                {
                    newClassCollection.Add(new Class(){vals = dr["vals"].ToString()});
                }
            }
            catch (SqlException sqlEx)
            {
             //at the very least log the error
            }
            finally
            {
             //This isn't needed as we're using the USING statement which is deterministic                    finalisation, but I put it here (in this answer) to explain the Using...
                connection.Close();
            }
        }
    }

    return newClassCollection;
}
于 2012-05-02T06:42:43.683 に答える