0

我将申请人文本框数据存储在会话类中。我正在调用会话类并将其存储在一个对象中。

我如何遍历这些项目,并将它们添加到数据库中?

我可以循环并连接成一个字符串吗?我正在使用数据访问层和 oracle 数据库。

这是在 DAL 中插入的字符串。我没有完整的功能,因为我现在不知道要传递什么。但是,我确实有一个运行查询函数,它可以将字符串 sql 传递到其中。

public void AddJobApplication()
{
string sql = "insert into JOBQUESTIONS (JOBAPPLICATIONID, QUESTIONTEXT, TYPEID, HASCORRECTANSWER, CORRECTANSWER, ISREQUIRED) VALUES (" + JobID + ", \'" + QuestionText + "\', " + TypeID + ", " + HasCorrectAnswer + ", \'" + CorrectAnswer + "\', " + IsRequired + ")";
 RunQuery(sql);

}

这是我的课程

public class JobApplicantSession
{

    public JobApplication ApplicationSession
    {

      get {if (HttpContext.Current.Session["Application"] != null)
               return (JobApplication)HttpContext.Current.Session["Application"];
           return null; }

      set{ HttpContext.Current.Session["Application"] = value; }
    }


}

然后,我可以检索该会话并将其存储在一个对象中

JobApplicantSession _sessions = new JobApplicantSession();
JobApplication _application;
_application = new JobApplication(jobID);
_sessions.ApplicationSession = _application;   //_application holds all my saved textbox texts

JobApplication application;

var jas = new JobApplicantSession();
application = jas.ApplicationSession;   //holds all my session text

我想在表 JOBQUESTIONS 中插入多条记录,并且我在应用程序变量中有所有这些记录

谢谢!!!

4

2 回答 2

0
  1. 首先,不要连接参数,最好使用参数化查询,因为目前您对 SQL 注入攻击持开放态度。这篇文章可以让你开始:http ://www.csharp-station.com/Tutorials/AdoDotNet/Lesson06.aspx

  2. 通过 JobApplication 对象 tp SQL 函数(或者如果需要以 List 或数组的形式收集它),您可以遍历每条记录并对其运行插入查询。从您不止一次访问数据库的意义上说,这是一个性能问题。但是,如果您的应用程序很小,那么这不是主要问题。有一些方法可以使用 Dataset 之类的东西一次性发送多个记录的插入,但这对您来说目前可能有点进步,所以如果您不必查看它,那么我建议您循环浏览您的作业应用程序集合。

于 2012-04-20T05:34:40.680 回答
0

几件事:
首先,它似乎JobApplication是一个为特定工作申请保存数据的对象。您不能对此进行迭代。您可能需要一个 JobApplication 列表,并且您的对象应用程序应该类似于
List<JobApplication> applications = new List<JobApplication>();
您只能使用 foreach 遍历一个对象,如果它实现了 Ienumerable 接口。(一般来说是对象数组或对象列表)

对于在数据库中插入数据,一旦您能够迭代和构造查询,我建议您构建具有多个值的单个插入语句。然后调用一次以将数据插入数据库。请注意SQL 注入。此外,如果您认为使用多个插入语句适合您的需要,请使用事务

于 2012-04-20T05:56:28.917 回答