验证如果记录发布到多个表

时间:2013-06-20 22:16:40

标签: asp.net c#

我希望我能为那里的某个人提出另一个简单的问题。 我目前在一个网站上工作,我有一个用户发布信息到服务器,并在发布后,他们被带到一个验证页面,告诉他们是否成功存储在.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.";
    }
}   

}

我想象一下,我并没有那么正确地做到这一点,但希望在球场。

对此的任何帮助都会很棒。 谢谢你的时间

1 个答案:

答案 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进行了不必要的调用,并且调用可能更适合作为数据层类构造函数的参数的一部分。

您可能不知道的是&&是一个快捷运算符 - 如果第一部分失败,则不会调用参数的第二部分。这是你想要的行为吗?

我怀疑你希望SaveorderSaveitem一起成功或失败,作为一个交易的一部分。在这种情况下,您可能最好在数据层类中编写一个新方法来完成这一点。

我假设您的文件名中的.mdb表示您正在使用MS Access?我不确定它是否处理事务以及SQL服务器(例如),因此如果无法保存其项目(或者您需要的任何失败行为),您可能需要编写自己的代码来删除订单。