Avatar billede netro Nybegynder
20. november 2006 - 09:12 Der er 11 kommentarer og
1 løsning

Arkitektur - implementering af metode til at slette fra db/mappe

Jeg har en række gallerier, som hver har tilknyttet X antal billeder. Billedfilerne ligger i serverens filsystem og er navngivet med deres id i databasen.

Ikke så meget nyt under solen dér, men jeg kan ikke helt finde ud af, hvordan jeg skal håndtere det, hvis et helt galleri (med evt. underliggende gallerier) skal slettes. Hertil er der jo mange tilhørende billeder. På databaseniveau er det nemt nok, men hvordan får jeg fjernet de relaterede billedfiler fra mappen i samme hug (søger en pæn måde at implementere det på)?
Avatar billede arne_v Ekspert
20. november 2006 - 13:28 #1
det var jo nemmere med billeder i DB ...

:-)

et program med en query, en løkke og slet kommandoer
Avatar billede netro Nybegynder
20. november 2006 - 19:55 #2
Enig, meget nemmere at smide dem i basen, men jeg synes det bliver lidt voldsomt.

Jeg kunne måske køre en rutine en gang i mellem, der rydder op i mappen og sletter alle de billeder, der ikke er present i basen. Som sådan ødelægger det jo ikke noget, at de ligger i mappen efter at være slettet fra basen.

Hvor ville du have den løkke henne? I metoden i datalaget der sletter et galleri?
Avatar billede arne_v Ekspert
20. november 2006 - 21:08 #3
ja

jeg vil mene at hvorvidt billederne ligger som filer eller i databasen
er en data lags implementations ting og boer indkapsles
Avatar billede netro Nybegynder
20. november 2006 - 21:33 #4
Lyder fornuftigt. Nu er det bare lige umiddelbart lidt svært at køre denne løkke, da jeg kalder en større SP, som sletter galleriet og eventuelle underliggende gallerier, samt de billeder der hører til hvert af gallerierne. Kunne jeg på en eller anden måde lade min SP returnere et recordset, der indeholder id på alle billeder, der lige er slettet? I så fald ville det være rimelig nemt at loope dette sæt i gennem og slette dem fra mappen. Eller har du bedre forslag?
Avatar billede arne_v Ekspert
20. november 2006 - 22:34 #5
en SP kan returnere baade et eller flere result sets

hvilken database version ?
Avatar billede netro Nybegynder
20. november 2006 - 22:40 #6
Jo, det er sql server 2005.
Avatar billede arne_v Ekspert
21. november 2006 - 00:28 #7
så kan du jo lave en SP i C# som du kalde fra dine normale SP lavet i TSQL

og den kunne så slette filer

det er et alternativ til at returnere et result set
Avatar billede netro Nybegynder
21. november 2006 - 15:40 #8
Det har jeg vist aldrig prøvet. Vil du give et eksempel på det?
Avatar billede arne_v Ekspert
22. november 2006 - 01:11 #9
kode:

using System;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Data.SqlClient;

using Microsoft.SqlServer.Server;

namespace E
{
    public class DemoSP
    {
        public static void ShowT1()
        {
            SqlPipe sp = SqlContext.Pipe;
            SqlConnection con = new SqlConnection("Context Connection=true");
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM T1", con);
            SqlDataReader rdr = cmd.ExecuteReader();
            sp.Send(rdr);
            rdr.Close();
            con.Close();
            sp.Send("Done"); 
        }
    }
}

setup:

CREATE ASSEMBLY DemoSP FROM 'C:\DemoSP.dll' WITH PERMISSION_SET = SAFE
GO
CREATE PROCEDURE ShowT1
AS
EXTERNAL NAME DemoSP.[E.DemoSP].ShowT1
GO

Der er vist direkte support i Visual Studio for det.

Den her SP laver så faktisk noget i databasen. Din SP skal bare slette
en eller flere eksterne filer.
Avatar billede arne_v Ekspert
22. november 2006 - 01:12 #10
og ja du kan selvfølgelig godt angive argumenter
Avatar billede netro Nybegynder
22. november 2006 - 11:13 #11
Det ser interessant ud. Du må gerne lægge svar.
Avatar billede arne_v Ekspert
22. november 2006 - 13:38 #12
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester