簡體   English   中英

ASP.net C#SQL。 如果表中存在記錄組合,請刪除記錄

[英]ASP.net c# SQL. If record combination exists in table, delete the records

我在圖片詳細信息頁面上有一個按鈕,允許用戶將所述圖片添加到當前有效的“收藏夾”中,我只需選擇當前的querystring ID作為圖片id ,並選擇session["bruger_id"]作為用戶Id並插入將其放入名為"favoritter"的表中

我該怎么做:

protected void Button_favorit_Click(object sender, EventArgs e)
{
    if (Session["bruger_id"] != null)
    {


        SqlConnection conn = new SqlConnection();
        conn.ConnectionString =
            ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ToString();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        int nID = int.Parse(Request.QueryString["ID"].ToString());

        cmd.CommandText =
            "INSERT INTO Favoritter"
            + "(FK_bruger_id, FK_billede_id) VALUES (@fk_bruger_id, @FK_billede_id)";

        cmd.Parameters.Add("@FK_billede_id", SqlDbType.Int).Value = nID;
        cmd.Parameters.Add("@FK_bruger_id", SqlDbType.Int).Value = Session["bruger_id"];


        conn.Open();
        cmd.ExecuteNonQuery();



        conn.Close();

        Label_favorit.Text = "Billedet blev tilføjet til Favoritter.";

    }
    else
    {
        Label_favorit.Text = "Logind for at tilføje som favorit";
    }
}

所以我的問題是:如果用戶已經將圖像添加到收藏夾中,那么他當前可以一次又一次地添加該圖像,並且多次將同一張圖像添加到收藏夾中,這不好。 所以如果fk_user_id已經收藏了FK_image_id ,我希望按鈕說“從收藏夾中刪除”

但是我不知道如何檢查fk_user_idfk_image_id的組合fk_image_id已經存在。 如果是這樣,則應該DELETE FROM而不是INSERT INTO

cmd.CommandText = "SELECT Id FROM Favoritter WHERE (FK_user_id = @fk_user_id and FK_image_id = @fk_image_id)";
...
var reader = cmd.ExecuteReader();

然后檢查返回的數據。

對userid和imageid的組合執行選擇查詢。 如果返回了任何內容,請將其刪除(如果不存在組合,則使用返回的記錄id-將為null),然后輸入新記錄。

我認為從邏輯上刪除記錄可能也會有所幫助,但這將需要更改結構...

您可以在一個查詢中完成此任務。 命令文本將如下所示:

cmd.CommandText =
          "IF NOT EXISTS (SELECT * FROM Favoritter"
        + "WHERE FK_bruger_id = @fk_bruger_id AND FK_billede_id = @FK_billede_id)"
        + "BEGIN"
        + "INSERT INTO Favoritter"
        + "(FK_bruger_id, FK_billede_id) VALUES (@fk_bruger_id, @FK_billede_id)";
        + "END"
    cmd.Parameters.Add("@FK_billede_id", SqlDbType.Int).Value = nID;
    cmd.Parameters.Add("@FK_bruger_id", SqlDbType.Int).Value = Session["bruger_id"];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM