我将申请人的文本框数据存储在会话类中。我正在调用会话类并将其存储在对象中。
如何循环浏览项目并将其添加到数据库?
我可以循环并连接成一个字符串吗?我正在使用数据访问层和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中插入多个记录,并且我在应用程序变量中包含所有这些记录
谢谢!!!
答案 0 :(得分:0)
首先,不是连接参数,最好使用参数化查询,因为目前您对SQL注入攻击持开放态度。本文可以帮助您开始:http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson06.aspx
传递JobApplication对象tp SQL函数(或者如果需要以List或数组的形式收集它),您可以遍历每个记录并对其运行插入查询。从某种意义上说,这是一个性能问题,因为您不止一次地访问数据库。但如果您的申请很小,那么这不是一个重大问题。有一些方法可以使用像Dataset这样的方式一次性发送多个记录的插入内容,但这对您来说可能有点进步,所以如果您不需要查看它,那么我建议您只需循环访问JobApplicationCollection。
答案 1 :(得分:0)
一些事情:
首先,似乎JobApplication
是一个保存特定作业应用程序数据的对象。你无法对此进行迭代。您可能需要一个JobApplication列表,您的对象应用程序应该类似于
List<JobApplication> applications = new List<JobApplication>();
如果实现了Ienumerable接口,则只能通过对象使用foreach进行迭代。 (一般来说是一个对象数组或对象列表)
为了在数据库中插入数据,一旦能够迭代并构造查询,我建议构建一个包含多个值的insert语句。然后调用一次以在数据库中插入数据。请照顾SQL Injection。此外,如果您认为使用多个插入语句符合您的需要,请使用transaction