我希望我能为那里的某个人提出另一个简单的问题。 我目前在一个网站上工作,我有一个用户发布信息到服务器,并在发布后,他们被带到一个验证页面,告诉他们是否成功存储在.mbd表上。我对单个表执行此操作没有任何问题,但是当我想要验证存储在多个表中的信息时,我似乎遇到了问题。
这是我正在使用这个工作来发布到SINGLE表的代码
protected void Page_Load(object sender, EventArgs e)
{
txtVerifiedInfo.Text = Session["txtUserFirstName"].ToString() +
"\n" + Session["txtUserLastName"].ToString() +
"\n" + Session["txtUserName"].ToString() +
"\n" + Session["txtUserPassword"].ToString() +
// Check if the record is successfully saved in the tblUserLogin Table and prints the appropriate message in the text box txtVerifiedInfo
if (clsDataLayer.SavePersonnel(Server.MapPath("App_Data\\WSC_DB.mdb"),
Session["txtUserFirstName"].ToString(),
Session["txtUserLastName"].ToString(),
Session["txtUserName"].ToString(),
Session["txtUserPassword"].ToString(),
))
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"\nThe information was successfully saved!";
}
else
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"\nThe information was NOT saved.";
}
}
}
这是我尝试过的运气不多
if (clsDataLayer.Saveneworder(Server.MapPath("App_Data\\WSC_DB.mdb"),
Session["txtfirstName"].ToString(),
Session["txtlastName"].ToString(),
Session["txtstreetAddress"].ToString(),
Session["txtcity"].ToString(),
Session["txtzipCode"].ToString()))
&& if (clsDataLayer.Savenewitem(Server.MapPath("App_Data\\WSC_DB.mdb"),
Session["jobType"].ToString() +
Session["txtmediaContent"].ToString()))
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"\nThe Order successfully submitted!";
}
else
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"\n The order did not save, please return to the previous screen and verify all of yourr data is correct, thank you.";
}
}
}
我想象一下,我并没有那么正确地做到这一点,但希望在球场。
对此的任何帮助都会很棒。 谢谢你的时间
答案 0 :(得分:0)
为了简化,这大致就是你现在所拥有的:
var path = Server.MapPath("App_Data\\WSC_DB.mdb");
if (clsDataLayer.Saveorder(path, [order parameters]
&& clsDataLayer.Saveitem(path, [item parameters])
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"\nThe Order successfully submitted!";
}
else
{
txtVerifiedInfo.Text = txtVerifiedInfo.Text +
"\n The order did not save, please return to the previous screen and verify all of yourr data is correct, thank you.";
}
您提供的代码结构不合理,因为对Server.MapPath
进行了不必要的调用,并且调用可能更适合作为数据层类构造函数的参数的一部分。
您可能不知道的是&&
是一个快捷运算符 - 如果第一部分失败,则不会调用参数的第二部分。这是你想要的行为吗?
我怀疑你希望Saveorder
和Saveitem
一起成功或失败,作为一个交易的一部分。在这种情况下,您可能最好在数据层类中编写一个新方法来完成这一点。
我假设您的文件名中的.mdb
表示您正在使用MS Access?我不确定它是否处理事务以及SQL服务器(例如),因此如果无法保存其项目(或者您需要的任何失败行为),您可能需要编写自己的代码来删除订单。