IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Insérer une image directement via une requete


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Par défaut Insérer une image directement via une requete
    Bonjour,

    Je cherche à insérer dans une BDD des images que j'ai en local.

    J'ai essayé ceci que j'ai trouvé sur le net mais je suis pas sur que ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE [dbo].[Table_1](
          [SelectedImages] [image] NOT NULL,
          [Path] [ntext] NOT NULL
    )
     
    to add an image, do this:
     
    INSERT INTO [testing].[dbo].[Table_1]
               ([SelectedImages]
               ,[Path])
         VALUES
               ('D:\desktop\05022006\free_chart1.gif' ,'D:\desktop\05022006\free_chart1.gif' )
    En effet, est-ce qu'il interprète réellement le path correctement ? ça me semble trop simple

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Avec cette requête, vous avez stocké le chemin des fichiers, mais pas le contenu du fichier.
    Un fichier multimédia n'est pas une chaîne de caractères, donc cela ne peut pas fonctionner.
    D'autre part comme nous sommes dans un SGBDR, le moteur de celui-ci ne connaît que l'emplacement des fichiers des bases de données qu'il gère; il n'est nul besoin de lui faire connaître le reste du système de fichiers.

    Quelle version de SQL Server utilisez-vous ? Les types image et ntext sont obsolètes depuis l'introduction des types varbinary(max) et nvarchar(max) (et varchar(max)) avec SQL Server 2005, et suivants.
    Ils permettent en outre de manipuler de telles valeurs plus aisément, et le stockage de telles valeurs a été optimisé par rapport à SQL Server 2000.

    Pour réaliser ce que vous avez besoin de faire, il faut utiliser l'instruction OPENROWSET(BULK N'D:\desktop\05022006\free_chart1.gif', SINGLE_BLOB)

    @++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Par défaut
    Merci ! je teste ça demain !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Par défaut
    Mais du coup dans le VALUES je mets tout ça ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        VALUES
               (OPENROWSET(BULK N'D:\desktop\05022006\free_chart1.gif', SINGLE_BLOB) )

    Il va pas y avoir plein d'erreur?

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Au revoir la clause VALUES, bonjour SELECT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO testing.dbo.Table_1
    (
    	SelectedImages
    	,Path
    )
    SELECT	BulkColumn
    	,'D:\desktop\05022006\free_chart1.gif'
    FROM	OPENROWSET(BULK N'D:\desktop\05022006\free_chart1.gif', SINGLE_BLOB) AS I
    Ce que l'on peut transformer en procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    CREATE PROCEDURE usp_image_insert
    	@_image_path nvarchar(1024)
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	DECLARE @sql nvarchar(2048)
    		, @cr nchar(2) = NCHAR(13) + NCHAR(10)
     
    	SET @sql = 'SELECT	BulkColumn' + @cr
    			+ '	, ''' + @_image_path + '''' + @cr
    			+ 'FROM	OPENROWSET(BULK N''' + @_image_path + ''', SINGLE_BLOB) AS I'
     
    	--PRINT @sql
     
    	INSERT INTO testing.dbo.Table_1
    	(
    		SelectedImages
    		, Path
    	)
    	EXEC sp_executesql @sql
    END
    Il suffit alors d'exécuter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC dbo.usp_image_insert 'D:\desktop\05022006\free_chart1.gif'
    Il va pas y avoir plein d'erreur?
    A priori je dirai que non, mais le seul moyen d'en être sûr, c'est de tester

    @++

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 202
    Par défaut
    Merci beaucoup pour tes précieuses informations

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/03/2014, 15h46
  2. [XL-2007] Création d'une image jpg via une Macro.
    Par djflnj dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/09/2010, 15h47
  3. Réponses: 4
    Dernier message: 19/06/2008, 15h41
  4. position dans une image (selection dans une image)
    Par kaiseresis dans le forum Images
    Réponses: 3
    Dernier message: 31/05/2008, 13h30
  5. Convertir une image jpeg en une image .ico. .
    Par sonja dans le forum Imagerie
    Réponses: 5
    Dernier message: 14/05/2007, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo