【问题标题】:insert muliple records on single click on button dynamically单击按钮动态插入多条记录
【发布时间】:2012-05-02 04:38:30
【问题描述】:

我有 2 张桌子,例如....

这里管理员根据课程和学期将科目分配给院系......

1] 分配_主题

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 中,我希望所有主题名称带有由管理员分配的文本框(或任何其他可能的方式,如 gridview/dalalist 等)和按钮(onClick 事件) 填满标记...

注意:主题显示为分配不固定的主题数量,可能是 3 个或 5 个或更多

所以,我怎么可能这样做.....?

通过gridview,编辑模板或存储过程????

欢迎所有的回答.....

【问题讨论】:

  • 请注意Little Bobby Tables
  • @UweKeim 搞笑,mack28 你应该查找 SQL 注入 - 使用带有参数化命令的存储过程..
  • Uwe Keim:很好...,Jeremy Thompson:你能给我一个示例查询或程序,以便我了解如何实现它吗??? ty

标签: c# asp.net sql-server-2005 stored-procedures


【解决方案1】:

如果您不知道要输入分数的确切科目数量 - 我们应该如何生成查询来做到这一点?

向您展示如何保护您免受 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/文本框中键入(或使用 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;
}

【讨论】:

  • 感谢 jeremy Thompson,它仅用于根据教员 ID 和学期检索科目....**但我的问题是根据分配给选定学生的 Enroll_Number 的科目将分数插入到 Exam_Result 表中**。 ..我想创建结果或标记表这样做..怎么可能通过单击
  • 您可能需要做的是 INSERT INTO Exam_Results (SELECT * FROM aTempTable),或者如果这不起作用,请创建光标并循环遍历插入标记的教师/学期记录。让我们更容易回答,向我们展示您拥有的可多次点击的 SQL,您希望一次点击即可使用吗?
  • Jeremy Thompson - 我在这里定义了我的问题非常有必要和直截了当...请看我的这个链接:stackoverflow.com/q/10425871/1357042
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多