1

ページを更新した後にデータベースにデータが再挿入されるのを防ぐには、どの方法が適していますか?

行を挿入するたびにデータベースをチェックする必要がありますか、それとも viewState とセッションを使用する方が効率的ですか?

 protected void Page_Load(object sender, EventArgs e)
    {

        /* check refresh */
        if (IsPostBack == false)
        {
            Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString());
        }
        //rest of the codes
     }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        // set both session and viewstate value equal 
        ViewState["CheckRefresh"] = Session["CheckRefresh"];
    }

    protected void btnSaveTazkera_Click(object sender, EventArgs e)
    {
        if (Session["CheckRefresh"].ToString() == ViewState["CheckRefresh"].ToString())
        {
            //give a new value to session
            Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString());
    //rest of the code
    }

tnx。

4

1 に答える 1

0

セッションを使用する方が効果的ですが、100% 安全ではない可能性もあります (ページを更新せずにブラウザーを再度開いて同じ情報をもう一度入力するとどうなるでしょうか? セッションは新しく、データは 2 回挿入されます)。 .

データベースへのレコードの二重挿入を防ぎたい場合、最も簡単な方法は、それぞれの主キーを作成するか、挿入が OK かどうかをチェックするストアド プロシージャを介して挿入を行うことです。

挿入前の追加チェックとしてセッションを引き続き使用できますが、最終チェックはデータベース/データベースに挿入するコードに任せる必要があります。

しかし、これは私の意見であり、私がどのように行うかです。私は標準的なことのようなものはないと思います:-)

于 2012-11-20T09:00:31.830 に答える