将对象值添加到数据库

时间:2012-04-20 05:03:04

标签: c# asp.net database

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

如何循环浏览项目并将其添加到数据库?

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

这是DAL中插入的字符串。我没有完整的功能,因为我不知道在这一点上传递什么。但是,我确实有一个runquery函数,可以将字符串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中插入多个记录,并且我在应用程序变量中包含所有这些记录

谢谢!!!

2 个答案:

答案 0 :(得分:0)

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

  2. 传递JobApplication对象tp SQL函数(或者如果需要以List或数组的形式收集它),您可以遍历每个记录并对其运行插入查询。从某种意义上说,这是一个性能问题,因为您不止一次地访问数据库。但如果您的申请很小,那么这不是一个重大问题。有一些方法可以使用像Dataset这样的方式一次性发送多个记录的插入内容,但这对您来说可能有点进步,所以如果您不需要查看它,那么我建议您只需循环访问JobApplicationCollection。

答案 1 :(得分:0)

一些事情:
首先,似乎JobApplication是一个保存特定作业应用程序数据的对象。你无法对此进行迭代。您可能需要一个JobApplication列表,您的对象应用程序应该类似于 List<JobApplication> applications = new List<JobApplication>();
如果实现了Ienumerable接口,则只能通过对象使用foreach进行迭代。 (一般来说是一个对象数组或对象列表)

为了在数据库中插入数据,一旦能够迭代并构造查询,我建议构建一个包含多个值的insert语句。然后调用一次以在数据库中插入数据。请照顾SQL Injection。此外,如果您认为使用多个插入语句符合您的需要,请使用transaction