2016-09-22 102 views
2

我有一個兩張桌子,一張帶有所有圖片(叫做billeder,它的丹麥語),它們有外鍵(在我的代碼中稱爲「專輯」),它告訴巫婆專輯它屬於,然後我有專輯,與主鍵(alb_id)。所以我可以評估特定專輯中的圖片。如何刪除具有相同相冊ID的所有圖像文件?

我知道如何刪除表中和服務器上的文件夾中的圖片。這工作正常。

但我需要知道如何一次刪除文件夾中的所有圖片。

我有這個至今:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ToString()); 

    SqlCommand cmd = new SqlCommand(); 

    cmd.Connection = conn; 


    cmd.CommandText = "DELETE FROM albums WHERE alb_id = @id"; 
    cmd.Parameters.AddWithValue("@id", id); 

    conn.Open(); // Open the connection 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 

    cmd.CommandText = "DELETE FROM billeder WHERE album = @id"; 
    cmd.Parameters.AddWithValue("@id", id); 

    conn.Open(); // Open the connection 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 

代碼中,我有刪除文件:

File.Delete(Server.MapPath("../fotos/" + image)); 
+0

'但我需要知道如何一次性刪除文件夾中的所有圖片,爲什麼?刪除他們一個接一個...... –

+0

這對使用我的頁面的用戶不是很友好:)我希望有一個解決方案, –

+1

@SeanCox - 她正在使用參數化的SQL命令。 SQL注入不應該是一個擔心。但是,她應該使用'using'語句來封裝她的連接和命令以防止內存和性能問題。 – Icemanind

回答

1

鑑於你在billeder表圖片的路徑,你可以查詢他們你從表中刪除的行之前:

cmd.CommandText = "select imagePath FROM billeder WHERE album = @id"; 
var result = cmd.ExecuteQuery(); 

然後遍歷結果集依次刪除每個圖像:

foreach (var image in result) // assuming the result set is a list of strings 
{ 
    File.Delete(Server.MapPath("../fotos/" + image)); 
} 

更好的解決方案是將圖像放入每個相冊的文件夾中(或者使用相冊ID,或者更好的方法是將GUID作爲文件夾的名稱,然後您可以用一次調用刪除該文件夾。

+0

謝謝,我想我會製作文件夾,但這仍然很好地知道我的想法。再次感謝。 –

0

編輯:更新我的關於如何創建每張專輯目錄並刪除它的答案,請注意:albumId必須是唯一的

創建每個相冊的目錄

var path = Server.MapPath("../fotos/") + albumId; 

CreateDirectory(path); 

刪除相冊目錄

Directory.Delete(path , true); 
+1

您確定該文件夾僅包含**該相冊的文件嗎? –

+0

從O,P「但我需要知道如何一次刪除文件夾中的所有圖片。」 –

+1

但是我仍然把它看作是*「一次刪除文件夾中的所有圖片(*)」* –

相關問題