Pokročilé hledání             

HELIOS iNuvio      FAQ     Uživatelský panel    

Registrovat     Přihlásit se

    Obsah fóra> Časté dotazy> Systémové dotazy
    Verze pro tisk

Zápis obrázků do databáze

Zapisují se opakující se dotazy na řešení systémových problémů z provozu Helios Orange. Patří sem dotazy typu "Po instalaci SQL serveru se nemohu přihlásit do Heliosu." apod.

Moderátor: orange_moderator

Odeslat odpověď
Příspěvků: 2 • Stránka 1 z 1
  • Odpovědět s citací

Zápis obrázků do databáze

Příspěvekod jan.novotny v 10.01.2007 16:58

Obrázek je uložen v databázi (např. ve sloupci TabKmenZbozi.Obrazek) tak, jako soubor na disku (tedy není nijak překonvertováván).

Ukládat obrázky do databáze (hromadně) lze pomocí utility textcopy.exe. Skriptem principielně takto:

DECLARE @ID INT,@e VARCHAR(8000)

SET @e='C:\Cesta\Obrazek.bmp'
SET @ID=123

UPDATE TabKmenZbozi SET Obrazek=0x WHERE ID=@ID

SET @e='textcopy.exe /S /U /P /D '+DB_NAME()+' /T TabKmenZbozi /C Obrazek /W "WHERE ID='+CAST(@ID AS VARCHAR)+'" /F "'+@e+'" /I'

EXEC master.dbo.xp_cmdshell @e
jan.novotny
 
Příspěvky: 74
Registrován: 03.10.2006 09:07
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

Doplněk - Zápis obrázků do databáze

Příspěvekod jiri.dolezal v 06.02.2007 11:36

Je třeba zdůraznit, aby se nezapomělo na:

Kód: Vybrat vše
UPDATE {něco} SET Obrazek=0x WHERE ID=@ID


nebo

Kód: Vybrat vše
INSERT INTO {něco}(ID,Obrazek) VALUES(@ID,0x)


Proč je to nutno udělat? Protože když je v buňce hodnota NULL skončí provádění příkazu TEXTCOPY chybou (ERROR: Text or image pointer and timestamp retrieval failed.).

Dále doporučuji mít v proceduře nějakou kontrolu na chybovost. A dopadne li provádění xp_cmdshell chybou, vrátit hodnotu Obrzaku zpět na NULL. Něco jako:

Kód: Vybrat vše
SET @e='textcopy.exe /S /Uheliosext /P /D '+DB_NAME()+' /T TabKmenZbozi /C Obrazek /W \"WHERE ID='+CAST(@ID AS VARCHAR)+'\" /F @Cesta+'\" /I'
 EXEC @Error = master.dbo.xp_cmdshell @e
 IF @Error <> 0
   UPDATE {něco} SET Obrazek=NULL WHERE ID=@ID
jiri.dolezal
 
Nahoru


Odeslat odpověď
Příspěvků: 2 • Stránka 1 z 1

Zpět na Systémové dotazy

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

         
  • Tým • Smazat všechny cookies z fóra • Všechny časy jsou v UTC + 1 hodina
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Český překlad – phpBB.cz

© copyright 2024 Asseco Solutions, a.s.